diff --git a/.travis.yml b/.travis.yml index b6d99abb5..7d61255ed 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,10 @@ language: c before_install: - - pwd + # Travis runs a detached head. We need to find the current branch + - git checkout `git branch --contains HEAD | grep -v '*'` + # Also tags for the root(s) of the minor version(s) + - git fetch origin --tags - mkdir ~/bin - wget https://bootstrap.pypa.io/get-pip.py - wget https://bintray.com/artifact/download/olikraus/u8glib/u8glib_arduino_v1.17.zip @@ -17,7 +20,7 @@ install: before_script: # copy TMC and L6470 libraries to arduino dir, as conditional includes do not work in .ino files - sudo cp -r ArduinoAddons/Arduino_1.x.x/libraries/ /usr/share/arduino - # add U8glib, LiquidCrystal_I2C & LiquidTWI2 libraries + # 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 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/boards.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/boards.txt new file mode 100644 index 000000000..e1e1a7a32 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/boards.txt @@ -0,0 +1,284 @@ +# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification +# See: http://code.google.com/p/arduino/wiki/Platforms + +############################################################## + +menu.cpu=Processor + +######################################## +## Arduino Mega or Mega 2560 +######################################## + +mega.name=Arduino Mega or Mega 2560 + +mega.vid.0=0x2341 +mega.pid.0=0x0010 +mega.vid.1=0x2341 +mega.pid.1=0x0042 +mega.vid.2=0x2A03 +mega.pid.2=0x0010 +mega.vid.3=0x2A03 +mega.pid.3=0x0042 + +mega.upload.tool=avrdude +mega.upload.maximum_data_size=8192 + +mega.bootloader.tool=avrdude +mega.bootloader.low_fuses=0xFF +mega.bootloader.unlock_bits=0x3F +mega.bootloader.lock_bits=0x0F + +mega.build.f_cpu=16000000L +mega.build.core=arduino +mega.build.variant=mega +# default board may be overridden by the cpu menu +mega.build.board=AVR_MEGA2560 +mega.build.mcu=atmega2560 + +## Arduino Mega w/ ATmega2560 +## ------------------------- +mega.menu.cpu.atmega2560=ATmega2560 (Mega 2560) + +mega.menu.cpu.atmega2560.upload.protocol=wiring +mega.menu.cpu.atmega2560.upload.maximum_size=253952 +mega.menu.cpu.atmega2560.upload.speed=115200 + +mega.menu.cpu.atmega2560.bootloader.high_fuses=0xD8 +mega.menu.cpu.atmega2560.bootloader.extended_fuses=0xFD +mega.menu.cpu.atmega2560.bootloader.file=stk500v2/stk500boot_v2_mega2560.hex + +mega.menu.cpu.atmega2560.build.mcu=atmega2560 +mega.menu.cpu.atmega2560.build.board=AVR_MEGA2560 + +## Arduino Mega w/ ATmega1280 +## ------------------------- +mega.menu.cpu.atmega1280=ATmega1280 + +mega.menu.cpu.atmega1280.upload.protocol=arduino +mega.menu.cpu.atmega1280.upload.maximum_size=126976 +mega.menu.cpu.atmega1280.upload.speed=57600 + +mega.menu.cpu.atmega1280.bootloader.high_fuses=0xDA +mega.menu.cpu.atmega1280.bootloader.extended_fuses=0xF5 +mega.menu.cpu.atmega1280.bootloader.file=atmega/ATmegaBOOT_168_atmega1280.hex + +mega.menu.cpu.atmega1280.build.mcu=atmega1280 +mega.menu.cpu.atmega1280.build.board=AVR_MEGA + +######################################## +## 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 + +######################################## +## Brainwave +######################################## +Brainwave.name=Brainwave + +Brainwave.bootloader.tool=avrdude +Brainwave.bootloader.low_fuses=0xFF +Brainwave.bootloader.high_fuses=0x99 +Brainwave.bootloader.extended_fuses=0xF0 +Brainwave.bootloader.unlock_bits=0x3F +Brainwave.bootloader.lock_bits=0x02F +Brainwave.bootloader.path=brainwave +Brainwave.bootloader.file=Brainwave-646-LUFA.hex + +Brainwave.upload.tool=avrdude +Brainwave.upload.protocol=avr109 +Brainwave.upload.maximum_size=61440 +Brainwave.upload.speed=115200 +Brainwave.upload.disable_flushing=true + +Brainwave.build.mcu=at90usb646 +Brainwave.build.f_cpu=16000000L +Brainwave.build.board=AVR_BRAINWAVE +Brainwave.build.core=at90usb +Brainwave.build.dependency=true +Brainwave.build.variant=brainwave +Brainwave.build.vid=0x16D0 +Brainwave.build.pid=0x076B + +######################################## +## BrainwavePro (CDC) +######################################## +BrainwavePro.name=Brainwave Pro (CDC) + +BrainwavePro.bootloader.tool=avrdude +BrainwavePro.bootloader.low_fuses=0xFF +BrainwavePro.bootloader.high_fuses=0x9B +BrainwavePro.bootloader.extended_fuses=0xF0 +BrainwavePro.bootloader.unlock_bits=0x3F +BrainwavePro.bootloader.lock_bits=0x02F +BrainwavePro.bootloader.path=at90usb +BrainwavePro.bootloader.file=BrainwavePro-1286-LUFA.hex + +BrainwavePro.upload.tool=avrdude +BrainwavePro.upload.protocol=avr109 +BrainwavePro.upload.maximum_size=126976 +BrainwavePro.upload.speed=115200 +BrainwavePro.upload.disable_flushing=true + +BrainwavePro.build.mcu=at90usb1286 +BrainwavePro.build.f_cpu=16000000L +BrainwavePro.build.board=AVR_BRAINWAVEPRO +BrainwavePro.build.core=at90usb +BrainwavePro.build.dependency=true +BrainwavePro.build.variant=at90usb +BrainwavePro.build.vid=0x16D0 +BrainwavePro.build.pid=0x076B +BrainwavePro.build.extra_flags=-DAT90USBxx_TEENSYPP_ASSIGNMENTS -DUSB_VID={build.vid} -DUSB_PID={build.pid} + +######################################## +## KosselPro -- BrainwavePro with HID boot +######################################## +KosselPro.name=Kossel Pro (HID Bootloader) + +KosselPro.bootloader.tool=avrdude +KosselPro.bootloader.low_fuses=0xFF +KosselPro.bootloader.high_fuses=0x9B +KosselPro.bootloader.extended_fuses=0xF0 +KosselPro.bootloader.unlock_bits=0x3F +KosselPro.bootloader.lock_bits=0x02F +KosselPro.bootloader.path=at90usb +KosselPro.bootloader.file=BootloaderHID.hex + +KosselPro.upload.tool=hidloader +KosselPro.upload.protocol=halfkay +KosselPro.upload.maximum_size=126976 +KosselPro.upload.maximum_ram_size=8192 +KosselPro.upload.speed=115200 +KosselPro.upload.disable_flushing=true + +KosselPro.build.mcu=at90usb1286 +KosselPro.build.f_cpu=16000000L +KosselPro.build.board=AVR_BRAINWAVEPRO +KosselPro.build.core=at90usb +KosselPro.build.dependency=true +KosselPro.build.variant=at90usb +KosselPro.build.vid=0x16D0 +KosselPro.build.pid=0x076B +KosselPro.build.extra_flags=-DAT90USBxx_TEENSYPP_ASSIGNMENTS -DUSB_VID={build.vid} -DUSB_PID={build.pid} + +######################################## +## SAVMkI (CDC) +######################################## +SAVMkI.name=SAV MkI (CDC) + +SAVMkI.bootloader.tool=avrdude +SAVMkI.bootloader.low_fuses=0xDE +SAVMkI.bootloader.high_fuses=0xDB +SAVMkI.bootloader.extended_fuses=0xF1 +SAVMkI.bootloader.unlock_bits=0x3F +SAVMkI.bootloader.lock_bits=0x02F +SAVMkI.bootloader.path=SAVMkI +SAVMkI.bootloader.file=SAVMkI-1286-LUFA.hex + +SAVMkI.upload.tool=avrdude +SAVMkI.upload.protocol=avr109 +SAVMkI.upload.maximum_size=126976 +SAVMkI.upload.speed=115200 +SAVMkI.upload.disable_flushing=true + +SAVMkI.build.mcu=at90usb1286 +SAVMkI.build.f_cpu=16000000L +SAVMkI.build.board=AVR_SAVMkI +SAVMkI.build.core=at90usb +SAVMkI.build.dependency=true +SAVMkI.build.variant=at90usb +SAVMkI.build.vid=0x16D0 +SAVMkI.build.pid=0x076B +SAVMkI.build.extra_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} + +######################################## +## SAVMkI (HID) +######################################## +SAVMkI_HID.name=SAV MkI (HID Bootloader) + +SAVMkI_HID.bootloader.tool=avrdude +SAVMkI_HID.bootloader.low_fuses=0xDE +SAVMkI_HID.bootloader.high_fuses=0xDB +SAVMkI_HID.bootloader.extended_fuses=0xF1 +SAVMkI_HID.bootloader.unlock_bits=0x3F +SAVMkI_HID.bootloader.lock_bits=0x02F +SAVMkI_HID.bootloader.path=SAVMkI +SAVMkI_HID.bootloader.file=SAVMkI_HID.hex + +SAVMkI_HID.upload.tool=hidloader +SAVMkI_HID.upload.protocol=halfkay +SAVMkI_HID.upload.maximum_size=126976 +SAVMkI_HID.upload.maximum_ram_size=8192 +SAVMkI_HID.upload.speed=115200 +SAVMkI_HID.upload.disable_flushing=true + +SAVMkI_HID.build.mcu=at90usb1286 +SAVMkI_HID.build.f_cpu=16000000L +SAVMkI_HID.build.board=AVR_SAVMkI +SAVMkI_HID.build.core=at90usb +SAVMkI_HID.build.dependency=true +SAVMkI_HID.build.variant=at90usb +SAVMkI_HID.build.vid=0x16D0 +SAVMkI_HID.build.pid=0x076B +SAVMkI_HID.build.extra_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/BootloaderHID.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/BootloaderHID.hex new file mode 100644 index 000000000..31134c84e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/BootloaderHID.hex @@ -0,0 +1,139 @@ +:020000021000EC +:10F000004BC0000077C0000075C0000073C0000056 +:10F0100071C000006FC000006DC000006BC0000038 +:10F0200069C0000067C0000028C2000063C0000083 +:10F0300061C000005FC000005DC000005BC0000058 +:10F0400059C0000057C0000055C0000053C0000068 +:10F0500051C000004FC000004DC000004BC0000078 +:10F0600049C0000047C0000045C0000043C0000088 +:10F0700041C000003FC000003DC000003BC0000098 +:10F0800039C0000037C0000035C0000033C00000A8 +:10F0900031C000002FC0000011241FBECFEFD0E20E +:10F0A000DEBFCDBF04B603FE0EC080915401909127 +:10F0B000550182349C4D39F410925501109254013F +:10F0C000E0E0F0E0099511E0A0E0B1E0E8E2F8EF5F +:10F0D00001E00BBF02C007900D92AA34B107D9F727 +:10F0E00021E0AAE4B1E001C01D92A435B207E1F726 +:10F0F00002D098C385CF84B7877F84BF88E10FB6DD +:10F10000F89480936000109260000FBE81E085BF8C +:10F1100082E085BF97D1789480910001882311F017 +:10F1200066D3FACF8091E00081608093E00082E4B2 +:10F130009CED90935501809354012CE088E190E080 +:10F140000FB6F894A895809360000FBE20936000DE +:10F15000FFCF42E361EC81E002C1CF92DF92EF92F8 +:10F16000FF921F93CF93DF9380914C018F77813271 +:10F1700009F075C080914D01893009F070C080910F +:10F18000E800877F8093E8008091E80082FFFCCF51 +:10F190009091F1008091F100492F582F60E070E0CC +:10F1A000B62FA52F942F88274F3F5F4F19F4109249 +:10F1B00000013EC023E0FC01A0935B0020935700B8 +:10F1C000E89507B600FCFDCF20E030E011E040916B +:10F1D000F2005091F300452B09F437C05091F10033 +:10F1E0004091F100C52FD42FA901440F551F6C0188 +:10F1F0007D01C40ED51EE11CF11C0E01F601E0924A +:10F200005B0010935700E89511242F5F3F4F203883 +:10F210003105E9F625E0FC01A0935B00209357003F +:10F22000E89507B600FCFDCF81E180935700E89593 +:10F230008091E8008B778093E800DF91CF911F9158 +:10F24000FF90EF90DF90CF909EC04091E8004B7709 +:10F250004093E8004091E80042FFFCCFBFCFDF9130 +:10F26000CF911F91FF90EF90DF90CF900895913054 +:10F2700049F0923061F0913279F489E090E023E135 +:10F2800031E00EC082E190E023E231E009C082E289 +:10F2900090E021E031E004C085E190E025E331E039 +:10F2A000FA01318320830895209152013091530156 +:10F2B0002617370748F06115710539F42091E800E9 +:10F2C0002E772093E80001C0B901FC0120E0611510 +:10F2D000710591F18EB38823E1F18530E1F18091E0 +:10F2E000E80083FD3AC08091E80082FF06C080916B +:10F2F000E80082FF24C080E008958091E80080FF4C +:10F30000E6CF8091F2009091F3006115710551F004 +:10F310008830910538F421912093F10061507109F2 +:10F320000196F3CF21E0089709F020E08091E800F2 +:10F330008E778093E800CBCF2111CCCFD8CF8EB37E +:10F34000882339F0853039F08091E80083FFCFCFF2 +:10F3500004C082E0089583E0089581E008958F70ED +:10F360008093E900EBEEF0E0808181608083EDEE38 +:10F37000F0E010826093EC0040838091EE00881FE3 +:10F380008827881F089580914C0187FD05C08091D2 +:10F39000E80080FF0DC010C08091E80082FD04C02D +:10F3A0008EB38111F9CF08958091E8008B7707C063 +:10F3B0008EB38111ECCF08958091E8008E77809311 +:10F3C000E80008950F931F93CF93DF9349D050D057 +:10F3D000C8EDD0E088818F778883888180688883B2 +:10F3E00088818F7D8883E7EDF0E08081806880836D +:10F3F00019BC1EBA10924A0100EE10E0F80180819B +:10F400008B7F808388818160888342E060E080E038 +:10F41000A6DFE1EEF0E080818E7F8083E2EEF0E017 +:10F42000808181608083808188608083F801808111 +:10F430008E7F8083888180618883DF91CF911F9147 +:10F440000F910895E8EDF0E080818F7E8083E7EDF5 +:10F45000F0E080818160808381E080934B01B2CFB6 +:10F46000E8EDF0E080818C7F80831092E2000895C7 +:10F470001092DA001092E10008951F920F920FB6D9 +:10F480000F9211240BB60F922F933F934F935F93DC +:10F490006F937F938F939F93AF93BF93EF93FF935C +:10F4A0008091DA0080FF1BC08091D80080FF17C0D8 +:10F4B0008091DA008E7F8093DA008091D90080FFFE +:10F4C0000BC084E189BD86E189BD09B400FEFDCF92 +:10F4D00081E08EBB8BD103C019BC1EBA87D180914D +:10F4E000E10080FF17C08091E20080FF13C080918F +:10F4F000E2008E7F8093E2008091E2008061809341 +:10F50000E2008091D80080628093D80019BC85E029 +:10F510008EBB6CD18091E10084FF2EC08091E2000F +:10F5200084FF2AC084E189BD86E189BD09B400FE5B +:10F53000FDCF8091D8008F7D8093D8008091E1002D +:10F540008F7E8093E1008091E2008F7E8093E200C5 +:10F550008091E20081608093E20080914A018823DB +:10F5600011F084E007C08091E30087FF02C083E0D0 +:10F5700001C081E08EBB3AD18091E10083FF21C0C0 +:10F580008091E20083FF1DC08091E100877F80931E +:10F59000E10082E08EBB10924A018091E1008E7FF3 +:10F5A0008093E1008091E2008E7F8093E200809161 +:10F5B000E20080618093E20042E060E080E0CFDE24 +:10F5C00015D1FF91EF91BF91AF919F918F917F9155 +:10F5D0006F915F914F913F912F910F900BBE0F90C4 +:10F5E0000FBE0F901F9018951F93CF93DF9300D0FD +:10F5F000CDB7DEB7ECE4F1E08091F100819381E0DA +:10F60000E435F807C9F7A9DD8091E80083FFDAC087 +:10F6100090914C0180914D01853009F465C030F422 +:10F62000813059F168F0833041F1CCC0883009F461 +:10F630009CC0893009F4ABC0863009F0C3C075C0E6 +:10F64000903881F0923809F0BDC0809150018F70E0 +:10F650008093E9009091EB0095FB992790F9109227 +:10F66000E90001C090E08091E800877F8093E80086 +:10F670009093F1001092F10083C0292F2D7F09F0A3 +:10F68000A1C0923009F09EC090914E01911126C008 +:10F69000209150012F7009F495C02093E9009091BA +:10F6A000EB0090FF1BC0833021F48091EB0080625F +:10F6B00013C08091EB0080618093EB0081E090E0CB +:10F6C000022E01C0880F0A94EAF78093EA00109294 +:10F6D000EA008091EB0088608093EB001092E900D3 +:10F6E0008091E800877F4FC091116CC010914E014E +:10F6F0001F778091E3008078812B8093E3008091D5 +:10F70000E800877F8093E8003EDE8091E80080FF7C +:10F71000FCCF8091E30080688093E300112311F017 +:10F7200083E001C082E08EBB4DC09058923008F05B +:10F7300049C0AE014F5F5F4F6091500180914E0113 +:10F7400090914F0194DD009709F43CC02091E800AE +:10F75000277F2093E800BC0189819A81A5DD8091F3 +:10F76000E8008B778093E8002DC0903859F58091A0 +:10F77000E800877F8093E80080914A018093F10040 +:10F780008091E8008E778093E800FDDD1BC0911129 +:10F7900019C090914E019230A8F48091E800877FC3 +:10F7A0008093E80090934A01EEDD80914A01811137 +:10F7B00004C08091E30087FF02C084E001C081E0C3 +:10F7C0008EBBC7DC8091E80083FF0AC08091E8000F +:10F7D000877F8093E8008091EB0080628093EB004C +:10F7E0000F900F90DF91CF911F9108950895CF93BF +:10F7F0008EB38823A9F08091E9008F709091EC007E +:10F8000090FF02C090E801C090E0C92FC82B109271 +:10F81000E9008091E80083FDE7DECF70C093E90046 +:08F82000CF910895F894FFCF89 +:10F8280001090222000101008032090400000103DD +:10F8380000000009211101000122150007058103BC +:10F848004000051201100100000008EB03672001C9 +:10F85800000000000106DCFF09FBA10109021500F8 +:0AF8680025FF75089602019102C009 +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-1286-LUFA.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-1286-LUFA.hex new file mode 100644 index 000000000..99f0f36b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-1286-LUFA.hex @@ -0,0 +1,247 @@ +:020000021000EC +:10F000004BC0000066C0000064C0000062C0000089 +:10F0100060C000005EC000005CC000005AC000007C +:10F0200058C0000056C00000ACC4000052C0000030 +:10F0300050C000004EC000004CC000004AC000009C +:10F0400048C0000046C0000044C0000042C00000AC +:10F0500040C000003EC000003CC000003AC00000BC +:10F0600038C0000036C0000034C0000032C00000CC +:10F0700030C000002EC000002CC000002AC00000DC +:10F0800028C0000026C0000024C0000022C00000EC +:10F0900020C000001EC0000011241FBECFEFD0E230 +:10F0A000DEBFCDBF11E0A0E0B1E0E4EAFEEF01E099 +:10F0B0000BBF02C007900D92AC38B107D9F711E031 +:10F0C000ACE8B1E001C01D92AD39B107E1F72FD333 +:10F0D000E7C696CF84E08093E9000DC08091E800F8 +:10F0E0008B778093E80003C08EB3882359F080911A +:10F0F000E80082FFF9CF8091E80085FFEFCF809193 +:10F10000F100089580E0089593E09093E9009091D4 +:10F11000E80095FD0DC09091E8009E779093E8007F +:10F1200003C09EB3992331F09091E80090FFF9CF8E +:10F130008093F100089584B7877F84BF88E10FB67C +:10F14000F89480936000109260000FBE90E080E819 +:10F150000FB6F89480936100909361000FBE81E038 +:10F1600085BF82E085BFF7C382E061EC42E079D3DE +:10F1700083E061E842E175D384E060E842E171C375 +:10F18000809196018032B1F0813239F580919501FC +:10F19000813A19F58091E800877F8093E80088E044 +:10F1A00091E067E070E0BAD58091E8008B778093BA +:10F1B000E800089580919501813279F48091E8000A +:10F1C000877F8093E80088E091E067E070E001D6F7 +:10F1D0008091E8008E778093E80008952F923F9207 +:10F1E0005F926F927F928F929F92AF92BF92CF92D7 +:10F1F000DF92EF92FF920F931F93DF93CF930F92C3 +:10F20000CDB7DEB784E08093E9008091E80082FF0B +:10F210007BC210928C015EDF182F8C3409F421C25E +:10F22000803509F41EC2843529F0853429F4109202 +:10F230000F0117C24FDF15C2843711F484E448C0B0 +:10F24000813611F489E536C28134F1F443DF382F79 +:10F25000330F20E079010027F7FC0095102FE09292 +:10F260008F01F0929001009391011093920132DF8F +:10F2700090E0880F991FAA2797FDA095BA2F8E2995 +:10F280009F29A02BB12BE5C1803711F483E512C271 +:10F29000833559F400E011E0D8018D918D0134DF00 +:10F2A000B1E007301B07C1F706C2863521F481E3C0 +:10F2B0002BDF80E3FFC1833731F482E825DF87E964 +:10F2C00023DF8EE1F7C1823631F489E51DDF81E06D +:10F2D0001BDF80E0EFC1853621F580E090E0DC01A6 +:10F2E00033E025E0FC01A0935B0030935700E895E4 +:10F2F00007B600FCFDCFFC01A0935B0020935700F4 +:10F30000E89507B600FCFDCF8F5F9E4FAF4FBF4F14 +:10F310008F3EE0EF9E07E1E0AE07E0E0BE0711F7A9 +:10F32000A0C18C3651F4D6DE809599E0E1E0F0E0A2 +:10F33000082E90935700E89594C1823719F4E1E0C4 +:10F34000F0E00EC0863419F4E0E0F0E009C08E343D +:10F3500019F4E3E0F0E004C0813539F4E2E0F0E0D4 +:10F3600089E0809357008491A5C18334A1F4E09093 +:10F370008F01F09090010091910110919201AADE0D +:10F3800090E021E00C01F70100935B00209357000F +:10F39000E895112466C18336E1F4E0908F01F09086 +:10F3A0009001009191011091920181E090E0A0E024 +:10F3B000B0E0E82AF92A0A2B1B2B8CDE90E021E032 +:10F3C0000C01F70100935B0020935700E89511248E +:10F3D00035C18D3699F480918F0190919001A09163 +:10F3E0009101B091920125E0FC01A0935B00209374 +:10F3F0005700E89507B600FCFDCF33C1823419F001 +:10F40000873609F0F7C066DEE82E64DE082F62DE7C +:10F41000982E8554823008F04CC13E2D20E0202EDD +:10F420003324222A332A173609F058C081E1809309 +:10F430005700E89510E001E04CC020918F01309119 +:10F4400090014091910150919201992D963419F5B6 +:10F45000812F90E0A0E0B0E0822B932BA42BB52B62 +:10F46000ABBFFC01879150DE112399F080918F0191 +:10F4700090919001A0919101B09192010296A11DED +:10F48000B11D80938F0190939001A0939101B0934F +:10F49000920110271BC0DA01C901B695A79597956F +:10F4A0008795E8D431DE80918F0190919001A091F1 +:10F4B0009101B09192010296A11DB11D80938F011F +:10F4C00090939001A0939101B09392010894210828 +:10F4D00031082114310409F0B0CFEDC0A0908F01A4 +:10F4E000B0909001C0909101D0909201A92DA634C6 +:10F4F00009F069C083E0F501C0925B00809357007A +:10F50000E89507B600FCFDCF5EC0B92DB63491F585 +:10F51000222361F1E0908F01F09090010091910120 +:10F5200010919201D7DD782E6624282D30E026290F +:10F5300037290901F70100935B0050925700E895C5 +:10F54000112480918F0190919001A0919101B0912F +:10F5500092010296A11DB11D80938F01909390019D +:10F56000A0939101B093920120E029C0B3DD882ED1 +:10F5700021E025C0E0908F01F09090010091910171 +:10F580001091920116950795F794E7942983A2DDCF +:10F59000682FC70177D480918F0190919001A0913D +:10F5A0009101B09192010296A11DB11D80938F012E +:10F5B00090939001A0939101B093920129810894B6 +:10F5C0002108310804C0882420E0552453942114D4 +:10F5D000310409F09ACFE92DE63409F042C085E004 +:10F5E000F501C0925B0080935700E89507B600FCD8 +:10F5F000FDCF37C0823581F480918F0190919001C9 +:10F60000A0919101B0919201ABBFFC0107911691BD +:10F61000812F7ADD802F4EC0843429F5E0908F0150 +:10F62000F09090010091910110919201169507952B +:10F63000F794E7944FDD682FC70124D480918F01A0 +:10F6400090919001A0919101B09192010296A11D1B +:10F65000B11D80938F0190939001A0939101B0937D +:10F6600092018DE027C0843611F580918F01909131 +:10F670009001A0919101B0919201B695A7959795AF +:10F680008795F8D341DD80918F0190919001A091F1 +:10F690009101B09192010296A11DB11D80938F013D +:10F6A00090939001A0939101B093920104C08B318B +:10F6B00011F08FE329DD83E08093E9009091E80069 +:10F6C0008091E8008E778093E80095FF04C010C019 +:10F6D0008EB38823C9F08091E80080FFF9CF809134 +:10F6E000E8008E778093E80003C08EB3882361F032 +:10F6F0008091E80080FFF9CF84E08093E900809159 +:10F70000E8008B778093E8000F90CF91DF911F91F5 +:10F710000F91FF90EF90DF90CF90BF90AF909F90B0 +:10F720008F907F906F905F903F902F900895EF9211 +:10F73000FF920F931F93DF93CF930F92CDB7DEB756 +:10F7400084B714BE9091600098619093600010920D +:10F75000600010928C0190E0FC01E270F07081FD7D +:10F760000BC0859194912FEF8F3F920729F0E09184 +:10F770008D01F0918E010995209A289A6F9A779AB7 +:10F780006D9A759A3B9A439AD6DC6F9A779A7894D9 +:10F7900081E010E000E0E0E0F0E0E590F49025C0CA +:10F7A00089831CDD55D30F5F8981002311F4180F65 +:10F7B000779A011709F477981F3F59F0112351F4F4 +:10F7C000813041F080918C018F5F80938C0181E0CA +:10F7D00001C08FEF90918C01923338F09FEFE916C2 +:10F7E0009FEFF90611F010920F0190910F019923EC +:10F7F000B9F68091E00081608093E0002CE088E120 +:10F8000090E00FB6F894A895809360000FBE209307 +:10F810006000FFCF923049F0933061F09130C1F039 +:10F8200020E030E080E090E017C02EE330E082E29C +:10F8300091E012C0882331F42091600130E080E62D +:10F8400091E00AC02091640130E084E691E004C0B8 +:10F8500022E130E080E191E0FA0191838083C901E7 +:10F8600008958093E900EBEEF0E080818160808371 +:10F87000EDEEF0E010826093EC0040838091EE00AA +:10F88000881F8827881F08958091950187FF11C0E0 +:10F8900003C08EB38823B1F08091E80082FFF9CFD6 +:10F8A0008091E8008B778093E80008958EB38823D9 +:10F8B00049F08091E80080FFF9CF8091E8008E77D1 +:10F8C0008093E800089550D057D08091D800982FA9 +:10F8D0009F779093D80080688093D80084E189BD99 +:10F8E00089B5826089BD09B400FEFDCF8091D80042 +:10F8F0008F7D8093D8008091D70080688093D70057 +:10F900001EBA109293018091E0008B7F8093E000FB +:10F910008091D80081608093D80080E060E042E070 +:10F92000A0DF8091E1008E7F8093E1008091E20072 +:10F9300081608093E2008091E20088608093E20021 +:10F940008091E0008E7F8093E0008091D8008061FC +:10F950008093D8000895E7EDF0E080818160808396 +:10F9600081E080939401AFCFE8EDF0E080818C7F5F +:10F9700080831092E20008951092DA001092E10064 +:10F9800008951F920F920FB60F920BB60F9211248B +:10F990002F933F934F935F936F937F938F939F9397 +:10F9A000AF93BF93EF93FF938091DA0080FF13C072 +:10F9B0008091D80080FF0FC08091DA008E7F809305 +:10F9C000DA008091D90080FF04C081E08EBBA5D110 +:10F9D00002C01EBAA2D18091E10080FF1CC08091BC +:10F9E000E20080FF18C08091E1008E7F8093E100EB +:10F9F0008091E2008E7F8093E2008091E20080613E +:10FA00008093E2008091D80080628093D80019BC76 +:10FA100085E08EBB82D18091E10084FF2DC0809172 +:10FA2000E20084FF29C084E189BD89B5826089BD77 +:10FA300009B400FEFDCF8091D8008F7D8093D8005F +:10FA40008091E1008F7E8093E1008091E2008F7EC3 +:10FA50008093E2008091E20081608093E2008091D7 +:10FA60009301882321F48091E30087FF02C084E0A2 +:10FA700001C081E08EBB51D18091E10083FF21C0A4 +:10FA80008091E20083FF1DC08091E100877F809319 +:10FA9000E10082E08EBB109293018091E1008E7FA5 +:10FAA0008093E1008091E2008E7F8093E20080915C +:10FAB000E20080618093E20080E060E042E0D1DE1D +:10FAC0002CD18091E10082FF0AC08091E20082FF88 +:10FAD00006C08091E1008B7F8093E1001ED1FF91F1 +:10FAE000EF91BF91AF919F918F917F916F915F91B6 +:10FAF0004F913F912F910F900BBE0F900FBE0F9023 +:10FB00001F9018950F931F93DF93CF9300D0CDB71D +:10FB1000DEB7E5E9F1E08091F100819381E0ED3914 +:10FB2000F807C9F78091950190919601953009F4F5 +:10FB30006BC0963040F4913061F1913070F09330A9 +:10FB400009F0D5C026C0983009F4A3C0993009F453 +:10FB5000B2C0963009F0CBC07CC0803809F4C8C070 +:10FB6000823809F0C4C08091990187708093E900C0 +:10FB70009091EB001092E9008091E800877F8093DC +:10FB8000E80081E095FF80E08093F1001092F100A1 +:10FB90008BC0882319F0823009F0A9C08F718230A0 +:10FBA00009F0A6C080919701882341F52091990121 +:10FBB000277009F49DC02093E9008091EB0080FF3D +:10FBC0001DC080919601833021F48091EB0080620A +:10FBD00013C08091EB0080618093EB0081E090E0A6 +:10FBE00002C0880F991F2A95E2F78093EA001092CD +:10FBF000EA008091EB0088608093EB001092E900AE +:10FC00008091E800877F53C0882309F070C010916D +:10FC100097011F770FB7F8948091E800877F809352 +:10FC2000E80032DE8091E80080FFFCCF112311F064 +:10FC300083E001C082E08EBB8091E3008078812B5D +:10FC40008093E3008091E30080688093E3000FBF1E +:10FC50004FC08058823008F04AC08091970190913F +:10FC6000980160919901AE014F5F5F4FD3DDBC01F8 +:10FC7000009709F43DC08091E800877F8093E800F9 +:10FC800089819A814BD08091E8008B778093E8003E +:10FC90002FC0803861F58091E800877F8093E8006D +:10FCA000809193018093F1008091E8008E7780939A +:10FCB000E800EADD1DC08823D1F4909197019230CD +:10FCC000B8F48091E800877F8093E80090939301D7 +:10FCD000DBDD80919301882321F48091E30087FF8D +:10FCE00002C084E001C081E08EBB3EDA01C048DA88 +:10FCF0008091E80083FF0AC08091EB0080628093CE +:10FD0000EB008091E800877F8093E8000F900F90D0 +:10FD1000CF91DF911F910F9108950895282F392FCA +:10FD2000F90180919B0190919C018617970718F427 +:10FD3000BC0120E035C061157105D9F78091E8005C +:10FD40008E778093E800F5CF8EB38823F1F185306C +:10FD5000C1F18091E80083FD36C08091E80082FD0A +:10FD60002AC08091E80080FF1BC08091F200909132 +:10FD7000F30006C021912093F1006150704001967C +:10FD80006115710519F088309105A0F321E08830E4 +:10FD9000910509F020E08091E8008E778093E800DB +:10FDA0006115710589F6222379F605C08EB3882383 +:10FDB00061F0853061F08091E80082FFF7CF80E04C +:10FDC000089583E0089581E0089582E0089583E036 +:10FDD00008956115710529F51FC02EB32223A1F1E5 +:10FDE000253071F12091E80023FD2CC02091E8001E +:10FDF00022FFF3CFE82FF92F07C08091F100819304 +:10FE0000CF016150704041F0CF012091F20030915C +:10FE1000F3002115310589F72091E8002B77209315 +:10FE2000E80061157105C9F605C08EB3882361F03D +:10FE3000853061F08091E80080FFF7CF80E0089581 +:10FE400083E0089581E0089582E0089583E00895B5 +:10FE50001F938EB3882361F01091E9001770109200 +:10FE6000E9008091E80083FF01C04CDE1093E900B7 +:10FE70001F910895F999FECF92BD81BDF89A9927F7 +:10FE800080B50895262FF999FECF1FBA92BD81BD86 +:10FE900020BD0FB6F894FA9AF99A0FBE019608950C +:04FEA000F894FFCF04 +:10FEA4004C55464143444300000000000000080153 +:10FEB40012011001020000089A2301000100000150 +:10FEC400000109023E000201008032090400000121 +:10FED4000202010005240010010424020405240682 +:10FEE40000010705820308000209040100020A0058 +:10FEF400000007050402100000070583021000003B +:10FF04000403090426034100560052002000430064 +:10FF140044004300200042006F006F0074006C0036 +:0CFF24006F0061006400650072000000C6 +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-CDC.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-CDC.hex new file mode 100755 index 000000000..7694b3560 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/SAVMkI/SAVMkI-CDC.hex @@ -0,0 +1,249 @@ +:020000021000EC +:10F000004BC0000066C0000064C0000062C0000089 +:10F0100060C000005EC000005CC000005AC000007C +:10F0200058C0000056C00000B9C4000052C0000023 +:10F0300050C000004EC000004CC000004AC000009C +:10F0400048C0000046C0000044C0000042C00000AC +:10F0500041C000003EC000003CC000003AC00000BB +:10F0600038C0000036C0000034C0000032C00000CC +:10F0700030C000002EC000002CC000002AC00000DC +:10F0800028C0000026C0000024C0000022C00000EC +:10F0900020C000001EC0000011241FBECFEFD0E230 +:10F0A000DEBFCDBF11E0A0E0B1E0EEEAFEEF01E08F +:10F0B0000BBF02C007900D92AC38B107D9F711E031 +:10F0C000ACE8B1E001C01D92AA39B107E1F778D0F0 +:10F0D000ECC696CF1F920F920FB60F9211240F908D +:10F0E0000FBE0F901F90189584E08093E9000DC02B +:10F0F0008091E8008B778093E80003C08EB388236B +:10F1000051F08091E80082FFF9CF8091E80085FFFF +:10F11000EFCF8091F1000895982F83E08093E9006C +:10F120008091E80085FD0DC08091E8008E77809386 +:10F13000E80003C08EB3882331F08091E80080FF9F +:10F14000F9CF9093F100089590919201892F8F77D4 +:10F15000813249F5809193018032A1F0813219F515 +:10F16000913A09F58091E800877F8093E80088E074 +:10F1700091E067E070E0C7D48091E8008B778093DE +:10F18000E8000895913279F48091E800877F8093B8 +:10F19000E80088E091E067E070E011D58091E80038 +:10F1A0008E778093E800089582E061EC42E06AD3B4 +:10F1B00083E061E842E166D384E060E842E162C353 +:10F1C0002F923F924F925F926F927F928F929F9277 +:10F1D000AF92BF92CF92DF92EF92FF920F931F9365 +:10F1E000DF93CF9300D000D0CDB7DEB784B7877F51 +:10F1F00084BF88E10FB6F89480936000109260009D +:10F200000FBE80E090E020E80FB6F89420936100F4 +:10F21000809361000FBE11E015BF82E085BFA8D3C7 +:10F2200010936F0083E080938100789479E0672EDB +:10F230008FC224E02093E9008091E80082FF87C21A +:10F2400053DF182F853419F410920F0103C0843551 +:10F2500019F44ADF8DE051C28C34E1F38035D1F3EB +:10F26000843711F484E49AC0813611F489E545C2EB +:10F270008134F1F439DF382E330C22247101002758 +:10F28000F7FC0095102FE0928C01F0928D01009315 +:10F290008E0110938F0128DF90E0880F991FAA2715 +:10F2A00097FDA095BA2F8E299F29A02BB12BF6C1CF +:10F2B000803711F483E521C2833559F400E011E071 +:10F2C000D8018D918D0128DFB1E007301B07C1F710 +:10F2D00015C2863521F481E31FDF80E30EC2833738 +:10F2E00031F482E819DF87E917DF8EE106C285363F +:10F2F00029F580E090E0A0E0B0E023E0FC01A093DD +:10F300005B0020935700E89507B600FCFDCF35E081 +:10F31000FC01A0935B0030935700E89507B600FC12 +:10F32000FDCF80509F4FAF4FBF4F803060EF9607AB +:10F3300061E0A60760E0B60701F78CCF8C3649F490 +:10F34000D3DE8095E1E0F0E0082E60925700E8956A +:10F3500081CF823731F4E1E0F0E060925700849190 +:10F36000CCC1863431F4E0E0F0E060925700849143 +:10F37000C4C18E3431F4E3E0F0E060925700849130 +:10F38000BCC1813531F4E2E0F0E060925700849135 +:10F39000B4C1823631F489E5BFDE81E0BDDE80E0B4 +:10F3A000ACC1823419F0873609F0F5C09DDE082F14 +:10F3B0009BDEF82E99DE882E8554823008F09CC1A1 +:10F3C0000A8319822F2D30E089819A81282B392BCD +:10F3D0003C832B83173609F055C091E19093570079 +:10F3E000E895DD2449C0E0908C01F0908D010091FA +:10F3F0008E0110918F01A6E48A1609F58D2D90E0FB +:10F40000A0E0B0E08E299F29A02BB12BABBFFC015F +:10F41000879182DEDD2081F082E090E0A0E0B0E024 +:10F42000E80EF91E0A1F1B1FE0928C01F0928D015D +:10F4300000938E0110938F0191E0D92618C0D80156 +:10F44000C701B695A7959795879519D565DE82E092 +:10F4500090E0A0E0B0E0E80EF91E0A1F1B1FE0924A +:10F460008C01F0928D0100938E0110938F01AB817E +:10F47000BC811197BC83AB83EB81FC81EF2B09F03E +:10F48000B2CF3CC1A0908C01B0908D01C0908E0194 +:10F49000D0908F01F6E48F1609F067C023E0F501E4 +:10F4A000C0925B0020935700E89507B600FCFDCFA3 +:10F4B0005CC036E4831681F5992049F1E0908C0117 +:10F4C000F0908D0100918E0110918F010DDE582E6C +:10F4D0004424872D90E08429952961E00C01F701EF +:10F4E00000935B0060935700E895112482E090E060 +:10F4F000A0E0B0E0E80EF91E0A1F1B1FE0928C018D +:10F50000F0928D0100938E0110938F0102C0ECDD0B +:10F51000782E91E0992623C0E0908C01F0908D0127 +:10F5200000918E0110918F0116950795F794E7943D +:10F53000DBDD682FC701ABD480918C0190918D01E8 +:10F54000A0918E01B0918F010296A11DB11D8093F3 +:10F550008C0190938D01A0938E01B0938F01AB81AC +:10F56000BC811197BC83AB8302C077249924EB81C3 +:10F57000FC81EF2B09F09DCFF6E48F1609F06ACEDF +:10F5800025E0F501C0925B0020935700E89507B68F +:10F5900000FCFDCF5FCE8334A1F4E0908C01F090AD +:10F5A0008D0100918E0110918F019EDD90E031E080 +:10F5B0000C01F70100935B0030935700E89511248C +:10F5C00049CE833639F5E0908C01F0908D010091A1 +:10F5D0008E0110918F0188DDA8019701216090E0D4 +:10F5E00061E00C01F90140935B0060935700E895DE +:10F5F000112482E090E0A0E0B0E0E80EF91E0A1FBE +:10F600001B1FE0928C01F0928D0100938E011093EC +:10F610008F0120CE8D3699F480918C0190918D01CF +:10F62000A0918E01B0918F0125E0FC01A0935B00B9 +:10F6300020935700E89507B600FCFDCF0BCE82352E +:10F6400081F4E0908C01F0908D0100918E01109179 +:10F650008F010BBFF701E790F6908F2D5DDD8E2DAA +:10F660004CC0843421F5E0908C01F0908D01009124 +:10F670008E0110918F0116950795F794E79434DD6C +:10F68000682FC70104D480918C0190918D01A091C5 +:10F690008E01B0918F010296A11DB11D80938C0146 +:10F6A00090938D01A0938E01B0938F01D3CD8436BA +:10F6B00009F5E0908C01F0908D0100918E01109180 +:10F6C0008F01D801C701B695A79597958795D7D390 +:10F6D00023DD82E090E0A0E0B0E0E80EF91E0A1F12 +:10F6E0001B1FE0928C01F0928D0100938E0110930C +:10F6F0008F0104C08B3111F08FE30EDD93E0909306 +:10F70000E9009091E8008091E8008E778093E8000E +:10F7100095FF04C010C08EB38823C9F08091E80023 +:10F7200080FFF9CF8091E8008E778093E80003C0D6 +:10F730008EB3882361F08091E80080FFF9CFA4E0C8 +:10F74000A093E9008091E8008B778093E80085D34F +:10F7500080910F01882309F06CCD8091E0008160D9 +:10F760008093E0002CE088E190E00FB6F894A89533 +:10F77000809360000FBE20936000FFCF9B01AC011F +:10F7800007B600FCFDCFF999FECF83E0F901409365 +:10F790005B0080935700E89581E180935700E895DE +:10F7A00008959B01AC0107B600FCFDCFF999FECF8F +:10F7B00085E0F90140935B0080935700E89581E173 +:10F7C00080935700E89508950F931F938B019C0138 +:10F7D00007B600FCFDCFF999FECF81E00A01F801E0 +:10F7E00020935B0080935700E89511241F910F919F +:10F7F000089521E2FC01209357002491822F08955F +:10F8000029E0FC01209357002491822F0895E1E024 +:10F81000F0E089E08093570084910895982F07B60F +:10F8200000FCFDCFF999FECF909589E0E1E0F0E092 +:10F83000092E80935700E8950895FA01923071F0EF +:10F84000933089F0913029F480E191E022E130E0B9 +:10F8500015C080E090E020E030E010C082E291E04E +:10F860002EE330E00BC0882329F480E691E024E009 +:10F8700030E004C084E691E026E230E091838083AA +:10F88000C90108958093E9008091EB008160809325 +:10F89000EB001092ED006093EC004093ED0080913E +:10F8A000EE00881F8827881F089580919201882381 +:10F8B0008CF403C08EB38823B1F08091E80082FFFE +:10F8C000F9CF8091E8008B778093E80008958EB39C +:10F8D000882349F08091E80080FFF9CF8091E8000B +:10F8E0008E778093E8000895EF92FF920F931F9315 +:10F8F00048D04FD008ED10E0F80180818F778083E9 +:10F9000080818068808380818F7D8083E7EDF0E057 +:10F9100080818068808319BC1EBA1092900180EEAD +:10F92000E82EF12CF70180818B7F8083F8018081A4 +:10F930008160808380E060E042E0A4DFE1EEF0E0FF +:10F9400080818E7F8083E2EEF0E080818160808321 +:10F95000808188608083F70180818E7F8083F801B9 +:10F960008081806180831F910F91FF90EF900895B7 +:10F97000E7EDF0E080818160808381E080939101F8 +:10F98000B3CFE8EDF0E080818C7F80831092E200BD +:10F9900008951092DA001092E10008951F920F92DC +:10F9A0000FB60F920BB60F9211242F933F934F93E4 +:10F9B0005F936F937F938F939F93AF93BF93EF93D7 +:10F9C000FF938091DA0080FF1BC08091D80080FFF8 +:10F9D00017C08091DA008E7F8093DA008091D90081 +:10F9E00080FF0BC084E189BD86E189BD09B400FEBA +:10F9F000FDCF81E08EBB30D203C019BC1EBA2CD221 +:10FA00008091E10080FF17C08091E20080FF13C069 +:10FA10008091E2008E7F8093E2008091E20080611D +:10FA20008093E2008091D80080628093D80019BC56 +:10FA300085E08EBB11D28091E10084FF2CC08091C3 +:10FA4000E20084FF28C084E189BD86E189BD09B454 +:10FA500000FEFDCF8091D8008F7D8093D8008091EB +:10FA6000E1008F7E8093E1008091E2008F7E8093A1 +:10FA7000E2008091E20081608093E2008091900139 +:10FA8000882331F48091E30087FD02C081E001C04A +:10FA900084E08EBBE1D18091E10083FF21C08091A1 +:10FAA000E20083FF1DC08091E100877F8093E10029 +:10FAB00082E08EBB109290018091E1008E7F809356 +:10FAC000E1008091E2008E7F8093E2008091E2006D +:10FAD00080618093E20080E060E042E0D3DEBCD150 +:10FAE000FF91EF91BF91AF919F918F917F916F9116 +:10FAF0005F914F913F912F910F900BBE0F900FBED2 +:10FB00000F901F9018959C01409198015091990178 +:10FB10004617570718F4F90190E03CC061157105CC +:10FB200011F0AB01F8CF8091E8008E778093E80068 +:10FB300040E050E0F0CF8EB38823E9F18530E9F161 +:10FB40008091E80083FF02C081E008958091E80081 +:10FB500082FD2BC08091E80080FF1CC02091F20044 +:10FB60003091F30007C081918093F10041505040E3 +:10FB70002F5F3F4F4115510519F02830310598F39B +:10FB800090E02830310509F491E08091E8008E770B +:10FB90008093E8004115510571F6992361F605C07F +:10FBA0008EB3882341F0853041F08091E80082FFD8 +:10FBB000F7CF80E0089582E0089583E008959C01E6 +:10FBC0006115710529F48091E8008B778093E80036 +:10FBD000F90121C08EB3882369F1853069F18091E4 +:10FBE000E80083FF02C081E008958091E80082FF71 +:10FBF000F1CF06C08091F10081936150704031F0E7 +:10FC00008091F2009091F300892BA1F78091E80098 +:10FC10008B778093E80061157105E1F605C08EB31E +:10FC2000882341F0853041F08091E80080FFF7CFD4 +:10FC300080E0089582E0089583E008950F931F9374 +:10FC4000DF93CF9300D0CDB7DEB7E2E9F1E080914A +:10FC5000F100819381E0EA39F807C9F775DA8091FC +:10FC6000E80083FFE4C08091920190919301953068 +:10FC700009F46DC0963040F4913081F1913070F00C +:10FC8000933009F0D4C02AC0983009F4A3C0993049 +:10FC900009F4B2C0963009F0CAC07CC0803809F4BB +:10FCA000C6C0823809F0C3C0809196018F708093DE +:10FCB000E9008091EB001092E9002091E800277F95 +:10FCC0002093E80090E025E0969587952A95E1F746 +:10FCD00081708093F1001092F10087C0882319F0A1 +:10FCE000823009F0A4C08F71823009F0A0C08091E9 +:10FCF0009401882331F5209196012F7009F497C063 +:10FD00002093E9008091EB0080FF1BC0933021F429 +:10FD10008091EB00806213C08091EB008061809342 +:10FD2000EB0081E090E002C0880F991F2A95E2F76E +:10FD30008093EA001092EA008091EB008860809343 +:10FD4000EB001092E9008091E800877F51C0882382 +:10FD500009F06DC0109194011F770FB7F89480914E +:10FD6000E800877F8093E800A0DD8091E80080FFB5 +:10FD7000FCCF8091E3008078812B8093E300806842 +:10FD80008093E300112311F482E001C083E08EBB75 +:10FD90000FBF4DC08058823008F049C08091940157 +:10FDA0009091950160919601AE014F5F5F4F45DDE7 +:10FDB000BC01009709F43BC08091E800877F8093E5 +:10FDC000E80089819A819FDE8091E8008B7780939B +:10FDD000E8002DC0803859F58091E800877F809336 +:10FDE000E800809190018093F1008091E8008E7787 +:10FDF0008093E8005ADD1BC08823C9F490919401D8 +:10FE00009230A8F48091E800877F8093E800909377 +:10FE100090014BDD80919001882331F48091E300C3 +:10FE200087FD02C081E001C084E08EBBBDD9809116 +:10FE3000E80083FF0AC08091EB0080628093EB00B2 +:10FE40008091E800877F8093E8000F900F90CF911A +:10FE5000DF911F910F91089508951F938EB388230A +:10FE600061F01091E9001092E9008091E80083FFB1 +:10FE700001C0E4DE1F701093E9001F910895F99905 +:10FE8000FECF92BD81BDF89A992780B50895262F9F +:10FE9000F999FECF1FBA92BD81BD20BD0FB6F8946F +:0EFEA000FA9AF99A0FBE01960895F894FFCFD2 +:10FEAE004C55464143444300000000000000080149 +:10FEBE001201100102000008EB034A2000010001AC +:10FECE00000109023E000201008032090400000117 +:10FEDE000202010005240010010424020605240676 +:10FEEE000001070582030800FF09040100020A0051 +:10FEFE00000007050402100001070583021000012F +:10FF0E00040309042603410056005200200043005A +:10FF1E0044004300200042006F006F0074006C002C +:0CFF2E006F0061006400650072000000BC +:10FFE000CDCBDFCBF1CB05CC0BCC11CC17CC0000AB +:10FFF0000000000000000000000000000000FBDC2A +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BootloaderHID.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BootloaderHID.hex new file mode 100644 index 000000000..31134c84e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BootloaderHID.hex @@ -0,0 +1,139 @@ +:020000021000EC +:10F000004BC0000077C0000075C0000073C0000056 +:10F0100071C000006FC000006DC000006BC0000038 +:10F0200069C0000067C0000028C2000063C0000083 +:10F0300061C000005FC000005DC000005BC0000058 +:10F0400059C0000057C0000055C0000053C0000068 +:10F0500051C000004FC000004DC000004BC0000078 +:10F0600049C0000047C0000045C0000043C0000088 +:10F0700041C000003FC000003DC000003BC0000098 +:10F0800039C0000037C0000035C0000033C00000A8 +:10F0900031C000002FC0000011241FBECFEFD0E20E +:10F0A000DEBFCDBF04B603FE0EC080915401909127 +:10F0B000550182349C4D39F410925501109254013F +:10F0C000E0E0F0E0099511E0A0E0B1E0E8E2F8EF5F +:10F0D00001E00BBF02C007900D92AA34B107D9F727 +:10F0E00021E0AAE4B1E001C01D92A435B207E1F726 +:10F0F00002D098C385CF84B7877F84BF88E10FB6DD +:10F10000F89480936000109260000FBE81E085BF8C +:10F1100082E085BF97D1789480910001882311F017 +:10F1200066D3FACF8091E00081608093E00082E4B2 +:10F130009CED90935501809354012CE088E190E080 +:10F140000FB6F894A895809360000FBE20936000DE +:10F15000FFCF42E361EC81E002C1CF92DF92EF92F8 +:10F16000FF921F93CF93DF9380914C018F77813271 +:10F1700009F075C080914D01893009F070C080910F +:10F18000E800877F8093E8008091E80082FFFCCF51 +:10F190009091F1008091F100492F582F60E070E0CC +:10F1A000B62FA52F942F88274F3F5F4F19F4109249 +:10F1B00000013EC023E0FC01A0935B0020935700B8 +:10F1C000E89507B600FCFDCF20E030E011E040916B +:10F1D000F2005091F300452B09F437C05091F10033 +:10F1E0004091F100C52FD42FA901440F551F6C0188 +:10F1F0007D01C40ED51EE11CF11C0E01F601E0924A +:10F200005B0010935700E89511242F5F3F4F203883 +:10F210003105E9F625E0FC01A0935B00209357003F +:10F22000E89507B600FCFDCF81E180935700E89593 +:10F230008091E8008B778093E800DF91CF911F9158 +:10F24000FF90EF90DF90CF909EC04091E8004B7709 +:10F250004093E8004091E80042FFFCCFBFCFDF9130 +:10F26000CF911F91FF90EF90DF90CF900895913054 +:10F2700049F0923061F0913279F489E090E023E135 +:10F2800031E00EC082E190E023E231E009C082E289 +:10F2900090E021E031E004C085E190E025E331E039 +:10F2A000FA01318320830895209152013091530156 +:10F2B0002617370748F06115710539F42091E800E9 +:10F2C0002E772093E80001C0B901FC0120E0611510 +:10F2D000710591F18EB38823E1F18530E1F18091E0 +:10F2E000E80083FD3AC08091E80082FF06C080916B +:10F2F000E80082FF24C080E008958091E80080FF4C +:10F30000E6CF8091F2009091F3006115710551F004 +:10F310008830910538F421912093F10061507109F2 +:10F320000196F3CF21E0089709F020E08091E800F2 +:10F330008E778093E800CBCF2111CCCFD8CF8EB37E +:10F34000882339F0853039F08091E80083FFCFCFF2 +:10F3500004C082E0089583E0089581E008958F70ED +:10F360008093E900EBEEF0E0808181608083EDEE38 +:10F37000F0E010826093EC0040838091EE00881FE3 +:10F380008827881F089580914C0187FD05C08091D2 +:10F39000E80080FF0DC010C08091E80082FD04C02D +:10F3A0008EB38111F9CF08958091E8008B7707C063 +:10F3B0008EB38111ECCF08958091E8008E77809311 +:10F3C000E80008950F931F93CF93DF9349D050D057 +:10F3D000C8EDD0E088818F778883888180688883B2 +:10F3E00088818F7D8883E7EDF0E08081806880836D +:10F3F00019BC1EBA10924A0100EE10E0F80180819B +:10F400008B7F808388818160888342E060E080E038 +:10F41000A6DFE1EEF0E080818E7F8083E2EEF0E017 +:10F42000808181608083808188608083F801808111 +:10F430008E7F8083888180618883DF91CF911F9147 +:10F440000F910895E8EDF0E080818F7E8083E7EDF5 +:10F45000F0E080818160808381E080934B01B2CFB6 +:10F46000E8EDF0E080818C7F80831092E2000895C7 +:10F470001092DA001092E10008951F920F920FB6D9 +:10F480000F9211240BB60F922F933F934F935F93DC +:10F490006F937F938F939F93AF93BF93EF93FF935C +:10F4A0008091DA0080FF1BC08091D80080FF17C0D8 +:10F4B0008091DA008E7F8093DA008091D90080FFFE +:10F4C0000BC084E189BD86E189BD09B400FEFDCF92 +:10F4D00081E08EBB8BD103C019BC1EBA87D180914D +:10F4E000E10080FF17C08091E20080FF13C080918F +:10F4F000E2008E7F8093E2008091E2008061809341 +:10F50000E2008091D80080628093D80019BC85E029 +:10F510008EBB6CD18091E10084FF2EC08091E2000F +:10F5200084FF2AC084E189BD86E189BD09B400FE5B +:10F53000FDCF8091D8008F7D8093D8008091E1002D +:10F540008F7E8093E1008091E2008F7E8093E200C5 +:10F550008091E20081608093E20080914A018823DB +:10F5600011F084E007C08091E30087FF02C083E0D0 +:10F5700001C081E08EBB3AD18091E10083FF21C0C0 +:10F580008091E20083FF1DC08091E100877F80931E +:10F59000E10082E08EBB10924A018091E1008E7FF3 +:10F5A0008093E1008091E2008E7F8093E200809161 +:10F5B000E20080618093E20042E060E080E0CFDE24 +:10F5C00015D1FF91EF91BF91AF919F918F917F9155 +:10F5D0006F915F914F913F912F910F900BBE0F90C4 +:10F5E0000FBE0F901F9018951F93CF93DF9300D0FD +:10F5F000CDB7DEB7ECE4F1E08091F100819381E0DA +:10F60000E435F807C9F7A9DD8091E80083FFDAC087 +:10F6100090914C0180914D01853009F465C030F422 +:10F62000813059F168F0833041F1CCC0883009F461 +:10F630009CC0893009F4ABC0863009F0C3C075C0E6 +:10F64000903881F0923809F0BDC0809150018F70E0 +:10F650008093E9009091EB0095FB992790F9109227 +:10F66000E90001C090E08091E800877F8093E80086 +:10F670009093F1001092F10083C0292F2D7F09F0A3 +:10F68000A1C0923009F09EC090914E01911126C008 +:10F69000209150012F7009F495C02093E9009091BA +:10F6A000EB0090FF1BC0833021F48091EB0080625F +:10F6B00013C08091EB0080618093EB0081E090E0CB +:10F6C000022E01C0880F0A94EAF78093EA00109294 +:10F6D000EA008091EB0088608093EB001092E900D3 +:10F6E0008091E800877F4FC091116CC010914E014E +:10F6F0001F778091E3008078812B8093E3008091D5 +:10F70000E800877F8093E8003EDE8091E80080FF7C +:10F71000FCCF8091E30080688093E300112311F017 +:10F7200083E001C082E08EBB4DC09058923008F05B +:10F7300049C0AE014F5F5F4F6091500180914E0113 +:10F7400090914F0194DD009709F43CC02091E800AE +:10F75000277F2093E800BC0189819A81A5DD8091F3 +:10F76000E8008B778093E8002DC0903859F58091A0 +:10F77000E800877F8093E80080914A018093F10040 +:10F780008091E8008E778093E800FDDD1BC0911129 +:10F7900019C090914E019230A8F48091E800877FC3 +:10F7A0008093E80090934A01EEDD80914A01811137 +:10F7B00004C08091E30087FF02C084E001C081E0C3 +:10F7C0008EBBC7DC8091E80083FF0AC08091E8000F +:10F7D000877F8093E8008091EB0080628093EB004C +:10F7E0000F900F90DF91CF911F9108950895CF93BF +:10F7F0008EB38823A9F08091E9008F709091EC007E +:10F8000090FF02C090E801C090E0C92FC82B109271 +:10F81000E9008091E80083FDE7DECF70C093E90046 +:08F82000CF910895F894FFCF89 +:10F8280001090222000101008032090400000103DD +:10F8380000000009211101000122150007058103BC +:10F848004000051201100100000008EB03672001C9 +:10F85800000000000106DCFF09FBA10109021500F8 +:0AF8680025FF75089602019102C009 +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/Brainwave-646-LUFA.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/Brainwave-646-LUFA.hex new file mode 100644 index 000000000..6adb77002 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/Brainwave-646-LUFA.hex @@ -0,0 +1,239 @@ +:020000021000EC +:10F000004BC0000064C0000062C0000060C000008F +:10F010005EC000005CC000005AC0000058C0000084 +:10F0200056C0000054C000006FC4000050C0000073 +:10F030004EC000004CC000004AC0000048C00000A4 +:10F0400046C0000044C0000042C0000040C00000B4 +:10F050003EC000003CC000003AC0000038C00000C4 +:10F0600036C0000034C0000032C0000030C00000D4 +:10F070002EC000002CC000002AC0000028C00000E4 +:10F0800026C0000024C0000022C0000020C00000F4 +:10F090001EC000001CC0000011241FBECFEFD0E135 +:10F0A000DEBFCDBF11E0A0E0B1E0E2E2FEEF02C0C2 +:10F0B00005900D92AC38B107D9F711E0ACE8B1E09A +:10F0C00001C01D92AD39B107E1F7FCD2A8C698CFB7 +:10F0D00084E08093E9000DC08091E8008B778093F5 +:10F0E000E80003C08EB3882359F08091E80082FFC6 +:10F0F000F9CF8091E80085FFEFCF8091F10008956E +:10F1000080E0089593E09093E9009091E80095FDE8 +:10F110000DC09091E8009E779093E80003C09EB3E5 +:10F12000992331F09091E80090FFF9CF8093F1009E +:10F13000089584B7877F84BF88E10FB6F8948093E1 +:10F140006000109260000FBE90E080E80FB6F89467 +:10F1500080936100909361000FBE81E085BF82E0E3 +:10F1600085BFBCC382E061EC42E03ED383E061E84E +:10F1700042E13AD384E060E842E136C380919601EF +:10F180008032B1F0813239F580919501813A19F5DB +:10F190008091E800877F8093E80088E091E067E055 +:10F1A00070E07BD58091E8008B778093E80008952C +:10F1B00080919501813279F48091E800877F809376 +:10F1C000E80088E091E067E070E0C2D58091E80057 +:10F1D0008E778093E80008952F923F924F925F922E +:10F1E0006F927F929F92AF92BF92CF92DF92EF92F7 +:10F1F000FF920F931F93DF93CF930F92CDB7DEB79C +:10F2000084E08093E9008091E80082FF48C2109278 +:10F210008C015EDF182F8C3409F4EEC1803509F4BF +:10F22000EBC1843529F0853429F410920F01E4C133 +:10F230004FDFE2C1843711F484E448C0813611F411 +:10F2400089E503C28134F1F443DF382F330F20E026 +:10F2500079010027F7FC0095102FE0928F01F092C2 +:10F260009001009391011093920132DF90E0880F9A +:10F27000991FAA2797FDA095BA2F8E299F29A02B09 +:10F28000B12BB2C1803711F483E5DFC1833559F466 +:10F2900000E011E0F80181918F0134DFF1E00730E7 +:10F2A0001F07C1F7D3C1863521F481E32BDF80E34B +:10F2B000CCC1833731F482E825DF86E923DF8EE194 +:10F2C000C4C1823631F489E51DDF81E01BDF80E0B7 +:10F2D000BCC18536F9F480E090E0DC0133E025E044 +:10F2E000FC0130935700E89507B600FCFDCF209352 +:10F2F0005700E89507B600FCFDCF8F5F9E4FAF4FDC +:10F30000BF4F8F3E40EF940741E0A40740E0B407B1 +:10F3100039F772C18C3651F4DBDE809599E0E1E07B +:10F32000F0E0082E90935700E89566C1823719F4F3 +:10F33000E1E0F0E00EC0863419F4E0E0F0E009C04E +:10F340008E3419F4E3E0F0E004C0813539F4E2E0F2 +:10F35000F0E089E080935700849177C1833471F4A1 +:10F3600000918F0110919001B3DE90E021E0F8014F +:10F370000C0120935700E89511243EC1833679F49F +:10F3800000918F01109190010160A2DE90E021E0D8 +:10F39000F8010C0120935700E89511241AC18D360D +:10F3A00061F4E0918F01F091900185E08093570026 +:10F3B000E89507B600FCFDCF1FC1823419F08736EF +:10F3C00009F0E9C085DEE82E83DE082F81DEB82E45 +:10F3D0008554823008F038C13E2D20E0202E3324A1 +:10F3E000222A332A173609F054C081E1809357004E +:10F3F000E89510E001E048C0FB2DF63409F5E12F57 +:10F40000F0E080918F0190919001E82BF92B84918D +:10F4100079DE112399F080918F0190919001A09154 +:10F420009101B09192010296A11DB11D80938F01AF +:10F4300090939001A0939101B0939201102721C065 +:10F4400080918F0190919001A0919101B0919201D2 +:10F45000B695A79597958795CCD454DE80918F016A +:10F4600090919001A0919101B09192010296A11DFD +:10F47000B11D80938F0190939001A0939101B0935F +:10F4800092010894210831082114310409F0B4CF05 +:10F49000DDC040908F01509090016090910170907C +:10F4A00092012B2D263409F061C083E0F201809394 +:10F4B0005700E89507B600FCFDCF58C0FB2DF63489 +:10F4C00061F5222331F1E0908F01F090900100DE90 +:10F4D000D82ECC248A2D90E08C299D29F7010C018F +:10F4E00090925700E895112480918F01909190019E +:10F4F000A0919101B09192010296A11DB11D80933E +:10F500008F0190939001A0939101B093920120E01C +:10F5100029C0DEDDA82E21E025C0E0908F01F0900B +:10F520009001009191011091920116950795F79421 +:10F53000E7942983CDDD682FC70163D480918F01C3 +:10F5400090919001A0919101B09192010296A11D1C +:10F55000B11D80938F0190939001A0939101B0937E +:10F560009201298108942108310804C0AA2420E0CE +:10F57000992493942114310409F0A0CFFB2DF63483 +:10F5800009F03AC085E0F20180935700E89507B68C +:10F5900000FCFDCF31C0823551F4E0918F01F09134 +:10F5A000900105911491812FADDD802F4EC08434E0 +:10F5B00029F5E0908F01F090900100919101109158 +:10F5C000920116950795F794E79482DD682FC7019D +:10F5D00018D480918F0190919001A0919101B091E8 +:10F5E00092010296A11DB11D80938F01909390010D +:10F5F000A0939101B09392018DE027C0843611F55C +:10F6000080918F0190919001A0919101B091920110 +:10F61000B695A79597958795ECD374DD80918F016A +:10F6200090919001A0919101B09192010296A11D3B +:10F63000B11D80938F0190939001A0939101B0939D +:10F64000920104C08B3111F08FE35CDD83E0809385 +:10F65000E9009091E8008091E8008E778093E800BF +:10F6600095FF04C010C08EB38823C9F08091E800D4 +:10F6700080FFF9CF8091E8008E778093E80003C087 +:10F680008EB3882361F08091E80080FFF9CF84E099 +:10F690008093E9008091E8008B778093E8000F90D9 +:10F6A000CF91DF911F910F91FF90EF90DF90CF905E +:10F6B000BF90AF909F907F906F905F904F903F90E2 +:10F6C0002F900895EF92FF920F931F93DF93CF93A4 +:10F6D0000F92CDB7DEB784B714BE909160009861E9 +:10F6E000909360001092600010928C0190E0FC01F9 +:10F6F000E270F07081FD0BC0859194912FEF8F3FE8 +:10F70000920729F0E0918D01F0918E01099511DDAC +:10F710006F9A779A789481E010E000E0E0E0F0E002 +:10F72000E590F49025C0898357DD51D30F5F89811F +:10F73000002311F4180F779A011709F477981F3FE7 +:10F7400059F0112351F4813041F080918C018F5F89 +:10F7500080938C0181E001C08FEF90918C019530F6 +:10F7600038F09FEFE9169FEFF90611F010920F01A4 +:10F7700090910F019923B9F68091E0008160809308 +:10F78000E0002CE088E190E00FB6F894A895809313 +:10F7900060000FBE20936000FFCF923049F093309D +:10F7A00061F09130C1F020E030E080E090E017C0DF +:10F7B0002EE330E082E291E012C0882331F4209100 +:10F7C000600130E080E691E00AC02091640130E001 +:10F7D00084E691E004C022E130E080E191E0FA01AA +:10F7E00091838083C90108958093E900EBEEF0E0F6 +:10F7F000808181608083EDEEF0E010826093EC0008 +:10F8000040838091EE00881F8827881F089580918B +:10F81000950187FF11C003C08EB38823B1F080919A +:10F82000E80082FFF9CF8091E8008B778093E800B1 +:10F8300008958EB3882349F08091E80080FFF9CFC6 +:10F840008091E8008E778093E800089550D057D0DB +:10F850008091D800982F9F779093D80080688093EC +:10F86000D80088E189BD89B5826089BD09B400FEF0 +:10F87000FDCF8091D8008F7D8093D8008091D700F4 +:10F8800080688093D7001EBA109293018091E000A7 +:10F890008B7F8093E0008091D80081608093D800B6 +:10F8A00080E060E042E0A0DF8091E1008E7F809305 +:10F8B000E1008091E20081608093E2008091E200AB +:10F8C00088608093E2008091E0008E7F8093E0006A +:10F8D0008091D80080618093D8000895E7EDF0E032 +:10F8E00080818160808381E080939401AFCFE8EDD7 +:10F8F000F0E080818C7F80831092E2000895109266 +:10F90000DA001092E10008951F920F920FB60F9245 +:10F9100011242F933F934F935F936F937F938F9314 +:10F920009F93AF93BF93EF93FF938091DA0080FF93 +:10F9300013C08091D80080FF0FC08091DA008E7FC5 +:10F940008093DA008091D90080FF04C081E08EBBF3 +:10F95000A3D102C01EBAA0D18091E10080FF1CC0DB +:10F960008091E20080FF18C08091E1008E7F80933B +:10F97000E1008091E2008E7F8093E2008091E200BE +:10F9800080618093E2008091D80080628093D800EB +:10F9900019BC85E08EBB80D18091E10084FF2DC031 +:10F9A0008091E20084FF29C088E189BD89B5826029 +:10F9B00089BD09B400FEFDCF8091D8008F7D809372 +:10F9C000D8008091E1008F7E8093E1008091E20079 +:10F9D0008F7E8093E2008091E20081608093E2005C +:10F9E00080919301882321F48091E30087FF02C076 +:10F9F00084E001C081E08EBB4FD18091E10083FFA4 +:10FA000021C08091E20083FF1DC08091E100877FCB +:10FA10008093E10082E08EBB109293018091E1001F +:10FA20008E7F8093E1008091E2008E7F8093E200E0 +:10FA30008091E20080618093E20080E060E042E03B +:10FA4000D3DE2AD18091E10082FF0AC08091E200DA +:10FA500082FF06C08091E1008B7F8093E1001CD182 +:10FA6000FF91EF91BF91AF919F918F917F916F9196 +:10FA70005F914F913F912F910F900FBE0F901F906C +:10FA800018950F931F93DF93CF9300D0CDB7DEB7B8 +:10FA9000E5E9F1E08091F100819381E0ED39F8072B +:10FAA000C9F78091950190919601953009F46BC04A +:10FAB000963040F4913061F1913070F0933009F05C +:10FAC000D5C026C0983009F4A3C0993009F4B2C05B +:10FAD000963009F0CBC07CC0803809F4C8C08238A9 +:10FAE00009F0C4C08091990187708093E9009091DA +:10FAF000EB001092E9008091E800877F8093E80096 +:10FB000081E095FF80E08093F1001092F1008BC0BE +:10FB1000882319F0823009F0A9C08F71823009F072 +:10FB2000A6C080919701882341F520919901277003 +:10FB300009F49DC02093E9008091EB0080FF1DC077 +:10FB400080919601833021F48091EB00806213C094 +:10FB50008091EB0080618093EB0081E090E002C037 +:10FB6000880F991F2A95E2F78093EA001092EA0025 +:10FB70008091EB0088608093EB001092E900809107 +:10FB8000E800877F53C0882309F070C01091970167 +:10FB90001F770FB7F8948091E800877F8093E80083 +:10FBA00036DE8091E80080FFFCCF112311F083E066 +:10FBB00001C082E08EBB8091E3008078812B80932E +:10FBC000E3008091E30080688093E3000FBF4FC0A3 +:10FBD0008058823008F04AC0809197019091980136 +:10FBE00060919901AE014F5F5F4FD7DDBC01009777 +:10FBF00009F43DC08091E800877F8093E800898107 +:10FC00009A814BD08091E8008B778093E8002FC0D9 +:10FC1000803861F58091E800877F8093E8008091CB +:10FC200093018093F1008091E8008E778093E80043 +:10FC3000EEDD1DC08823D1F4909197019230B8F485 +:10FC40008091E800877F8093E80090939301DFDD47 +:10FC500080919301882321F48091E30087FF02C003 +:10FC600084E001C081E08EBB7DDA01C087DA80913B +:10FC7000E80083FF0AC08091EB0080628093EB0074 +:10FC80008091E800877F8093E8000F900F90CF91DC +:10FC9000DF911F910F9108950895282F392FF901B1 +:10FCA00080919B0190919C018617970718F4BC01E5 +:10FCB00020E035C061157105D9F78091E8008E7795 +:10FCC0008093E800F5CF8EB38823F1F18530C1F140 +:10FCD0008091E80083FD36C08091E80082FD2AC053 +:10FCE0008091E80080FF1BC08091F2009091F300AA +:10FCF00006C021912093F10061507040019661157A +:10FD0000710519F088309105A0F321E08830910544 +:10FD100009F020E08091E8008E778093E80061157B +:10FD2000710589F6222379F605C08EB3882361F028 +:10FD3000853061F08091E80082FFF7CF80E0089580 +:10FD400083E0089581E0089582E0089583E00895B6 +:10FD50006115710529F51FC02EB32223A1F12530AD +:10FD600071F12091E80023FD2CC02091E80022FFD2 +:10FD7000F3CFE82FF92F07C08091F1008193CF01D5 +:10FD80006150704041F0CF012091F2003091F300BA +:10FD90002115310589F72091E8002B772093E800A1 +:10FDA00061157105C9F605C08EB3882361F08530F1 +:10FDB00061F08091E80080FFF7CF80E0089583E054 +:10FDC000089581E0089582E0089583E008951F93E7 +:10FDD0008EB3882361F01091E90017701092E9004A +:10FDE0008091E80083FF01C04CDE1093E9001F9171 +:10FDF0000895F999FECF92BD81BDF89A992780B5F3 +:10FE00000895262FF999FECF1FBA92BD81BD20BD5E +:10FE10000FB6F894FA9AF99A0FBE01960895F894DD +:02FE2000FFCF12 +:10FE22004C554641434443000000000000000801D5 +:10FE320012011001020000089A23010001000001D2 +:10FE4200000109023E0002010080320904000001A3 +:10FE52000202010005240010010424020405240604 +:10FE620000010705820308000209040100020A00DA +:10FE720000000705040210000007058302100000BD +:10FE820004030904260341005600520020004300E7 +:10FE920044004300200042006F006F0074006C00B9 +:0CFEA2006F006100640065007200000049 +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BrainwavePro-1286-LUFA.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BrainwavePro-1286-LUFA.hex new file mode 100644 index 000000000..99f0f36b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/at90usb/BrainwavePro-1286-LUFA.hex @@ -0,0 +1,247 @@ +:020000021000EC +:10F000004BC0000066C0000064C0000062C0000089 +:10F0100060C000005EC000005CC000005AC000007C +:10F0200058C0000056C00000ACC4000052C0000030 +:10F0300050C000004EC000004CC000004AC000009C +:10F0400048C0000046C0000044C0000042C00000AC +:10F0500040C000003EC000003CC000003AC00000BC +:10F0600038C0000036C0000034C0000032C00000CC +:10F0700030C000002EC000002CC000002AC00000DC +:10F0800028C0000026C0000024C0000022C00000EC +:10F0900020C000001EC0000011241FBECFEFD0E230 +:10F0A000DEBFCDBF11E0A0E0B1E0E4EAFEEF01E099 +:10F0B0000BBF02C007900D92AC38B107D9F711E031 +:10F0C000ACE8B1E001C01D92AD39B107E1F72FD333 +:10F0D000E7C696CF84E08093E9000DC08091E800F8 +:10F0E0008B778093E80003C08EB3882359F080911A +:10F0F000E80082FFF9CF8091E80085FFEFCF809193 +:10F10000F100089580E0089593E09093E9009091D4 +:10F11000E80095FD0DC09091E8009E779093E8007F +:10F1200003C09EB3992331F09091E80090FFF9CF8E +:10F130008093F100089584B7877F84BF88E10FB67C +:10F14000F89480936000109260000FBE90E080E819 +:10F150000FB6F89480936100909361000FBE81E038 +:10F1600085BF82E085BFF7C382E061EC42E079D3DE +:10F1700083E061E842E175D384E060E842E171C375 +:10F18000809196018032B1F0813239F580919501FC +:10F19000813A19F58091E800877F8093E80088E044 +:10F1A00091E067E070E0BAD58091E8008B778093BA +:10F1B000E800089580919501813279F48091E8000A +:10F1C000877F8093E80088E091E067E070E001D6F7 +:10F1D0008091E8008E778093E80008952F923F9207 +:10F1E0005F926F927F928F929F92AF92BF92CF92D7 +:10F1F000DF92EF92FF920F931F93DF93CF930F92C3 +:10F20000CDB7DEB784E08093E9008091E80082FF0B +:10F210007BC210928C015EDF182F8C3409F421C25E +:10F22000803509F41EC2843529F0853429F4109202 +:10F230000F0117C24FDF15C2843711F484E448C0B0 +:10F24000813611F489E536C28134F1F443DF382F79 +:10F25000330F20E079010027F7FC0095102FE09292 +:10F260008F01F0929001009391011093920132DF8F +:10F2700090E0880F991FAA2797FDA095BA2F8E2995 +:10F280009F29A02BB12BE5C1803711F483E512C271 +:10F29000833559F400E011E0D8018D918D0134DF00 +:10F2A000B1E007301B07C1F706C2863521F481E3C0 +:10F2B0002BDF80E3FFC1833731F482E825DF87E964 +:10F2C00023DF8EE1F7C1823631F489E51DDF81E06D +:10F2D0001BDF80E0EFC1853621F580E090E0DC01A6 +:10F2E00033E025E0FC01A0935B0030935700E895E4 +:10F2F00007B600FCFDCFFC01A0935B0020935700F4 +:10F30000E89507B600FCFDCF8F5F9E4FAF4FBF4F14 +:10F310008F3EE0EF9E07E1E0AE07E0E0BE0711F7A9 +:10F32000A0C18C3651F4D6DE809599E0E1E0F0E0A2 +:10F33000082E90935700E89594C1823719F4E1E0C4 +:10F34000F0E00EC0863419F4E0E0F0E009C08E343D +:10F3500019F4E3E0F0E004C0813539F4E2E0F0E0D4 +:10F3600089E0809357008491A5C18334A1F4E09093 +:10F370008F01F09090010091910110919201AADE0D +:10F3800090E021E00C01F70100935B00209357000F +:10F39000E895112466C18336E1F4E0908F01F09086 +:10F3A0009001009191011091920181E090E0A0E024 +:10F3B000B0E0E82AF92A0A2B1B2B8CDE90E021E032 +:10F3C0000C01F70100935B0020935700E89511248E +:10F3D00035C18D3699F480918F0190919001A09163 +:10F3E0009101B091920125E0FC01A0935B00209374 +:10F3F0005700E89507B600FCFDCF33C1823419F001 +:10F40000873609F0F7C066DEE82E64DE082F62DE7C +:10F41000982E8554823008F04CC13E2D20E0202EDD +:10F420003324222A332A173609F058C081E1809309 +:10F430005700E89510E001E04CC020918F01309119 +:10F4400090014091910150919201992D963419F5B6 +:10F45000812F90E0A0E0B0E0822B932BA42BB52B62 +:10F46000ABBFFC01879150DE112399F080918F0191 +:10F4700090919001A0919101B09192010296A11DED +:10F48000B11D80938F0190939001A0939101B0934F +:10F49000920110271BC0DA01C901B695A79597956F +:10F4A0008795E8D431DE80918F0190919001A091F1 +:10F4B0009101B09192010296A11DB11D80938F011F +:10F4C00090939001A0939101B09392010894210828 +:10F4D00031082114310409F0B0CFEDC0A0908F01A4 +:10F4E000B0909001C0909101D0909201A92DA634C6 +:10F4F00009F069C083E0F501C0925B00809357007A +:10F50000E89507B600FCFDCF5EC0B92DB63491F585 +:10F51000222361F1E0908F01F09090010091910120 +:10F5200010919201D7DD782E6624282D30E026290F +:10F5300037290901F70100935B0050925700E895C5 +:10F54000112480918F0190919001A0919101B0912F +:10F5500092010296A11DB11D80938F01909390019D +:10F56000A0939101B093920120E029C0B3DD882ED1 +:10F5700021E025C0E0908F01F09090010091910171 +:10F580001091920116950795F794E7942983A2DDCF +:10F59000682FC70177D480918F0190919001A0913D +:10F5A0009101B09192010296A11DB11D80938F012E +:10F5B00090939001A0939101B093920129810894B6 +:10F5C0002108310804C0882420E0552453942114D4 +:10F5D000310409F09ACFE92DE63409F042C085E004 +:10F5E000F501C0925B0080935700E89507B600FCD8 +:10F5F000FDCF37C0823581F480918F0190919001C9 +:10F60000A0919101B0919201ABBFFC0107911691BD +:10F61000812F7ADD802F4EC0843429F5E0908F0150 +:10F62000F09090010091910110919201169507952B +:10F63000F794E7944FDD682FC70124D480918F01A0 +:10F6400090919001A0919101B09192010296A11D1B +:10F65000B11D80938F0190939001A0939101B0937D +:10F6600092018DE027C0843611F580918F01909131 +:10F670009001A0919101B0919201B695A7959795AF +:10F680008795F8D341DD80918F0190919001A091F1 +:10F690009101B09192010296A11DB11D80938F013D +:10F6A00090939001A0939101B093920104C08B318B +:10F6B00011F08FE329DD83E08093E9009091E80069 +:10F6C0008091E8008E778093E80095FF04C010C019 +:10F6D0008EB38823C9F08091E80080FFF9CF809134 +:10F6E000E8008E778093E80003C08EB3882361F032 +:10F6F0008091E80080FFF9CF84E08093E900809159 +:10F70000E8008B778093E8000F90CF91DF911F91F5 +:10F710000F91FF90EF90DF90CF90BF90AF909F90B0 +:10F720008F907F906F905F903F902F900895EF9211 +:10F73000FF920F931F93DF93CF930F92CDB7DEB756 +:10F7400084B714BE9091600098619093600010920D +:10F75000600010928C0190E0FC01E270F07081FD7D +:10F760000BC0859194912FEF8F3F920729F0E09184 +:10F770008D01F0918E010995209A289A6F9A779AB7 +:10F780006D9A759A3B9A439AD6DC6F9A779A7894D9 +:10F7900081E010E000E0E0E0F0E0E590F49025C0CA +:10F7A00089831CDD55D30F5F8981002311F4180F65 +:10F7B000779A011709F477981F3F59F0112351F4F4 +:10F7C000813041F080918C018F5F80938C0181E0CA +:10F7D00001C08FEF90918C01923338F09FEFE916C2 +:10F7E0009FEFF90611F010920F0190910F019923EC +:10F7F000B9F68091E00081608093E0002CE088E120 +:10F8000090E00FB6F894A895809360000FBE209307 +:10F810006000FFCF923049F0933061F09130C1F039 +:10F8200020E030E080E090E017C02EE330E082E29C +:10F8300091E012C0882331F42091600130E080E62D +:10F8400091E00AC02091640130E084E691E004C0B8 +:10F8500022E130E080E191E0FA0191838083C901E7 +:10F8600008958093E900EBEEF0E080818160808371 +:10F87000EDEEF0E010826093EC0040838091EE00AA +:10F88000881F8827881F08958091950187FF11C0E0 +:10F8900003C08EB38823B1F08091E80082FFF9CFD6 +:10F8A0008091E8008B778093E80008958EB38823D9 +:10F8B00049F08091E80080FFF9CF8091E8008E77D1 +:10F8C0008093E800089550D057D08091D800982FA9 +:10F8D0009F779093D80080688093D80084E189BD99 +:10F8E00089B5826089BD09B400FEFDCF8091D80042 +:10F8F0008F7D8093D8008091D70080688093D70057 +:10F900001EBA109293018091E0008B7F8093E000FB +:10F910008091D80081608093D80080E060E042E070 +:10F92000A0DF8091E1008E7F8093E1008091E20072 +:10F9300081608093E2008091E20088608093E20021 +:10F940008091E0008E7F8093E0008091D8008061FC +:10F950008093D8000895E7EDF0E080818160808396 +:10F9600081E080939401AFCFE8EDF0E080818C7F5F +:10F9700080831092E20008951092DA001092E10064 +:10F9800008951F920F920FB60F920BB60F9211248B +:10F990002F933F934F935F936F937F938F939F9397 +:10F9A000AF93BF93EF93FF938091DA0080FF13C072 +:10F9B0008091D80080FF0FC08091DA008E7F809305 +:10F9C000DA008091D90080FF04C081E08EBBA5D110 +:10F9D00002C01EBAA2D18091E10080FF1CC08091BC +:10F9E000E20080FF18C08091E1008E7F8093E100EB +:10F9F0008091E2008E7F8093E2008091E20080613E +:10FA00008093E2008091D80080628093D80019BC76 +:10FA100085E08EBB82D18091E10084FF2DC0809172 +:10FA2000E20084FF29C084E189BD89B5826089BD77 +:10FA300009B400FEFDCF8091D8008F7D8093D8005F +:10FA40008091E1008F7E8093E1008091E2008F7EC3 +:10FA50008093E2008091E20081608093E2008091D7 +:10FA60009301882321F48091E30087FF02C084E0A2 +:10FA700001C081E08EBB51D18091E10083FF21C0A4 +:10FA80008091E20083FF1DC08091E100877F809319 +:10FA9000E10082E08EBB109293018091E1008E7FA5 +:10FAA0008093E1008091E2008E7F8093E20080915C +:10FAB000E20080618093E20080E060E042E0D1DE1D +:10FAC0002CD18091E10082FF0AC08091E20082FF88 +:10FAD00006C08091E1008B7F8093E1001ED1FF91F1 +:10FAE000EF91BF91AF919F918F917F916F915F91B6 +:10FAF0004F913F912F910F900BBE0F900FBE0F9023 +:10FB00001F9018950F931F93DF93CF9300D0CDB71D +:10FB1000DEB7E5E9F1E08091F100819381E0ED3914 +:10FB2000F807C9F78091950190919601953009F4F5 +:10FB30006BC0963040F4913061F1913070F09330A9 +:10FB400009F0D5C026C0983009F4A3C0993009F453 +:10FB5000B2C0963009F0CBC07CC0803809F4C8C070 +:10FB6000823809F0C4C08091990187708093E900C0 +:10FB70009091EB001092E9008091E800877F8093DC +:10FB8000E80081E095FF80E08093F1001092F100A1 +:10FB90008BC0882319F0823009F0A9C08F718230A0 +:10FBA00009F0A6C080919701882341F52091990121 +:10FBB000277009F49DC02093E9008091EB0080FF3D +:10FBC0001DC080919601833021F48091EB0080620A +:10FBD00013C08091EB0080618093EB0081E090E0A6 +:10FBE00002C0880F991F2A95E2F78093EA001092CD +:10FBF000EA008091EB0088608093EB001092E900AE +:10FC00008091E800877F53C0882309F070C010916D +:10FC100097011F770FB7F8948091E800877F809352 +:10FC2000E80032DE8091E80080FFFCCF112311F064 +:10FC300083E001C082E08EBB8091E3008078812B5D +:10FC40008093E3008091E30080688093E3000FBF1E +:10FC50004FC08058823008F04AC08091970190913F +:10FC6000980160919901AE014F5F5F4FD3DDBC01F8 +:10FC7000009709F43DC08091E800877F8093E800F9 +:10FC800089819A814BD08091E8008B778093E8003E +:10FC90002FC0803861F58091E800877F8093E8006D +:10FCA000809193018093F1008091E8008E7780939A +:10FCB000E800EADD1DC08823D1F4909197019230CD +:10FCC000B8F48091E800877F8093E80090939301D7 +:10FCD000DBDD80919301882321F48091E30087FF8D +:10FCE00002C084E001C081E08EBB3EDA01C048DA88 +:10FCF0008091E80083FF0AC08091EB0080628093CE +:10FD0000EB008091E800877F8093E8000F900F90D0 +:10FD1000CF91DF911F910F9108950895282F392FCA +:10FD2000F90180919B0190919C018617970718F427 +:10FD3000BC0120E035C061157105D9F78091E8005C +:10FD40008E778093E800F5CF8EB38823F1F185306C +:10FD5000C1F18091E80083FD36C08091E80082FD0A +:10FD60002AC08091E80080FF1BC08091F200909132 +:10FD7000F30006C021912093F1006150704001967C +:10FD80006115710519F088309105A0F321E08830E4 +:10FD9000910509F020E08091E8008E778093E800DB +:10FDA0006115710589F6222379F605C08EB3882383 +:10FDB00061F0853061F08091E80082FFF7CF80E04C +:10FDC000089583E0089581E0089582E0089583E036 +:10FDD00008956115710529F51FC02EB32223A1F1E5 +:10FDE000253071F12091E80023FD2CC02091E8001E +:10FDF00022FFF3CFE82FF92F07C08091F100819304 +:10FE0000CF016150704041F0CF012091F20030915C +:10FE1000F3002115310589F72091E8002B77209315 +:10FE2000E80061157105C9F605C08EB3882361F03D +:10FE3000853061F08091E80080FFF7CF80E0089581 +:10FE400083E0089581E0089582E0089583E00895B5 +:10FE50001F938EB3882361F01091E9001770109200 +:10FE6000E9008091E80083FF01C04CDE1093E900B7 +:10FE70001F910895F999FECF92BD81BDF89A9927F7 +:10FE800080B50895262FF999FECF1FBA92BD81BD86 +:10FE900020BD0FB6F894FA9AF99A0FBE019608950C +:04FEA000F894FFCF04 +:10FEA4004C55464143444300000000000000080153 +:10FEB40012011001020000089A2301000100000150 +:10FEC400000109023E000201008032090400000121 +:10FED4000202010005240010010424020405240682 +:10FEE40000010705820308000209040100020A0058 +:10FEF400000007050402100000070583021000003B +:10FF04000403090426034100560052002000430064 +:10FF140044004300200042006F006F0074006C0036 +:0CFF24006F0061006400650072000000C6 +:040000031000F000F9 +:00000001FF diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168.c new file mode 100644 index 000000000..1df3f0311 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p.hex new file mode 100644 index 000000000..a63dc8dd0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega1284p_8m.hex new file mode 100644 index 000000000..7f5f3f3d4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/ATmegaBOOT_168_atmega644p.hex new file mode 100644 index 000000000..2edf9c677 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/bootloaders/atmega/Makefile b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/bootloaders/atmega/Makefile new file mode 100644 index 000000000..3f2bb6156 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/cores/arduino/Arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Arduino.h new file mode 100644 index 000000000..16dd759b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Arduino.h @@ -0,0 +1,249 @@ +/* + Arduino.h - Main include file for the Arduino SDK + Copyright (c) 2005-2013 Arduino Team. 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 Arduino_h +#define Arduino_h + +#include +#include +#include +#include + +#include +#include +#include + +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +void yield(void); + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 +#define INPUT_PULLUP 0x2 + +#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 EULER 2.718281828459045235360287471352 + +#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_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) +#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)) + +// avr-libc defines _NOP() since 1.6.2 +#ifndef _NOP +#define _NOP() do { __asm__ volatile ("nop"); } while (0) +#endif + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef bool boolean; +typedef uint8_t byte; + +void init(void); +void initVariant(void); + +int atexit(void (*func)()) __attribute__((weak)); + +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 + +#define NOT_AN_INTERRUPT -1 + +#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 TIMER1C 5 +#define TIMER2 6 +#define TIMER2A 7 +#define TIMER2B 8 + +#define TIMER3A 9 +#define TIMER3B 10 +#define TIMER3C 11 +#define TIMER4A 12 +#define TIMER4B 13 +#define TIMER4C 14 +#define TIMER4D 15 +#define TIMER5A 16 +#define TIMER5B 17 +#define TIMER5C 18 + +#ifdef __cplusplus +} // extern "C" +#endif + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" +#include "USBAPI.h" +#if defined(HAVE_HWSERIAL0) && defined(HAVE_CDCSERIAL) +#error "Targets with both UART0 and CDC serial not supported" +#endif + +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.6.x/hardware/marlin/avr/cores/arduino/CDC.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/CDC.cpp new file mode 100644 index 000000000..5d4f2a080 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/CDC.cpp @@ -0,0 +1,211 @@ + + +/* 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 "USBAPI.h" +#include + +#if defined(USBCON) +#ifdef CDC_ENABLED + +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); + } + + if (CDC_SET_CONTROL_LINE_STATE == r) + { + _usbLineInfo.lineState = setup.wValueL; + } + + if (CDC_SET_LINE_CODING == r || CDC_SET_CONTROL_LINE_STATE == r) + { + // 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 + + // We check DTR state to determine if host port is open (bit 0 of lineState). + if (1200 == _usbLineInfo.dwDTERate && (_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; +} + + +void Serial_::begin(unsigned long /* baud_count */) +{ + peek_buffer = -1; +} + +void Serial_::begin(unsigned long /* baud_count */, byte /* config */) +{ + peek_buffer = -1; +} + +void Serial_::end(void) +{ +} + +int Serial_::available(void) +{ + if (peek_buffer >= 0) { + return 1 + USB_Available(CDC_RX); + } + return USB_Available(CDC_RX); +} + +int Serial_::peek(void) +{ + if (peek_buffer < 0) + peek_buffer = USB_Recv(CDC_RX); + return peek_buffer; +} + +int Serial_::read(void) +{ + if (peek_buffer >= 0) { + int c = peek_buffer; + peek_buffer = -1; + return c; + } + return USB_Recv(CDC_RX); +} + +void Serial_::flush(void) +{ + USB_Flush(CDC_TX); +} + +size_t Serial_::write(uint8_t c) +{ + return write(&c, 1); +} + +size_t Serial_::write(const uint8_t *buffer, size_t size) +{ + /* 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,buffer,size); + 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.6.x/hardware/marlin/avr/cores/arduino/Client.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Client.h new file mode 100644 index 000000000..b8e5d935f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Client.h @@ -0,0 +1,45 @@ +/* + Client.h - Base class that provides Client + 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 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.6.x/hardware/marlin/avr/cores/arduino/HID.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HID.cpp new file mode 100644 index 000000000..75c37b24b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HID.cpp @@ -0,0 +1,518 @@ + + +/* 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 "USBAPI.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 + +#ifdef 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 + release(c); // Keyup + return p; // just return the result of press() since release() almost always returns 1 +} + +#endif + +#endif /* if defined(USBCON) */ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.cpp new file mode 100644 index 000000000..41935e320 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.cpp @@ -0,0 +1,252 @@ +/* + 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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#include +#include +#include +#include +#include "Arduino.h" + +#include "HardwareSerial.h" +#include "HardwareSerial_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(HAVE_HWSERIAL0) || defined(HAVE_HWSERIAL1) || defined(HAVE_HWSERIAL2) || defined(HAVE_HWSERIAL3) + +// SerialEvent functions are weak, so when the user doesn't define them, +// the linker just sets their address to 0 (which is checked below). +// The Serialx_available is just a wrapper around Serialx.available(), +// but we can refer to it weakly so we don't pull in the entire +// HardwareSerial instance if the user doesn't also refer to it. +#if defined(HAVE_HWSERIAL0) + void serialEvent() __attribute__((weak)); + bool Serial0_available() __attribute__((weak)); +#endif + +#if defined(HAVE_HWSERIAL1) + void serialEvent1() __attribute__((weak)); + bool Serial1_available() __attribute__((weak)); +#endif + +#if defined(HAVE_HWSERIAL2) + void serialEvent2() __attribute__((weak)); + bool Serial2_available() __attribute__((weak)); +#endif + +#if defined(HAVE_HWSERIAL3) + void serialEvent3() __attribute__((weak)); + bool Serial3_available() __attribute__((weak)); +#endif + +void serialEventRun(void) +{ +#if defined(HAVE_HWSERIAL0) + if (Serial0_available && serialEvent && Serial0_available()) serialEvent(); +#endif +#if defined(HAVE_HWSERIAL1) + if (Serial1_available && serialEvent1 && Serial1_available()) serialEvent1(); +#endif +#if defined(HAVE_HWSERIAL2) + if (Serial2_available && serialEvent2 && Serial2_available()) serialEvent2(); +#endif +#if defined(HAVE_HWSERIAL3) + if (Serial3_available && serialEvent3 && Serial3_available()) serialEvent3(); +#endif +} + +// Actual interrupt handlers ////////////////////////////////////////////////////////////// + +void HardwareSerial::_tx_udr_empty_irq(void) +{ + // If interrupts are enabled, there must be more data in the output + // buffer. Send the next byte + unsigned char c = _tx_buffer[_tx_buffer_tail]; + _tx_buffer_tail = (_tx_buffer_tail + 1) % SERIAL_TX_BUFFER_SIZE; + + *_udr = c; + + // clear the TXC bit -- "can be cleared by writing a one to its bit + // location". This makes sure flush() won't return until the bytes + // actually got written + sbi(*_ucsra, TXC0); + + if (_tx_buffer_head == _tx_buffer_tail) { + // Buffer empty, so disable interrupts + cbi(*_ucsrb, UDRIE0); + } +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(unsigned long baud, byte config) +{ + // Try u2x mode first + uint16_t baud_setting = (F_CPU / 4 / baud - 1) / 2; + *_ucsra = 1 << U2X0; + + // hardcoded exception for 57600 for compatibility with the bootloader + // shipped with the Duemilanove and previous boards and the firmware + // on the 8U2 on the Uno and Mega 2560. Also, The baud_setting cannot + // be > 4095, so switch back to non-u2x mode if the baud rate is too + // low. + if (((F_CPU == 16000000UL) && (baud == 57600)) || (baud_setting >4095)) + { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubrr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + _written = false; + + //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, RXEN0); + sbi(*_ucsrb, TXEN0); + sbi(*_ucsrb, RXCIE0); + cbi(*_ucsrb, UDRIE0); +} + +void HardwareSerial::end() +{ + // wait for transmission of outgoing data + while (_tx_buffer_head != _tx_buffer_tail) + ; + + cbi(*_ucsrb, RXEN0); + cbi(*_ucsrb, TXEN0); + cbi(*_ucsrb, RXCIE0); + cbi(*_ucsrb, UDRIE0); + + // clear any received data + _rx_buffer_head = _rx_buffer_tail; +} + +int HardwareSerial::available(void) +{ + return ((unsigned int)(SERIAL_RX_BUFFER_SIZE + _rx_buffer_head - _rx_buffer_tail)) % SERIAL_RX_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer_head == _rx_buffer_tail) { + return -1; + } else { + return _rx_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[_rx_buffer_tail]; + _rx_buffer_tail = (rx_buffer_index_t)(_rx_buffer_tail + 1) % SERIAL_RX_BUFFER_SIZE; + return c; + } +} + +int HardwareSerial::availableForWrite(void) +{ +#if (SERIAL_TX_BUFFER_SIZE>256) + uint8_t oldSREG = SREG; + cli(); +#endif + tx_buffer_index_t head = _tx_buffer_head; + tx_buffer_index_t tail = _tx_buffer_tail; +#if (SERIAL_TX_BUFFER_SIZE>256) + SREG = oldSREG; +#endif + if (head >= tail) return SERIAL_TX_BUFFER_SIZE - 1 - head + tail; + return tail - head - 1; +} + +void HardwareSerial::flush() +{ + // If we have never written a byte, no need to flush. This special + // case is needed since there is no way to force the TXC (transmit + // complete) bit to 1 during initialization + if (!_written) + return; + + while (bit_is_set(*_ucsrb, UDRIE0) || bit_is_clear(*_ucsra, TXC0)) { + if (bit_is_clear(SREG, SREG_I) && bit_is_set(*_ucsrb, UDRIE0)) + // Interrupts are globally disabled, but the DR empty + // interrupt should be enabled, so poll the DR empty flag to + // prevent deadlock + if (bit_is_set(*_ucsra, UDRE0)) + _tx_udr_empty_irq(); + } + // If we get here, nothing is queued anymore (DRIE is disabled) and + // the hardware finished tranmission (TXC is set). +} + +size_t HardwareSerial::write(uint8_t c) +{ + // If the buffer and the data register is empty, just write the byte + // to the data register and be done. This shortcut helps + // significantly improve the effective datarate at high (> + // 500kbit/s) bitrates, where interrupt overhead becomes a slowdown. + if (_tx_buffer_head == _tx_buffer_tail && bit_is_set(*_ucsra, UDRE0)) { + *_udr = c; + sbi(*_ucsra, TXC0); + return 1; + } + tx_buffer_index_t i = (_tx_buffer_head + 1) % SERIAL_TX_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 + while (i == _tx_buffer_tail) { + if (bit_is_clear(SREG, SREG_I)) { + // Interrupts are disabled, so we'll have to poll the data + // register empty flag ourselves. If it is set, pretend an + // interrupt has happened and call the handler to free up + // space for us. + if(bit_is_set(*_ucsra, UDRE0)) + _tx_udr_empty_irq(); + } else { + // nop, the interrupt handler will free up space for us + } + } + + _tx_buffer[_tx_buffer_head] = c; + _tx_buffer_head = i; + + sbi(*_ucsrb, UDRIE0); + _written = true; + + return 1; +} + + +#endif // whole file diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.h new file mode 100644 index 000000000..7dc2aa98c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial.h @@ -0,0 +1,151 @@ +/* + 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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +// 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. +// NOTE: a "power of 2" buffer size is reccomended to dramatically +// optimize all the modulo operations for ring buffers. +#if !(defined(SERIAL_TX_BUFFER_SIZE) && defined(SERIAL_RX_BUFFER_SIZE)) +#if (RAMEND < 1000) +#define SERIAL_TX_BUFFER_SIZE 16 +#define SERIAL_RX_BUFFER_SIZE 16 +#else +#define SERIAL_TX_BUFFER_SIZE 64 +#define SERIAL_RX_BUFFER_SIZE 64 +#endif +#endif +#if (SERIAL_TX_BUFFER_SIZE>256) +typedef uint16_t tx_buffer_index_t; +#else +typedef uint8_t tx_buffer_index_t; +#endif +#if (SERIAL_RX_BUFFER_SIZE>256) +typedef uint16_t rx_buffer_index_t; +#else +typedef uint8_t rx_buffer_index_t; +#endif + +// 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 + +class HardwareSerial : public Stream +{ + protected: + volatile uint8_t * const _ubrrh; + volatile uint8_t * const _ubrrl; + volatile uint8_t * const _ucsra; + volatile uint8_t * const _ucsrb; + volatile uint8_t * const _ucsrc; + volatile uint8_t * const _udr; + // Has any byte been written to the UART since begin() + bool _written; + + volatile rx_buffer_index_t _rx_buffer_head; + volatile rx_buffer_index_t _rx_buffer_tail; + volatile tx_buffer_index_t _tx_buffer_head; + volatile tx_buffer_index_t _tx_buffer_tail; + + // Don't put any members after these buffers, since only the first + // 32 bytes of this struct can be accessed quickly using the ldd + // instruction. + unsigned char _rx_buffer[SERIAL_RX_BUFFER_SIZE]; + unsigned char _tx_buffer[SERIAL_TX_BUFFER_SIZE]; + + public: + inline HardwareSerial( + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr); + void begin(unsigned long baud) { begin(baud, SERIAL_8N1); } + void begin(unsigned long, uint8_t); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + int availableForWrite(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() { return true; } + + // Interrupt handlers - Not intended to be called externally + inline void _rx_complete_irq(void); + void _tx_udr_empty_irq(void); +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; + #define HAVE_HWSERIAL0 +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; + #define HAVE_HWSERIAL1 +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; + #define HAVE_HWSERIAL2 +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; + #define HAVE_HWSERIAL3 +#endif + +extern void serialEventRun(void) __attribute__((weak)); + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial0.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial0.cpp new file mode 100644 index 000000000..1146eebab --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial0.cpp @@ -0,0 +1,79 @@ +/* + HardwareSerial0.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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#include "Arduino.h" +#include "HardwareSerial.h" +#include "HardwareSerial_private.h" + +// Each HardwareSerial is defined in its own file, sine the linker pulls +// in the entire file when any element inside is used. --gc-sections can +// additionally cause unused symbols to be dropped, but ISRs have the +// "used" attribute so are never dropped and they keep the +// HardwareSerial instance in as well. Putting each instance in its own +// file prevents the linker from pulling in any unused instances in the +// first place. + +#if defined(HAVE_HWSERIAL0) + +#if defined(USART_RX_vect) + ISR(USART_RX_vect) +#elif defined(USART0_RX_vect) + ISR(USART0_RX_vect) +#elif defined(USART_RXC_vect) + ISR(USART_RXC_vect) // ATmega8 +#else + #error "Don't know what the Data Received vector is called for Serial" +#endif + { + Serial._rx_complete_irq(); + } + +#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) +#else + #error "Don't know what the Data Register Empty vector is called for Serial" +#endif +{ + Serial._tx_udr_empty_irq(); +} + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&UBRRH, &UBRRL, &UCSRA, &UCSRB, &UCSRC, &UDR); +#else + HardwareSerial Serial(&UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UCSR0C, &UDR0); +#endif + +// Function that can be weakly referenced by serialEventRun to prevent +// pulling in this file if it's not otherwise used. +bool Serial0_available() { + return Serial.available(); +} + +#endif // HAVE_HWSERIAL0 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial1.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial1.cpp new file mode 100644 index 000000000..19625e235 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial1.cpp @@ -0,0 +1,69 @@ +/* + HardwareSerial1.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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#include "Arduino.h" +#include "HardwareSerial.h" +#include "HardwareSerial_private.h" + +// Each HardwareSerial is defined in its own file, sine the linker pulls +// in the entire file when any element inside is used. --gc-sections can +// additionally cause unused symbols to be dropped, but ISRs have the +// "used" attribute so are never dropped and they keep the +// HardwareSerial instance in as well. Putting each instance in its own +// file prevents the linker from pulling in any unused instances in the +// first place. + +#if defined(HAVE_HWSERIAL1) + +#if defined(UART1_RX_vect) +ISR(UART1_RX_vect) +#elif defined(USART1_RX_vect) +ISR(USART1_RX_vect) +#else +#error "Don't know what the Data Register Empty vector is called for Serial1" +#endif +{ + Serial1._rx_complete_irq(); +} + +#if defined(UART1_UDRE_vect) +ISR(UART1_UDRE_vect) +#elif defined(USART1_UDRE_vect) +ISR(USART1_UDRE_vect) +#else +#error "Don't know what the Data Register Empty vector is called for Serial1" +#endif +{ + Serial1._tx_udr_empty_irq(); +} + +HardwareSerial Serial1(&UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UCSR1C, &UDR1); + +// Function that can be weakly referenced by serialEventRun to prevent +// pulling in this file if it's not otherwise used. +bool Serial1_available() { + return Serial1.available(); +} + +#endif // HAVE_HWSERIAL1 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial2.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial2.cpp new file mode 100644 index 000000000..fd334ae15 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial2.cpp @@ -0,0 +1,57 @@ +/* + HardwareSerial2.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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#include "Arduino.h" +#include "HardwareSerial.h" +#include "HardwareSerial_private.h" + +// Each HardwareSerial is defined in its own file, sine the linker pulls +// in the entire file when any element inside is used. --gc-sections can +// additionally cause unused symbols to be dropped, but ISRs have the +// "used" attribute so are never dropped and they keep the +// HardwareSerial instance in as well. Putting each instance in its own +// file prevents the linker from pulling in any unused instances in the +// first place. + +#if defined(HAVE_HWSERIAL2) + +ISR(USART2_RX_vect) +{ + Serial2._rx_complete_irq(); +} + +ISR(USART2_UDRE_vect) +{ + Serial2._tx_udr_empty_irq(); +} + +HardwareSerial Serial2(&UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UCSR2C, &UDR2); + +// Function that can be weakly referenced by serialEventRun to prevent +// pulling in this file if it's not otherwise used. +bool Serial2_available() { + return Serial2.available(); +} + +#endif // HAVE_HWSERIAL2 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial3.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial3.cpp new file mode 100644 index 000000000..a68095b37 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial3.cpp @@ -0,0 +1,57 @@ +/* + HardwareSerial3.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 + Modified 3 December 2013 by Matthijs Kooijman +*/ + +#include "Arduino.h" +#include "HardwareSerial.h" +#include "HardwareSerial_private.h" + +// Each HardwareSerial is defined in its own file, sine the linker pulls +// in the entire file when any element inside is used. --gc-sections can +// additionally cause unused symbols to be dropped, but ISRs have the +// "used" attribute so are never dropped and they keep the +// HardwareSerial instance in as well. Putting each instance in its own +// file prevents the linker from pulling in any unused instances in the +// first place. + +#if defined(HAVE_HWSERIAL3) + +ISR(USART3_RX_vect) +{ + Serial3._rx_complete_irq(); +} + +ISR(USART3_UDRE_vect) +{ + Serial3._tx_udr_empty_irq(); +} + +HardwareSerial Serial3(&UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3); + +// Function that can be weakly referenced by serialEventRun to prevent +// pulling in this file if it's not otherwise used. +bool Serial3_available() { + return Serial3.available(); +} + +#endif // HAVE_HWSERIAL3 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial_private.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial_private.h new file mode 100644 index 000000000..761a5e559 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/HardwareSerial_private.h @@ -0,0 +1,123 @@ +/* + HardwareSerial_private.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 23 November 2006 by David A. Mellis + Modified 28 September 2010 by Mark Sproul + Modified 14 August 2012 by Alarus +*/ + +#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(HAVE_HWSERIAL0) || defined(HAVE_HWSERIAL1) || defined(HAVE_HWSERIAL2) || defined(HAVE_HWSERIAL3) + +// Ensure that the various bit positions we use are available with a 0 +// postfix, so we can always use the values for UART0 for all UARTs. The +// alternative, passing the various values for each UART to the +// HardwareSerial constructor also works, but makes the code bigger and +// slower. +#if !defined(TXC0) +#if defined(TXC) +// Some chips like ATmega8 don't have UPE, only PE. The other bits are +// named as expected. +#if !defined(UPE) && defined(PE) +#define UPE PE +#endif +// On ATmega8, the uart and its bits are not numbered, so there is no TXC0 etc. +#define TXC0 TXC +#define RXEN0 RXEN +#define TXEN0 TXEN +#define RXCIE0 RXCIE +#define UDRIE0 UDRIE +#define U2X0 U2X +#define UPE0 UPE +#define UDRE0 UDRE +#elif defined(TXC1) +// Some devices have uart1 but no uart0 +#define TXC0 TXC1 +#define RXEN0 RXEN1 +#define TXEN0 TXEN1 +#define RXCIE0 RXCIE1 +#define UDRIE0 UDRIE1 +#define U2X0 U2X1 +#define UPE0 UPE1 +#define UDRE0 UDRE1 +#else +#error No UART found in HardwareSerial.cpp +#endif +#endif // !defined TXC0 + +// Check at compiletime that it is really ok to use the bit positions of +// UART0 for the other UARTs as well, in case these values ever get +// changed for future hardware. +#if defined(TXC1) && (TXC1 != TXC0 || RXEN1 != RXEN0 || RXCIE1 != RXCIE0 || \ + UDRIE1 != UDRIE0 || U2X1 != U2X0 || UPE1 != UPE0 || \ + UDRE1 != UDRE0) +#error "Not all bit positions for UART1 are the same as for UART0" +#endif +#if defined(TXC2) && (TXC2 != TXC0 || RXEN2 != RXEN0 || RXCIE2 != RXCIE0 || \ + UDRIE2 != UDRIE0 || U2X2 != U2X0 || UPE2 != UPE0 || \ + UDRE2 != UDRE0) +#error "Not all bit positions for UART2 are the same as for UART0" +#endif +#if defined(TXC3) && (TXC3 != TXC0 || RXEN3 != RXEN0 || RXCIE3 != RXCIE0 || \ + UDRIE3 != UDRIE0 || U3X3 != U3X0 || UPE3 != UPE0 || \ + UDRE3 != UDRE0) +#error "Not all bit positions for UART3 are the same as for UART0" +#endif + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial( + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *ucsrc, volatile uint8_t *udr) : + _ubrrh(ubrrh), _ubrrl(ubrrl), + _ucsra(ucsra), _ucsrb(ucsrb), _ucsrc(ucsrc), + _udr(udr), + _rx_buffer_head(0), _rx_buffer_tail(0), + _tx_buffer_head(0), _tx_buffer_tail(0) +{ +} + +// Actual interrupt handlers ////////////////////////////////////////////////////////////// + +void HardwareSerial::_rx_complete_irq(void) +{ + if (bit_is_clear(*_ucsra, UPE0)) { + // No Parity error, read byte and store it in the buffer if there is + // room + unsigned char c = *_udr; + rx_buffer_index_t i = (unsigned int)(_rx_buffer_head + 1) % SERIAL_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[_rx_buffer_head] = c; + _rx_buffer_head = i; + } + } else { + // Parity error, read byte but discard it + *_udr; + }; +} + +#endif // whole file diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.cpp new file mode 100644 index 000000000..899cbd4ed --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.cpp @@ -0,0 +1,74 @@ +/* + IPAddress.cpp - Base class that provides IPAddress + 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 +*/ + +#include +#include + +IPAddress::IPAddress() +{ + _address.dword = 0; +} + +IPAddress::IPAddress(uint8_t first_octet, uint8_t second_octet, uint8_t third_octet, uint8_t fourth_octet) +{ + _address.bytes[0] = first_octet; + _address.bytes[1] = second_octet; + _address.bytes[2] = third_octet; + _address.bytes[3] = fourth_octet; +} + +IPAddress::IPAddress(uint32_t address) +{ + _address.dword = address; +} + +IPAddress::IPAddress(const uint8_t *address) +{ + memcpy(_address.bytes, address, sizeof(_address.bytes)); +} + +IPAddress& IPAddress::operator=(const uint8_t *address) +{ + memcpy(_address.bytes, address, sizeof(_address.bytes)); + return *this; +} + +IPAddress& IPAddress::operator=(uint32_t address) +{ + _address.dword = address; + return *this; +} + +bool IPAddress::operator==(const uint8_t* addr) const +{ + return memcmp(addr, _address.bytes, sizeof(_address.bytes)) == 0; +} + +size_t IPAddress::printTo(Print& p) const +{ + size_t n = 0; + for (int i =0; i < 3; i++) + { + n += p.print(_address.bytes[i], DEC); + n += p.print('.'); + } + n += p.print(_address.bytes[3], DEC); + return n; +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.h new file mode 100644 index 000000000..94acdc456 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/IPAddress.h @@ -0,0 +1,75 @@ +/* + IPAddress.h - Base class that provides IPAddress + 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 IPAddress_h +#define IPAddress_h + +#include +#include + +// A class to make it easier to handle and pass around IP addresses + +class IPAddress : public Printable { +private: + union { + uint8_t bytes[4]; // IPv4 address + uint32_t dword; + } _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.bytes; }; + +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() const { return _address.dword; }; + bool operator==(const IPAddress& addr) const { return _address.dword == addr._address.dword; }; + bool operator==(const uint8_t* addr) const; + + // Overloaded index operator to allow getting and setting individual octets of the address + uint8_t operator[](int index) const { return _address.bytes[index]; }; + uint8_t& operator[](int index) { return _address.bytes[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.6.x/hardware/marlin/avr/cores/arduino/Print.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Print.cpp new file mode 100644 index 000000000..5df56306e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Print.cpp @@ -0,0 +1,264 @@ +/* + 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) +{ + PGM_P p = reinterpret_cast(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) +{ + return write(s.c_str(), s.length()); +} + +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.6.x/hardware/marlin/avr/cores/arduino/Print.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Print.h new file mode 100644 index 000000000..7b53aa4d1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Print.h @@ -0,0 +1,84 @@ +/* + 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 write(const char *buffer, size_t size) { + return write((const uint8_t *)buffer, 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.6.x/hardware/marlin/avr/cores/arduino/Printable.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Printable.h new file mode 100644 index 000000000..2a1b2e9f2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/cores/arduino/Server.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Server.h new file mode 100644 index 000000000..69e3e39fe --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Server.h @@ -0,0 +1,30 @@ +/* + Server.h - Base class that provides Server + 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 server_h +#define server_h + +#include "Print.h" + +class Server : public Print { +public: + virtual void begin() =0; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.cpp new file mode 100644 index 000000000..b31942f29 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.cpp @@ -0,0 +1,317 @@ +/* + 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 + + findMulti/findUntil routines written by Jim Leonard/Xuth + */ + +#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, strlen(target), NULL, 0); +} + +// 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) +{ + if (terminator == NULL) { + MultiTarget t[1] = {{target, targetLen, 0}}; + return findMulti(t, 1) == 0 ? true : false; + } else { + MultiTarget t[2] = {{target, targetLen, 0}, {terminator, termLen, 0}}; + return findMulti(t, 2) == 0 ? true : 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) +{ + bool 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){ + bool isNegative = false; + bool 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; +} + +int Stream::findMulti( struct Stream::MultiTarget *targets, int tCount) { + // any zero length target string automatically matches and would make + // a mess of the rest of the algorithm. + for (struct MultiTarget *t = targets; t < targets+tCount; ++t) { + if (t->len <= 0) + return t - targets; + } + + while (1) { + int c = timedRead(); + if (c < 0) + return -1; + + for (struct MultiTarget *t = targets; t < targets+tCount; ++t) { + // the simple case is if we match, deal with that first. + if (c == t->str[t->index]) { + if (++t->index == t->len) + return t - targets; + else + continue; + } + + // if not we need to walk back and see if we could have matched further + // down the stream (ie '1112' doesn't match the first position in '11112' + // but it will match the second position so we can't just reset the current + // index to 0 when we find a mismatch. + if (t->index == 0) + continue; + + int origIndex = t->index; + do { + --t->index; + // first check if current char works against the new current index + if (c != t->str[t->index]) + continue; + + // if it's the only char then we're good, nothing more to check + if (t->index == 0) { + t->index++; + break; + } + + // otherwise we need to check the rest of the found string + int diff = origIndex - t->index; + size_t i; + for (i = 0; i < t->index; ++i) { + if (t->str[i] != t->str[i + diff]) + break; + } + + // if we successfully got through the previous loop then our current + // index is good. + if (i == t->index) { + t->index++; + break; + } + + // otherwise we just try the next index + } while (t->index); + } + } + // unreachable + return -1; +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.h new file mode 100644 index 000000000..a8101320c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Stream.h @@ -0,0 +1,113 @@ +/* + 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 +{ + protected: + 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 + bool find(uint8_t *target) { return find ((char *)target); } + // 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 + bool find(uint8_t *target, size_t length) { return find ((char *)target, length); } + // 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(uint8_t *target, char *terminator) { return findUntil((char *)target, terminator); } + + bool findUntil(char *target, size_t targetLen, char *terminate, size_t termLen); // as above but search ends if the terminate string is found + bool findUntil(uint8_t *target, size_t targetLen, char *terminate, size_t termLen) {return findUntil((char *)target, targetLen, terminate, termLen); } + + + 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 + size_t readBytes( uint8_t *buffer, size_t length) { return readBytes((char *)buffer, length); } + // 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 + size_t readBytesUntil( char terminator, uint8_t *buffer, size_t length) { return readBytesUntil(terminator, (char *)buffer, length); } + // 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 + + struct MultiTarget { + const char *str; // string you're searching for + size_t len; // length of string you're searching for + size_t index; // index used by the search routine. + }; + + // This allows you to search for an arbitrary number of strings. + // Returns index of the target that is found first or -1 if timeout occurs. + int findMulti(struct MultiTarget *targets, int tCount); +}; + + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Tone.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Tone.cpp new file mode 100644 index 000000000..721621975 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Tone.cpp @@ -0,0 +1,618 @@ +/* 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 +0009 J Reucker 15/04/10 Issue #292 Fixed problems with ATmega8 (thanks to Pete62) +0010 jipp 15/04/13 added additional define check #2923 +*************************************************/ + +#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) && defined(WGM01) + 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 = (TCCR0B & 0b11111000) | prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = (TCCR2B & 0b11111000) | 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(OCR3A) && defined(TIMSK3) && defined(OCIE3A) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(OCR4A) && defined(TIMSK4) && defined(OCIE4A) + 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) && defined(OCIE3A) + case 3: + bitWrite(TIMSK3, OCIE3A, 0); + break; +#endif + +#if defined(TIMSK4) && defined(OCIE4A) + case 4: + bitWrite(TIMSK4, OCIE4A, 0); + break; +#endif + +#if defined(TIMSK5) && defined(OCIE5A) + case 5: + bitWrite(TIMSK5, OCIE5A, 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.6.x/hardware/marlin/avr/cores/arduino/USBAPI.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBAPI.h new file mode 100644 index 000000000..2fab957f9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBAPI.h @@ -0,0 +1,244 @@ +/* + USBAPI.h + Copyright (c) 2005-2014 Arduino. 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 __USBAPI__ +#define __USBAPI__ + +#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" + +//================================================================================ +//================================================================================ +// 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) + +struct ring_buffer; + +#if (RAMEND < 1000) +#define SERIAL_BUFFER_SIZE 16 +#else +#define SERIAL_BUFFER_SIZE 64 +#endif + +class Serial_ : public Stream +{ +private: + int peek_buffer; +public: + Serial_() { peek_buffer = -1; }; + void begin(unsigned long); + void begin(unsigned long, uint8_t); + void end(void); + + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t*, size_t); + using Print::write; // pull in write(str) and write(buf, size) from Print + operator bool(); + + volatile uint8_t _rx_buffer_head; + volatile uint8_t _rx_buffer_tail; + unsigned char _rx_buffer[SERIAL_BUFFER_SIZE]; +}; +extern Serial_ Serial; + +#define HAVE_CDCSERIAL + +//================================================================================ +//================================================================================ +// 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) */ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBCore.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBCore.cpp new file mode 100644 index 000000000..b4f7bed7e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBCore.cpp @@ -0,0 +1,699 @@ + + +/* 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 "USBAPI.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 u8 STRING_PRODUCT[] PROGMEM; +extern const u8 STRING_MANUFACTURER[] PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptor PROGMEM; +extern const DeviceDescriptor USB_DeviceDescriptorA PROGMEM; + +const u16 STRING_LANGUAGE[2] = { + (3<<8) | (2+2), + 0x0409 // English +}; + +#ifndef USB_PRODUCT +// If no product is provided, use USB IO Board +#define USB_PRODUCT "USB IO Board" +#endif + +const u8 STRING_PRODUCT[] PROGMEM = USB_PRODUCT; + +#if USB_VID == 0x2341 +# if defined(USB_MANUFACTURER) +# undef USB_MANUFACTURER +# endif +# define USB_MANUFACTURER "Arduino LLC" +#elif USB_VID == 0x1b4f +# if defined(USB_MANUFACTURER) +# undef USB_MANUFACTURER +# endif +# define USB_MANUFACTURER "SparkFun" +#elif !defined(USB_MANUFACTURER) +// Fall through to unknown if no manufacturer name was provided in a macro +# define USB_MANUFACTURER "Unknown" +#endif + +const u8 STRING_MANUFACTURER[] PROGMEM = USB_MANUFACTURER; + + +#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; + { + LockEP lock(ep); + // Frame may have been released by the SOF interrupt handler + if (!ReadWriteAllowed()) + continue; + len -= n; + 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; +} + +// Send a USB descriptor string. The string is stored in PROGMEM as a +// plain ASCII string but is sent out as UTF-16 with the correct 2-byte +// prefix +static bool USB_SendStringDescriptor(const u8*string_P, u8 string_len) { + SendControl(2 + string_len * 2); + SendControl(3); + for(u8 i = 0; i < string_len; i++) { + bool r = SendControl(pgm_read_byte(&string_P[i])); + r &= SendControl(0); // high byte + if(!r) { + return false; + } + } + return true; +} + +// 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 + + 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) { + return USB_SendStringDescriptor(STRING_PRODUCT, strlen(USB_PRODUCT)); + } + else if (setup.wValueL == IMANUFACTURER) { + return USB_SendStringDescriptor(STRING_MANUFACTURER, strlen(USB_MANUFACTURER)); + } + else + return false; + } + + if (desc_addr == 0) + return false; + u8 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.6.x/hardware/marlin/avr/cores/arduino/USBDesc.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/USBDesc.h new file mode 100644 index 000000000..900713e0f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/cores/arduino/Udp.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/cores/arduino/WCharacter.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/cores/arduino/WInterrupts.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WInterrupts.c new file mode 100644 index 000000000..d3fbf100e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WInterrupts.c @@ -0,0 +1,334 @@ +/* -*- 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.6.x/hardware/marlin/avr/cores/arduino/WString.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WString.cpp new file mode 100644 index 000000000..dcd469d7d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WString.cpp @@ -0,0 +1,745 @@ +/* + 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; +} + +String::String(const __FlashStringHelper *pstr) +{ + init(); + *this = pstr; +} + +#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[1 + 8 * sizeof(unsigned char)]; + utoa(value, buf, base); + *this = buf; +} + +String::String(int value, unsigned char base) +{ + init(); + char buf[2 + 8 * sizeof(int)]; + itoa(value, buf, base); + *this = buf; +} + +String::String(unsigned int value, unsigned char base) +{ + init(); + char buf[1 + 8 * sizeof(unsigned int)]; + utoa(value, buf, base); + *this = buf; +} + +String::String(long value, unsigned char base) +{ + init(); + char buf[2 + 8 * sizeof(long)]; + ltoa(value, buf, base); + *this = buf; +} + +String::String(unsigned long value, unsigned char base) +{ + init(); + char buf[1 + 8 * sizeof(unsigned long)]; + ultoa(value, buf, base); + *this = buf; +} + +String::String(float value, unsigned char decimalPlaces) +{ + init(); + char buf[33]; + *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); +} + +String::String(double value, unsigned char decimalPlaces) +{ + init(); + char buf[33]; + *this = dtostrf(value, (decimalPlaces + 2), decimalPlaces, buf); +} + +String::~String() +{ + free(buffer); +} + +/*********************************************/ +/* Memory Management */ +/*********************************************/ + +inline void String::init(void) +{ + buffer = NULL; + capacity = 0; + len = 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; +} + +String & String::copy(const __FlashStringHelper *pstr, unsigned int length) +{ + if (!reserve(length)) { + invalidate(); + return *this; + } + len = length; + strcpy_P(buffer, (PGM_P)pstr); + 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; +} + +String & String::operator = (const __FlashStringHelper *pstr) +{ + if (pstr) copy(pstr, strlen_P((PGM_P)pstr)); + 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[1 + 3 * sizeof(unsigned char)]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(int num) +{ + char buf[2 + 3 * sizeof(int)]; + itoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned int num) +{ + char buf[1 + 3 * sizeof(unsigned int)]; + utoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(long num) +{ + char buf[2 + 3 * sizeof(long)]; + ltoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(unsigned long num) +{ + char buf[1 + 3 * sizeof(unsigned long)]; + ultoa(num, buf, 10); + return concat(buf, strlen(buf)); +} + +unsigned char String::concat(float num) +{ + char buf[20]; + char* string = dtostrf(num, 4, 2, buf); + return concat(string, strlen(string)); +} + +unsigned char String::concat(double num) +{ + char buf[20]; + char* string = dtostrf(num, 4, 2, buf); + return concat(string, strlen(string)); +} + +unsigned char String::concat(const __FlashStringHelper * str) +{ + if (!str) return 0; + int length = strlen_P((const char *) str); + if (length == 0) return 1; + unsigned int newlen = len + length; + if (!reserve(newlen)) return 0; + strcpy_P(buffer + len, (const char *) str); + len = newlen; + return 1; +} + +/*********************************************/ +/* 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; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, float num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, double num) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(num)) a.invalidate(); + return a; +} + +StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *rhs) +{ + StringSumHelper &a = const_cast(lhs); + if (!a.concat(rhs)) 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, 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::remove(unsigned int index){ + // Pass the biggest integer as the count. The remove method + // below will take care of truncating it at the end of the + // string. + remove(index, (unsigned int)-1); +} + +void String::remove(unsigned int index, unsigned int count){ + if (index >= len) { return; } + if (count <= 0) { return; } + if (count > len - index) { count = len - index; } + char *writeTo = buffer + index; + len = len - count; + strncpy(writeTo, buffer + index + count,len - index); + buffer[len] = 0; +} + +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; +} + +float String::toFloat(void) const +{ + if (buffer) return float(atof(buffer)); + return 0; +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WString.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WString.h new file mode 100644 index 000000000..740243092 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/WString.h @@ -0,0 +1,224 @@ +/* + 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); + String(const __FlashStringHelper *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); + explicit String(float, unsigned char decimalPlaces=2); + explicit String(double, unsigned char decimalPlaces=2); + ~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); + String & operator = (const __FlashStringHelper *str); + #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); + unsigned char concat(float num); + unsigned char concat(double num); + unsigned char concat(const __FlashStringHelper * str); + + // 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);} + String & operator += (float num) {concat(num); return (*this);} + String & operator += (double num) {concat(num); return (*this);} + String & operator += (const __FlashStringHelper *str){concat(str); 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); + friend StringSumHelper & operator + (const StringSumHelper &lhs, float num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, double num); + friend StringSumHelper & operator + (const StringSumHelper &lhs, const __FlashStringHelper *rhs); + + // 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);} + const char * c_str() const { return buffer; } + + // 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 { return substring(beginIndex, len); }; + 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 remove(unsigned int index); + void remove(unsigned int index, unsigned int count); + void toLowerCase(void); + void toUpperCase(void); + void trim(void); + + // parsing/conversion + long toInt(void) const; + float toFloat(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') +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); + String & copy(const __FlashStringHelper *pstr, 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) {} + StringSumHelper(float num) : String(num) {} + StringSumHelper(double num) : String(num) {} +}; + +#endif // __cplusplus +#endif // String_class_h diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/abi.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/abi.cpp new file mode 100644 index 000000000..8d719b8e6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/abi.cpp @@ -0,0 +1,35 @@ +/* + Copyright (c) 2014 Arduino. 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 + +extern "C" void __cxa_pure_virtual(void) __attribute__ ((__noreturn__)); +extern "C" void __cxa_deleted_virtual(void) __attribute__ ((__noreturn__)); + +void __cxa_pure_virtual(void) { + // We might want to write some diagnostics to uart in this case + //std::terminate(); + abort(); +} + +void __cxa_deleted_virtual(void) { + // We might want to write some diagnostics to uart in this case + //std::terminate(); + abort(); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/binary.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/binary.h new file mode 100644 index 000000000..aec4c733d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/binary.h @@ -0,0 +1,534 @@ +/* + binary.h - Definitions for binary constants + Copyright (c) 2006 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 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.6.x/hardware/marlin/avr/cores/arduino/hooks.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/hooks.c new file mode 100644 index 000000000..641eabc73 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/hooks.c @@ -0,0 +1,31 @@ +/* + Copyright (c) 2012 Arduino. 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 +*/ + +/** + * Empty yield() hook. + * + * This function is intended to be used by library writers to build + * libraries or sketches that supports cooperative threads. + * + * Its defined as a weak symbol and it can be redefined to implement a + * real cooperative scheduler. + */ +static void __empty() { + // Empty +} +void yield(void) __attribute__ ((weak, alias("__empty"))); diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/main.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/main.cpp new file mode 100644 index 000000000..a60980da5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/main.cpp @@ -0,0 +1,49 @@ +/* + main.cpp - Main loop for Arduino sketches + Copyright (c) 2005-2013 Arduino Team. 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 + +//Declared weak in Arduino.h to allow user redefinitions. +int atexit(void (*func)()) { return 0; } + +// Weak empty variant initialization function. +// May be redefined by variant files. +void initVariant() __attribute__((weak)); +void initVariant() { } + +int main(void) +{ + init(); + + initVariant(); + +#if defined(USBCON) + USBDevice.attach(); +#endif + + setup(); + + for (;;) { + loop(); + if (serialEventRun) serialEventRun(); + } + + return 0; +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.cpp new file mode 100644 index 000000000..cf6f89c17 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.cpp @@ -0,0 +1,36 @@ +/* + Copyright (c) 2014 Arduino. 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 + +void *operator new(size_t size) { + return malloc(size); +} + +void *operator new[](size_t size) { + return malloc(size); +} + +void operator delete(void * ptr) { + free(ptr); +} + +void operator delete[](void * ptr) { + free(ptr); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.h new file mode 100644 index 000000000..6e1b68f0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/new.h @@ -0,0 +1,30 @@ +/* + Copyright (c) 2014 Arduino. 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 NEW_H +#define NEW_H + +#include + +void * operator new(size_t size); +void * operator new[](size_t size); +void operator delete(void * ptr); +void operator delete[](void * ptr); + +#endif + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring.c new file mode 100644 index 000000000..5cbe24195 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring.c @@ -0,0 +1,325 @@ +/* + 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__) +ISR(TIM0_OVF_vect) +#else +ISR(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) { + yield(); + 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.6.x/hardware/marlin/avr/cores/arduino/wiring_analog.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_analog.c new file mode 100644 index 000000000..48a9ef52d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_analog.c @@ -0,0 +1,292 @@ +/* + 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(analogPinToChannel) +#if defined(__AVR_ATmega32U4__) + if (pin >= 18) pin -= 18; // allow for channel or pin numbers +#endif + pin = analogPinToChannel(pin); +#elif 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_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) + 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(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(TCCR1A) && defined(COM1C1) + case TIMER1C: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1C1); + OCR1C = 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.6.x/hardware/marlin/avr/cores/arduino/wiring_digital.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_digital.c new file mode 100644 index 000000000..df94cc1c5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_digital.c @@ -0,0 +1,181 @@ +/* + 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(TCCR1A) && defined(COM1C1) + case TIMER1C: cbi(TCCR1A, COM1C1); 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.6.x/hardware/marlin/avr/cores/arduino/wiring_private.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_private.h new file mode 100644 index 000000000..5dc7d4bed --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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__) || defined(__AVR_ATmega128RFA1__) || defined(__AVR_ATmega256RFR2__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#elif defined(__AVR_ATmega1284__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega644__) || defined(__AVR_ATmega644A__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) +#define EXTERNAL_NUM_INTERRUPTS 3 +#elif defined(__AVR_ATmega32U4__) +#define EXTERNAL_NUM_INTERRUPTS 5 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_pulse.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_pulse.c new file mode 100644 index 000000000..830c45408 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_pulse.c @@ -0,0 +1,85 @@ +/* + 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. There will be some error introduced by + // the interrupt handlers. + + // Conversion constants are compiler-dependent, different compiler versions + // have different levels of optimization. +#if __GNUC__==4 && __GNUC_MINOR__==3 && __GNUC_PATCHLEVEL__==2 + // avr-gcc 4.3.2 + return clockCyclesToMicroseconds(width * 21 + 16); +#elif __GNUC__==4 && __GNUC_MINOR__==8 && __GNUC_PATCHLEVEL__==1 + // avr-gcc 4.8.1 + return clockCyclesToMicroseconds(width * 24 + 16); +#elif __GNUC__<=4 && __GNUC_MINOR__<=3 + // avr-gcc <=4.3.x + #warning "pulseIn() results may not be accurate" + return clockCyclesToMicroseconds(width * 21 + 16); +#else + // avr-gcc >4.3.x + #warning "pulseIn() results may not be accurate" + return clockCyclesToMicroseconds(width * 24 + 16); +#endif + +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_shift.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/arduino/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/cores/at90usb/Arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Arduino.h new file mode 100644 index 000000000..830c9952f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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__) +#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.6.x/hardware/marlin/avr/cores/at90usb/CDC.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/CDC.cpp new file mode 100644 index 000000000..5a49621cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/CDC.cpp @@ -0,0 +1,236 @@ +/* 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 +// Use a 128 byte buffer like Arduinos of old for maximum +// compatibility. -Hubbe 20120929 +#define SERIAL_BUFFER_SIZE 128 +#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 c = USB_Recv(CDC_RX); + 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; + } +} + +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) + + /* Actually, let's ignore the line state for now since repetierHost + doens't work if we don't ignore it. -Hubbe 20120929 */ + /* 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.6.x/hardware/marlin/avr/cores/at90usb/Client.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Client.h new file mode 100644 index 000000000..ea134838a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/HID.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HID.cpp new file mode 100644 index 000000000..ac6360844 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.cpp new file mode 100644 index 000000000..f40ddee06 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.cpp @@ -0,0 +1,428 @@ +/* + 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 "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" + +// 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) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#endif +#endif + +#if defined(USART1_RX_vect) + void serialEvent1() __attribute__((weak)); + void serialEvent1() {} + #define serialEvent1_implemented + 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) + void serialEvent2() __attribute__((weak)); + void serialEvent2() {} + #define serialEvent2_implemented + 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) + void serialEvent3() __attribute__((weak)); + void serialEvent3() {} + #define serialEvent3_implemented + SIGNAL(USART3_RX_vect) + { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } +#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 *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; + _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; + + 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() +{ + while (_tx_buffer->head != _tx_buffer->tail) + ; +} + +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); + + return 1; +} + +HardwareSerial::operator bool() { + return true; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRIE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &tx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &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, &UDR1, RXEN1, TXEN1, RXCIE1, UDRIE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &tx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRIE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &tx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); +#endif + +#endif // whole file + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.h new file mode 100644 index 000000000..bf4924c6d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/HardwareSerial.h @@ -0,0 +1,81 @@ +/* + 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; + ring_buffer *_tx_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 _udrie; + uint8_t _u2x; + 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 *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udrie, uint8_t u2x); + void begin(unsigned long); + void end(); + virtual int available(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(); +}; + +#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.6.x/hardware/marlin/avr/cores/at90usb/IPAddress.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/IPAddress.cpp new file mode 100644 index 000000000..fe3deb77a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/IPAddress.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/IPAddress.h new file mode 100644 index 000000000..2585aec0e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Platform.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Platform.h new file mode 100644 index 000000000..8b8f74277 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Print.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Print.cpp new file mode 100644 index 000000000..e541a6ce7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Print.cpp @@ -0,0 +1,263 @@ +/* + 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; + + // 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.6.x/hardware/marlin/avr/cores/at90usb/Print.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Print.h new file mode 100644 index 000000000..1af6b723f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Print.h @@ -0,0 +1,78 @@ +/* + 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) { 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.6.x/hardware/marlin/avr/cores/at90usb/Printable.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Printable.h new file mode 100644 index 000000000..d03c9af62 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Server.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Server.h new file mode 100644 index 000000000..9674c7626 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Stream.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Stream.cpp new file mode 100644 index 000000000..aafb7fcf9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Stream.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Stream.h new file mode 100644 index 000000000..58bbf752f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/Tone.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Tone.cpp new file mode 100644 index 000000000..20eed3f48 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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 "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 + + +// 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_1.6.x/hardware/marlin/avr/cores/at90usb/USBAPI.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBAPI.h new file mode 100644 index 000000000..d5abdb690 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBAPI.h @@ -0,0 +1,195 @@ + + +#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); + 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.6.x/hardware/marlin/avr/cores/at90usb/USBCore.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBCore.cpp new file mode 100644 index 000000000..545c88a7a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBCore.cpp @@ -0,0 +1,670 @@ + + +/* 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), + 'B','r','a','i','n','w','a','v','e',' ',' ',' ',' ',' ',' ',' ' +}; + +const u16 STRING_IMANUFACTURER[12] = { + (3<<8) | (2+2*11), + 'M','e','t','r','i','x',' ',' ',' ',' ',' ' +}; + +#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 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBDesc.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBDesc.h new file mode 100644 index 000000000..094826433 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/USBDesc.h @@ -0,0 +1,62 @@ +/* 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 + +// Disable HID, Brainwaves don't need to be mice. -Hubbe 20120929 +// #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.6.x/hardware/marlin/avr/cores/at90usb/Udp.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/Udp.h new file mode 100644 index 000000000..dc5644b9d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/WCharacter.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/WCharacter.h new file mode 100644 index 000000000..79733b50a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/WInterrupts.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/WInterrupts.c new file mode 100644 index 000000000..8f3ec847f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/WInterrupts.c @@ -0,0 +1,298 @@ +/* -*- 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.6.x/hardware/marlin/avr/cores/at90usb/WString.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/WString.cpp new file mode 100644 index 000000000..c6839fc0d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/WString.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/WString.h new file mode 100644 index 000000000..d76d2a33d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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<__FlashStringHelper *>(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.6.x/hardware/marlin/avr/cores/at90usb/binary.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/binary.h new file mode 100644 index 000000000..af1498033 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/main.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/main.cpp new file mode 100644 index 000000000..3d4e079d2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/new.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/new.cpp new file mode 100644 index 000000000..0f6d4220e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/new.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/new.h new file mode 100644 index 000000000..cd940ce8b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/wiring.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring.c new file mode 100644 index 000000000..ac8bb6f9b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/wiring_analog.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_analog.c new file mode 100644 index 000000000..0e9881f6a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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_ATmega1284__) + 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.6.x/hardware/marlin/avr/cores/at90usb/wiring_digital.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_digital.c new file mode 100644 index 000000000..be323b1df --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/wiring_private.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_private.h new file mode 100644 index 000000000..f0ceb0cc4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_private.h @@ -0,0 +1,69 @@ +/* + 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__) +#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_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_pulse.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_pulse.c new file mode 100644 index 000000000..0d968865d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/cores/at90usb/wiring_shift.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/wiring_shift.c new file mode 100644 index 000000000..cfe786758 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/cores/at90usb/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.6.x/hardware/marlin/avr/firmwares/Brainwave.inf b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/firmwares/Brainwave.inf new file mode 100644 index 000000000..e48829420 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/firmwares/Brainwave.inf @@ -0,0 +1,106 @@ +;************************************************************ +; Windows USB CDC ACM Setup File +; Copyright (c) 2000 Microsoft Corporation + + +[Version] +Signature="$Windows NT$" +Class=Ports +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Provider=%MFGNAME% +LayoutFile=layout.inf +CatalogFile=%MFGFILENAME%.cat +DriverVer=11/15/2007,5.1.2600.0 + +[Manufacturer] +%MFGNAME%=DeviceList, NTamd64 + +[DestinationDirs] +DefaultDestDir=12 + + +;------------------------------------------------------------------------------ +; Windows 2000/XP/Vista-32bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.nt] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.nt +AddReg=DriverInstall.nt.AddReg + +[DriverCopyFiles.nt] +usbser.sys,,,0x20 + +[DriverInstall.nt.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.nt.Services] +AddService=usbser, 0x00000002, DriverService.nt + +[DriverService.nt] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + +;------------------------------------------------------------------------------ +; Vista-64bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.NTamd64] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.NTamd64 +AddReg=DriverInstall.NTamd64.AddReg + +[DriverCopyFiles.NTamd64] +%DRIVERFILENAME%.sys,,,0x20 + +[DriverInstall.NTamd64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTamd64.Services] +AddService=usbser, 0x00000002, DriverService.NTamd64 + +[DriverService.NTamd64] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + + +;------------------------------------------------------------------------------ +; Vendor and Product ID Definitions +;------------------------------------------------------------------------------ +; When developing your USB device, the VID and PID used in the PC side +; application program and the firmware on the microcontroller must match. +; Modify the below line to use your VID and PID. Use the format as shown below. +; Note: One INF file can be used for multiple devices with different VID and PIDs. +; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. +;------------------------------------------------------------------------------ +[SourceDisksFiles] +[SourceDisksNames] +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_16D0&PID_076B + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_16D0&PID_204A + + +;------------------------------------------------------------------------------ +; String Definitions +;------------------------------------------------------------------------------ +;Modify these strings to customize your device +;------------------------------------------------------------------------------ +[Strings] +MFGFILENAME="CDC_vista" +DRIVERFILENAME ="usbser" +MFGNAME="Metrix Create Space" +INSTDISK="Brainwave Driver Installer" +DESCRIPTION="Communications Port" +SERVICE="USB RS-232 Emulation Driver" \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/README.adoc b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/README.adoc new file mode 100644 index 000000000..6f57eb157 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/README.adoc @@ -0,0 +1,24 @@ += Liquid Crystal Library for Arduino = + +This library allows an Arduino board to control LiquidCrystal displays (LCDs) based on the Hitachi HD44780 (or a compatible) chipset, which is found on most text-based LCDs. + +For more information about this library please visit us at +http://arduino.cc/en/Reference/LiquidCrystal + +== License == + +Copyright (c) Arduino LLC. 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 diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Autoscroll/Autoscroll.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Autoscroll/Autoscroll.ino new file mode 100644 index 000000000..0acb3affc --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Autoscroll/Autoscroll.ino @@ -0,0 +1,74 @@ +/* + LiquidCrystal Library - Autoscroll + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch demonstrates the use of the autoscroll() + and noAutoscroll() functions to make new text scroll or not. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalAutoscroll + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); +} + +void loop() { + // set the cursor to (0,0): + lcd.setCursor(0, 0); + // print from 0 to 9: + for (int thisChar = 0; thisChar < 10; thisChar++) { + lcd.print(thisChar); + delay(500); + } + + // set the cursor to (16,1): + lcd.setCursor(16, 1); + // set the display to automatically scroll: + lcd.autoscroll(); + // print from 0 to 9: + for (int thisChar = 0; thisChar < 10; thisChar++) { + lcd.print(thisChar); + delay(500); + } + // turn off automatic scrolling + lcd.noAutoscroll(); + + // clear screen for the next loop: + lcd.clear(); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Blink/Blink.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Blink/Blink.ino new file mode 100644 index 000000000..856d522c5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Blink/Blink.ino @@ -0,0 +1,61 @@ +/* + LiquidCrystal Library - Blink + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints "Hello World!" to the LCD and makes the + cursor block blink. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalBlink + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // Print a message to the LCD. + lcd.print("hello, world!"); +} + +void loop() { + // Turn off the blinking cursor: + lcd.noBlink(); + delay(3000); + // Turn on the blinking cursor: + lcd.blink(); + delay(3000); +} + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Cursor/Cursor.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Cursor/Cursor.ino new file mode 100644 index 000000000..5f68d917d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Cursor/Cursor.ino @@ -0,0 +1,61 @@ +/* + LiquidCrystal Library - Cursor + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints "Hello World!" to the LCD and + uses the cursor() and noCursor() methods to turn + on and off the cursor. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalCursor + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // Print a message to the LCD. + lcd.print("hello, world!"); +} + +void loop() { + // Turn off the cursor: + lcd.noCursor(); + delay(500); + // Turn on the cursor: + lcd.cursor(); + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/CustomCharacter/CustomCharacter.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/CustomCharacter/CustomCharacter.ino new file mode 100644 index 000000000..e70a949e3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/CustomCharacter/CustomCharacter.ino @@ -0,0 +1,140 @@ +/* + LiquidCrystal Library - Custom Characters + + Demonstrates how to add custom characters on an LCD display. + The LiquidCrystal library works with all LCD displays that are + compatible with the Hitachi HD44780 driver. There are many of + them out there, and you can usually tell them by the 16-pin interface. + + This sketch prints "I Arduino!" and a little dancing man + to the LCD. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K potentiometer: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + * 10K poterntiometer on pin A0 + + created 21 Mar 2011 + by Tom Igoe + modified 11 Nov 2013 + by Scott Fitzgerald + + Based on Adafruit's example at + https://github.com/adafruit/SPI_VFD/blob/master/examples/createChar/createChar.pde + + This example code is in the public domain. + http://www.arduino.cc/en/Tutorial/LiquidCrystal + + Also useful: + http://icontexto.com/charactercreator/ + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +// make some custom characters: +byte heart[8] = { + 0b00000, + 0b01010, + 0b11111, + 0b11111, + 0b11111, + 0b01110, + 0b00100, + 0b00000 +}; + +byte smiley[8] = { + 0b00000, + 0b00000, + 0b01010, + 0b00000, + 0b00000, + 0b10001, + 0b01110, + 0b00000 +}; + +byte frownie[8] = { + 0b00000, + 0b00000, + 0b01010, + 0b00000, + 0b00000, + 0b00000, + 0b01110, + 0b10001 +}; + +byte armsDown[8] = { + 0b00100, + 0b01010, + 0b00100, + 0b00100, + 0b01110, + 0b10101, + 0b00100, + 0b01010 +}; + +byte armsUp[8] = { + 0b00100, + 0b01010, + 0b00100, + 0b10101, + 0b01110, + 0b00100, + 0b00100, + 0b01010 +}; + +void setup() { + // initialize LCD and set up the number of columns and rows: + lcd.begin(16, 2); + + // create a new character + lcd.createChar(0, heart); + // create a new character + lcd.createChar(1, smiley); + // create a new character + lcd.createChar(2, frownie); + // create a new character + lcd.createChar(3, armsDown); + // create a new character + lcd.createChar(4, armsUp); + + // Print a message to the lcd. + lcd.print("I "); + lcd.write(byte(0)); // when calling lcd.write() '0' must be cast as a byte + lcd.print(" Arduino! "); + lcd.write((byte) 1); + +} + +void loop() { + // read the potentiometer on A0: + int sensorReading = analogRead(A0); + // map the result to 200 - 1000: + int delayTime = map(sensorReading, 0, 1023, 200, 1000); + // set the cursor to the bottom row, 5th position: + lcd.setCursor(4, 1); + // draw the little man, arms down: + lcd.write(3); + delay(delayTime); + lcd.setCursor(4, 1); + // draw him arms up: + lcd.write(4); + delay(delayTime); +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Display/Display.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Display/Display.ino new file mode 100644 index 000000000..5c9e67cb3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Display/Display.ino @@ -0,0 +1,61 @@ +/* + LiquidCrystal Library - display() and noDisplay() + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints "Hello World!" to the LCD and uses the + display() and noDisplay() functions to turn on and off + the display. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalDisplay + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // Print a message to the LCD. + lcd.print("hello, world!"); +} + +void loop() { + // Turn off the display: + lcd.noDisplay(); + delay(500); + // Turn on the display: + lcd.display(); + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/HelloWorld/HelloWorld.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/HelloWorld/HelloWorld.ino new file mode 100644 index 000000000..bf122d999 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/HelloWorld/HelloWorld.ino @@ -0,0 +1,60 @@ +/* + LiquidCrystal Library - Hello World + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints "Hello World!" to the LCD + and shows the time. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * LCD VSS pin to ground + * LCD VCC pin to 5V + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://www.arduino.cc/en/Tutorial/LiquidCrystal + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // Print a message to the LCD. + lcd.print("hello, world!"); +} + +void loop() { + // set the cursor to column 0, line 1 + // (note: line 1 is the second row, since counting begins with 0): + lcd.setCursor(0, 1); + // print the number of seconds since reset: + lcd.print(millis() / 1000); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Scroll/Scroll.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Scroll/Scroll.ino new file mode 100644 index 000000000..3e4479177 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/Scroll/Scroll.ino @@ -0,0 +1,86 @@ +/* + LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight() + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints "Hello World!" to the LCD and uses the + scrollDisplayLeft() and scrollDisplayRight() methods to scroll + the text. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalScroll + + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // Print a message to the LCD. + lcd.print("hello, world!"); + delay(1000); +} + +void loop() { + // scroll 13 positions (string length) to the left + // to move it offscreen left: + for (int positionCounter = 0; positionCounter < 13; positionCounter++) { + // scroll one position left: + lcd.scrollDisplayLeft(); + // wait a bit: + delay(150); + } + + // scroll 29 positions (string length + display length) to the right + // to move it offscreen right: + for (int positionCounter = 0; positionCounter < 29; positionCounter++) { + // scroll one position right: + lcd.scrollDisplayRight(); + // wait a bit: + delay(150); + } + + // scroll 16 positions (display length + string length) to the left + // to move it back to center: + for (int positionCounter = 0; positionCounter < 16; positionCounter++) { + // scroll one position left: + lcd.scrollDisplayLeft(); + // wait a bit: + delay(150); + } + + // delay at the end of the full loop: + delay(1000); + +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.ino new file mode 100644 index 000000000..5838dc5a0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/SerialDisplay/SerialDisplay.ino @@ -0,0 +1,65 @@ +/* + LiquidCrystal Library - Serial Input + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch displays text sent over the serial port + (e.g. from the Serial Monitor) on an attached LCD. + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalSerial + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // initialize the serial communications: + Serial.begin(9600); +} + +void loop() +{ + // when characters arrive over the serial port... + if (Serial.available()) { + // wait a bit for the entire message to arrive + delay(100); + // clear the screen + lcd.clear(); + // read all the available characters + while (Serial.available() > 0) { + // display each character to the LCD + lcd.write(Serial.read()); + } + } +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/TextDirection/TextDirection.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/TextDirection/TextDirection.ino new file mode 100644 index 000000000..3bb8695b3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/TextDirection/TextDirection.ino @@ -0,0 +1,86 @@ +/* +LiquidCrystal Library - TextDirection + +Demonstrates the use a 16x2 LCD display. The LiquidCrystal +library works with all LCD displays that are compatible with the +Hitachi HD44780 driver. There are many of them out there, and you +can usually tell them by the 16-pin interface. + +This sketch demonstrates how to use leftToRight() and rightToLeft() +to move the cursor. + +The circuit: +* LCD RS pin to digital pin 12 +* LCD Enable pin to digital pin 11 +* LCD D4 pin to digital pin 5 +* LCD D5 pin to digital pin 4 +* LCD D6 pin to digital pin 3 +* LCD D7 pin to digital pin 2 +* LCD R/W pin to ground +* 10K resistor: +* ends to +5V and ground +* wiper to LCD VO pin (pin 3) + +Library originally added 18 Apr 2008 +by David A. Mellis +library modified 5 Jul 2009 +by Limor Fried (http://www.ladyada.net) +example added 9 Jul 2009 +by Tom Igoe +modified 22 Nov 2010 +by Tom Igoe + +This example code is in the public domain. + +http://arduino.cc/en/Tutorial/LiquidCrystalTextDirection + +*/ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +int thisChar = 'a'; + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(16, 2); + // turn on the cursor: + lcd.cursor(); +} + +void loop() { + // reverse directions at 'm': + if (thisChar == 'm') { + // go right for the next letter + lcd.rightToLeft(); + } + // reverse again at 's': + if (thisChar == 's') { + // go left for the next letter + lcd.leftToRight(); + } + // reset at 'z': + if (thisChar > 'z') { + // go to (0,0): + lcd.home(); + // start again at 0 + thisChar = 'a'; + } + // print the character + lcd.write(thisChar); + // wait a second: + delay(1000); + // increment the letter: + thisChar++; +} + + + + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/setCursor/setCursor.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/setCursor/setCursor.ino new file mode 100644 index 000000000..4790b68b8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/examples/setCursor/setCursor.ino @@ -0,0 +1,72 @@ +/* + LiquidCrystal Library - setCursor + + Demonstrates the use a 16x2 LCD display. The LiquidCrystal + library works with all LCD displays that are compatible with the + Hitachi HD44780 driver. There are many of them out there, and you + can usually tell them by the 16-pin interface. + + This sketch prints to all the positions of the LCD using the + setCursor(0 method: + + The circuit: + * LCD RS pin to digital pin 12 + * LCD Enable pin to digital pin 11 + * LCD D4 pin to digital pin 5 + * LCD D5 pin to digital pin 4 + * LCD D6 pin to digital pin 3 + * LCD D7 pin to digital pin 2 + * LCD R/W pin to ground + * 10K resistor: + * ends to +5V and ground + * wiper to LCD VO pin (pin 3) + + Library originally added 18 Apr 2008 + by David A. Mellis + library modified 5 Jul 2009 + by Limor Fried (http://www.ladyada.net) + example added 9 Jul 2009 + by Tom Igoe + modified 22 Nov 2010 + by Tom Igoe + + This example code is in the public domain. + + http://arduino.cc/en/Tutorial/LiquidCrystalSetCursor + + */ + +// include the library code: +#include + +// these constants won't change. But you can change the size of +// your LCD using them: +const int numRows = 2; +const int numCols = 16; + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +void setup() { + // set up the LCD's number of columns and rows: + lcd.begin(numCols, numRows); +} + +void loop() { + // loop from ASCII 'a' to ASCII 'z': + for (int thisLetter = 'a'; thisLetter <= 'z'; thisLetter++) { + // loop over the columns: + for (int thisCol = 0; thisCol < numRows; thisCol++) { + // loop over the rows: + for (int thisRow = 0; thisRow < numCols; thisRow++) { + // set the cursor position: + lcd.setCursor(thisCol, thisRow); + // print the letter: + lcd.write(thisLetter); + delay(200); + } + } + } +} + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/keywords.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/keywords.txt new file mode 100644 index 000000000..b6aa7fd90 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/keywords.txt @@ -0,0 +1,38 @@ +####################################### +# Syntax Coloring Map For LiquidCrystal +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +LiquidCrystal KEYWORD1 LiquidCrystal + +####################################### +# 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 +setRowOffsets KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/library.properties b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/library.properties new file mode 100644 index 000000000..f379f78cc --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/library.properties @@ -0,0 +1,9 @@ +name=LiquidCrystal +version=1.0.1 +author=Arduino, Adafruit +maintainer=Arduino +sentence=Allows communication with alphanumerical liquid crystal displays (LCDs). For all Arduino boards. +paragraph=This library allows an Arduino board to control LiquidCrystal displays (LCDs) based on the Hitachi HD44780 (or a compatible) chipset, which is found on most text-based LCDs. The library works with in either 4 or 8 bit mode (i.e. using 4 or 8 data lines in addition to the rs, enable, and, optionally, the rw control lines). +category=Display +url=http://arduino.cc/en/Reference/LiquidCrystal +architectures=* diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.cpp new file mode 100644 index 000000000..249e0ec9b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.cpp @@ -0,0 +1,322 @@ +#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 its 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; + + setRowOffsets(0x00, 0x40, 0x00 + cols, 0x40 + cols); + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != LCD_5x8DOTS) && (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 + 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); + +} + +void LiquidCrystal::setRowOffsets(int row0, int row1, int row2, int row3) +{ + _row_offsets[0] = row0; + _row_offsets[1] = row1; + _row_offsets[2] = row2; + _row_offsets[3] = row3; +} + +/********** 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) +{ + const size_t max_lines = sizeof(_row_offsets) / sizeof(*_row_offsets); + if ( row >= max_lines ) { + row = max_lines - 1; // we count rows starting w/0 + } + 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.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.h new file mode 100644 index 000000000..da950ce58 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/LiquidCrystal/src/LiquidCrystal.h @@ -0,0 +1,108 @@ +#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 setRowOffsets(int row1, int row2, int row3, int row4); + 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; + uint8_t _row_offsets[4]; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/SPI/SPI.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/SPI/SPI.cpp new file mode 100644 index 000000000..5e48073f7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/libraries/SPI/SPI.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/SPI/SPI.h new file mode 100644 index 000000000..f647d5c89 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/libraries/SPI/keywords.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/SPI/keywords.txt new file mode 100644 index 000000000..fa7616581 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/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.6.x/hardware/marlin/avr/libraries/U8glib/ChangeLog b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/ChangeLog new file mode 100644 index 000000000..9bf4b34ed --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/ChangeLog @@ -0,0 +1,162 @@ + +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 +2013-03-24 v1.12 Oliver Kraus + * Added touch panel examples +2013-06-30 v1.13 Oliver Kraus + * Fixed missing "Arduino.h" in u8g_delay.c + * Disable interrupt for port/pin access (AVR), issue 19 + * Support for HT1632: U8GLIB_HT1632_24X16 u8g(wr, data, cs), issue 165 + * Support for SSD1351 OLED, issue 168 + * Cleaned up several compiler warnings + * Fixed conflict with scheduler (Arduino Due), issue 155 + * HW SPI for Arduino Due, issue 180 + * Performance improvement for ST7920, issue 177 + * Added ":" to the "n"umeric variant of the fonts, issue 166 + * Added additional argument u8g_InitCom(). Use U8G_SPI_CLK_CYCLE_NONE by default. + * Added double buffer option for many ST7565 devices + * Tested with Arduino 1.0.5 +2013-10-03 v1.14 Oliver Kraus + * Support for ARM controller + * Support for the A2 micro printer (issue 191) + * Ellipse drawing primitive (issue 187) + * Added software reset for UC1701 + * Fixed compiler warning (issue 196) + * Support for Freetronics SSD1351 OLED (issue 195) + * Several other fixes and improvements +2014-01-25 v1.15 Oliver Kraus + * Fixed a bug with the rotation procs: Occupied too much flash ROM (issue 219) + * Fixed issue with more than one SPI controller (SW SPI, issue 227) + * Added "drawTriangle" (issue 226) + * Added support for UC1608 (issue 214) + * Added ProFont family of fonts (issue 234) + * SW SPI support for Teensy 3 (issue 230) + * Removed Arduino/AVR specific files from ARM port (issue 209) +2014-07-05 v1.16 Oliver Kraus + * Added support for LD7032 60x32 OLED + * Added support for SSD1306 OLED, which does not send I2C ACK (issue 239) + * Added support for SH1106 128x64 OLED + * Added support for T6963 128x128 displays + * Added U8GLIB_SSD1306_ADAFRUIT_128X64 constructor +2014-12-21 v1.17 Oliver Kraus + * Added U8GLIB_UC1611_DOGM240 constructor (Issue 284) + * Added U8GLIB_UC1611_DOGXL240 constructor + * Added support for UC1608 controller (Issue 300) + * Added U8GLIB_SSD1306_ADAFRUIT_128X64 for Adafruit OLEDs (Issue 289) + * Bufix in the sleep on/off sequence (CS has not been releases, issue 298) + * helvB and helvR number only fonts (Issue 271) + * 400KHz option for I2C with U8G_I2C_OPT_FAST available for Due and Uno (Issue 303) + * I2C support for Arduino Due. 100KHz/400KHz, TWI & TWI1, ACK will be ignored (issue 285) + * Unifont update (Issue 297) + + + + + + \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT new file mode 100644 index 000000000..efcedd03b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/INSTALL.TXT @@ -0,0 +1,26 @@ + +U8GLIB +http://code.google.com/p/u8glib/ + +Install instructions for the Arduino environment. + + 1. Start Arduino IDE + 2. In the Arduino IDE, import the library from the "Add Library" Menu. + +Alternative install instructions for the Arduino environment. + + 1. Unzip u8glib_arduino_vX.XX.zip into the "libraries" folder of the + Arduino install directory + 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.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp new file mode 100644 index 000000000..542fc673a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.cpp @@ -0,0 +1,79 @@ +/* + + 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.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.h new file mode 100644 index 000000000..bff8268dc --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/U8glib.h @@ -0,0 +1,1268 @@ +/* + + 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, u8g_com_fnptr com_fn) + { prepare(); u8g_InitComFn(&u8g, dev, com_fn); } + 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 setColorEntry(uint8_t color_index, uint8_t r, uint8_t g, uint8_t b) { u8g_SetColorEntry(&u8g, color_index, r, g, b); } + void setHiColor(uint16_t rgb) { u8g_SetHiColor(&u8g, rgb); } + void setHiColorByRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetHiColorByRGB(&u8g, r, g, b); } + void setRGB(uint8_t r, uint8_t g, uint8_t b) { u8g_SetRGB(&u8g, r, g, b); } + + 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); } + + void drawEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawEllipse(&u8g, x0, y0, rx, ry, opt); } + void drawFilledEllipse(u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t opt = U8G_DRAW_ALL) { u8g_DrawFilledEllipse(&u8g, x0, y0, rx, ry, opt); } + + void drawTriangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2) + { u8g_DrawTriangle(&u8g, x0, y0, x1, y1, x2, y2); } + + + + /* 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_DOGS102_2X : public U8GLIB +{ + public: + U8GLIB_DOGS102_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGS102_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_dogs102_2x_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_MINI12864_2X : public U8GLIB +{ + public: + U8GLIB_MINI12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_MINI12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1701_mini12864_2x_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_NHD_C12832_USART : public U8GLIB +{ + public: + U8GLIB_NHD_C12832_USART(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12832_hw_usart_spi, cs, a0, 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) + { } + U8GLIB_DOGM128(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_dogm128_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_DOGM128_2X : public U8GLIB +{ + public: + U8GLIB_DOGM128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_DOGM128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_dogm128_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_DOGM128_2X(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_dogm128_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, 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_LM6059_2X : public U8GLIB +{ + public: + U8GLIB_LM6059_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6059_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6059_2x_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_LM6063_2X : public U8GLIB +{ + public: + U8GLIB_LM6063_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LM6063_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_lm6063_2x_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) + { } + U8GLIB_64128N(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_64128n_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + +class U8GLIB_64128N_2X : public U8GLIB +{ + public: + U8GLIB_64128N_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_64128N_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_64128n_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_64128N_2X(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_64128n_2x_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, 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_NHD_C12864_2X : public U8GLIB +{ + public: + U8GLIB_NHD_C12864_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_NHD_C12864_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7565_nhd_c12864_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1601_C128032 : public U8GLIB +{ + public: + U8GLIB_UC1601_C128032(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1601_C128032(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1601_C128032_2X : public U8GLIB +{ + public: + U8GLIB_UC1601_C128032_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1601_C128032_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1601_c128032_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X64 : public U8GLIB +{ + public: + U8GLIB_UC1608_240X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X64_2X : public U8GLIB +{ + public: + U8GLIB_UC1608_240X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x64_2x_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X128 : public U8GLIB +{ + public: + U8GLIB_UC1608_240X128(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X128(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1608_240X128_2X : public U8GLIB +{ + public: + U8GLIB_UC1608_240X128_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1608_240X128_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1608_240x128_2x_hw_spi, cs, a0, reset) + { } +}; + + +class U8GLIB_UC1611_DOGM240 : public U8GLIB +{ + public: + U8GLIB_UC1611_DOGM240(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_i2c, options) + {} + U8GLIB_UC1611_DOGM240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1611_DOGM240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogm240_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_UC1611_DOGXL240 : public U8GLIB +{ + public: + U8GLIB_UC1611_DOGXL240(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_i2c, options) + {} + U8GLIB_UC1611_DOGXL240(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_UC1611_DOGXL240(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_uc1611_dogxl240_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_CUSTOM_1X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_CUSTOM_1X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = 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_128X64_CUSTOM_4X : public U8GLIB +{ + public: + U8GLIB_ST7920_128X64_CUSTOM_4X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_st7920_128x64_4x_custom, sck, mosi, cs, U8G_PIN_NONE, reset) // a0 = 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/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) + { } + U8GLIB_NHD31OLED_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_ssd1322_nhd31oled_bw_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, 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) + { } + U8GLIB_NHD31OLED_GR(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_ssd1322_nhd31oled_gr_parallel, d0, d1, d2, d3, d4, d5, d6, d7, U8G_PIN_NONE, cs, U8G_PIN_NONE, di, rw, 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_SSD1306_ADAFRUIT_128X64 : public U8GLIB +{ + public: + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_ADAFRUIT_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_adafruit_128x64_i2c, options) + { } +}; + + +class U8GLIB_SSD1306_128X64_2X : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x64_2x_i2c, options) + { } +}; + +class U8GLIB_SH1106_128X64 : public U8GLIB +{ + public: + U8GLIB_SH1106_128X64(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_hw_spi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_i2c, options) + { } +}; + +class U8GLIB_SH1106_128X64_2X : public U8GLIB +{ + public: + U8GLIB_SH1106_128X64_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SH1106_128X64_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_sh1106_128x64_2x_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_SSD1306_128X32_2X : public U8GLIB +{ + public: + U8GLIB_SSD1306_128X32_2X(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32_2X(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_hw_spi, cs, a0, reset) + { } + U8GLIB_SSD1306_128X32_2X(uint8_t options = U8G_I2C_OPT_NONE) + : U8GLIB(&u8g_dev_ssd1306_128x32_2x_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_LD7032_60x32 : public U8GLIB +{ + public: + U8GLIB_LD7032_60x32(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ld7032_60x32_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_LD7032_60x32(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ld7032_60x32_hw_spi, cs, a0, reset) + { } + U8GLIB_LD7032_60x32(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_ld7032_60x32_parallel, d0, d1, d2, d3, d4, d5, d6, d7, en, cs1, U8G_PIN_NONE, di, rw, reset) + { } +}; + + + +class U8GLIB_HT1632_24X16 : public U8GLIB +{ + public: + U8GLIB_HT1632_24X16(uint8_t wr, uint8_t data, uint8_t cs) + : U8GLIB(&u8g_dev_ht1632_24x16, wr, data, cs, U8G_PIN_NONE, U8G_PIN_NONE) + { } +}; + + + +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) + { } + U8GLIB_PCF8812(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcf8812_96x65_hw_spi, 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) + { } + U8GLIB_PCD8544(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_pcd8544_84x48_hw_spi, 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_128X128 : public U8GLIB +{ + public: + U8GLIB_T6963_128X128(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_128x128_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_SSD1351_128X128_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_4X_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_4X_332 : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_4X_332(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_4X_332(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_332_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_IDX : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_IDX(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_idx_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_IDX(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_idx_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128_4X_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_hicolor_hw_spi, cs, a0, reset) + { } +}; + +class U8GLIB_SSD1351_128X128GH_4X_HICOLOR : public U8GLIB +{ + public: + U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t sck, uint8_t mosi, uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi, sck, mosi, cs, a0, reset) + { } + U8GLIB_SSD1351_128X128GH_4X_HICOLOR(uint8_t cs, uint8_t a0, uint8_t reset = U8G_PIN_NONE) + : U8GLIB(&u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi, cs, a0, 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.6.x/hardware/marlin/avr/libraries/U8glib/examples/A2Printer/A2Printer.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/A2Printer/A2Printer.ino new file mode 100644 index 000000000..d40bd791b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/A2Printer/A2Printer.ino @@ -0,0 +1,131 @@ +/* + + A2Printer.pde + + Special example code for the A2 Mciro Printer (https://www.sparkfun.com/products/10438) + + + Universal 8bit Graphics Library, http://code.google.com/p/u8glib/ + + 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. + +*/ + + +#include "U8glib.h" + +// use this serial interface +#define PRINTER_SERIAL Serial +// #define PRINTER_SERIAL Serial1 + + +uint8_t u8g_com_uart(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) { + switch(msg) { + case U8G_COM_MSG_WRITE_BYTE: + PRINTER_SERIAL.write(arg_val); + break; + } + return 1; +} + +// setup u8g object, please remove comment from one of the following constructor calls + +// half resolution +//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x120_ds, (u8g_com_fnptr)u8g_com_uart); + +// full resolution, requires to uncomment U8G_16BIT in u8g.h +//U8GLIB u8g(&u8g_dev_a2_micro_printer_384x240, (u8g_com_fnptr)u8g_com_uart); + +// half resolution, extra log, requires to uncomment U8G_16BIT in u8g.h +//U8GLIB u8g(&u8g_dev_a2_micro_printer_192x360_ds, (u8g_com_fnptr)u8g_com_uart); +U8GLIB u8g(&u8g_dev_a2_micro_printer_192x720_ds, (u8g_com_fnptr)u8g_com_uart); + + + +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) { + // graphic commands to redraw the complete screen should be placed here + + drawLogo(0); + drawURL(); + u8g.drawFrame(0,0,u8g.getWidth(), u8g.getHeight()); + + u8g.setFont(u8g_font_helvR24r); + u8g.setPrintPos(0, 100); + u8g.print(u8g.getWidth(), DEC); + u8g.print("x"); + u8g.print(u8g.getHeight(), DEC); +} + +void setup(void) { + PRINTER_SERIAL.begin(19200); + + // flip screen, if required + // u8g.setRot180(); + + // assign default color value + u8g.setColorIndex(1); // pixel on +} + +void loop(void) { + + // picture loop: This will print the picture + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // send manual CR to the printer + PRINTER_SERIAL.write('\n'); + + // reprint the picture after 10 seconds + delay(10000); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.ino new file mode 100644 index 000000000..e9a30e2d1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Bitmap/Bitmap.ino @@ -0,0 +1,166 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.ino new file mode 100644 index 000000000..eeebe4ac2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Chess/Chess.ino @@ -0,0 +1,216 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +// 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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Color/Color.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Color/Color.ino new file mode 100644 index 000000000..a389e3224 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Color/Color.ino @@ -0,0 +1,201 @@ +/* + + Color.pde + + "Hello World!" example code with color. + + >>> 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +void draw(void) { + + if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) { + /* draw background (area is 128x128) */ + u8g_uint_t r, g, b; + for( b = 0; b < 4; b++ ) + { + for( g = 0; g < 32; g++ ) + { + for( r = 0; r < 32; r++ ) + { + u8g.setRGB(r<<3, g<<3, b<<4 ); + u8g.drawPixel(g + b*32, r); + u8g.setRGB(r<<3, g<<3, (b<<4)+64 ); + u8g.drawPixel(g + b*32, r+32); + u8g.setRGB(r<<3, g<<3, (b<<4)+128 ); + u8g.drawPixel(g + b*32, r+32+32); + u8g.setRGB(r<<3, g<<3, (b<<4)+128+64 ); + u8g.drawPixel(g + b*32, r+32+32+32); + } + } + } + } + + // 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 + } + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + u8g.setFont(u8g_font_unifont); + 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); + +} + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.ino new file mode 100644 index 000000000..70e0e2f09 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Console/Console.ino @@ -0,0 +1,266 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +// 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.6.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.ino new file mode 100644 index 000000000..4393ddfe4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/F/F.ino @@ -0,0 +1,175 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/FPS/FPS.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/FPS/FPS.ino new file mode 100644 index 000000000..bcf93cd5b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/FPS/FPS.ino @@ -0,0 +1,398 @@ +/* + + FPS.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. + + ST7920_192X32, SPI: FPS: Box=7.6 @=9.8 iFPS: Box=11.4 @=14.7 + ST7920_192X32, 8Bit: FPS: Box=6.2 @=7.5 iFPS: Box=9.3 @=11.2 + DOGM128 SW SPI: FPS: Box=5.1 @=5.9 Pix=2.6 iFPS: Box=10.2 @=11.8 Pix=5.2 + DOGM128 HW SPI: FPS: Box=5.5 @=6.3 iFPS: Box=11.0 @=12.6 + DOGXL160 SW SPI: FPS: Box=1.7 @=1.9 iFPS: Box=6.9 @=7.7 + DOGXL160 HW SPI: FPS: Box=1.8 @=2.1 + + NHD27OLED_BW, SW SPI: FPS: Box=3.0 @=3.7 + NHD27OLED_BW, HW SPI: FPS: Box=3.5 @=4.5 + NHD27OLED_2X_BW, SW SPI: FPS: Box=3.8 @=4.9 + NHD27OLED_2X_BW, HW SPI: FPS: Box=4.6 @=6.4 + + 30 Sep 2012 + NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.9 @=4.4 NEW_CODE + NHD27OLED_BW, SW SPI: FPS: Clip=9.2 Box=3.6 @=4.5 + NHD27OLED_BW, HW SPI: FPS: Clip=16.3 Box=4.7 @=5.6 + NHD27OLED_2X_BW, SW SPI: FPS: Clip=9.7 Box=4.5 @=5.8 + NHD27OLED_2X_BW, SW SPI: FPS: Clip=18.0 Box=5.8 @=7.9 + + 1 Oct 2012 + ST7920_192X32, 8Bit: FPS: Box=7.2 @=10.0 + DOGM128 SW SPI: FPS: Box=5.2 @=6.6 Pix=2.6 + DOGM128 HW SPI: FPS: Clip=33.2 Box=5.5 @=7.1 + DOGXL160 SW SPI: FPS: Box=1.7 @=2.0 + DOGXL160 HW SPI: FPS: Box=1.8 @=2.2 + + DOGXL160 GR SW SPI: FPS: Box=1.1 @=1.3 + + 1 Mar 2013 + ST7920_192X32_1X, SPI: FPS: Clip=10.3 Box=5.5 @=7.2 Pix=3.9 + ST7920_192X32_4X, SPI: FPS: Clip=10.9 Box=6.7 @=8.8 Pix=7.4 + ST7920_192X32_1X, 8Bit: FPS: Clip=14.2 Box=6.1 @=8.4 Pix=4.2 + ST7920_192X32_4X, 8Bit: FPS: Clip=14.2 Box=7.8 @=10.7 Pix=8.7 + ST7920_192X32_1X, HW SPI: FPS: Clip=14.2 Box=6.3 @=8.7 Pix=4.3 + ST7920_192X32_4X, HW SPI: FPS: Clip=15.3 Box=8.0 @=11.2 Pix=9.0 + + 2 Jun 2013 + U8GLIB_DOGM128 SW SPI: FPS: Clip=23.9 Box=4.5 @=6.6 Pix=2.1 + U8GLIB_DOGM128_2X SW SPI: FPS: Clip=28.5 Box=6.6 @=9.7 Pix=3.9 + U8GLIB_DOGM128_2X HW SPI: FPS: Clip=40.8 Box=7.1 @=10.8 Pix=4.1 + + 3 Jun 2013 + U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=11.0 Box=5.4 @=7.1 Pix=3.9 Size=11828 + U8GLIB_ST7920_192X32_1X -O3 SW SPI FPS: Clip=10.9 Box=5.6 @=7.5 Pix=4.0 Size=13800 + U8GLIB_ST7920_192X32_1X -Os SW SPI FPS: Clip=16.8 Box=6.7 @=9.6 Pix=4.5 Size=11858 (new seq data output) + U8GLIB_ST7920_192X32_1X -Os HW SPI FPS: Clip=25.7 Box=7.5 @=11.3 Pix=4.8 (new seq data output) + + 6 Jun 2013 + U8GLIB_DOGS102 u8g(13, 11, 10, 9); STD SW SPI FPS: Clip=9.5 Box=7.6 @=8.2 Pix=6.2 Size=15652 + U8GLIB_DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=12.8 @=14.0 Pix=9.2 Size=15532 + + + 12 Jun 2013 + SSD1351_128X128_332 SW SPI Clip=1.3 Box=0.7 @=0.9 Pix=0.4 + SSD1351_128X128_332 HW SPI Clip=3.6 Box=1.1 @=1.5 Pix=0.5 + + 24 Jun 2013 + Uno SSD1351_128X128_332 SW SPI Clip=1.4 Box=0.8 @=0.9 Pix=0.4 + + Uno SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5 + Uno SSD1351_128X128_HICOLOR HW SPI Clip=3.7 Box=0.8 @=1.0 Pix=0.3 + + Mega2560 SSD1351_128X128_332 HW SPI Clip=4.4 Box=1.2 @=1.6 Pix=0.5 + Mega2560 SSD1351_128X128_4X_332 HW SPI Clip=4.6 Box=2.3 @=2.8 Pix=1.5 + Mega2560 SSD1351_128X128_HICOLOR HW SPI Clip=3.6 Box=0.8 @=1.0 Pix=0.3 + Mega2560 SSD1351_128X128_4X_HICOLOR HW SPI Clip=4.2 Box=1.7 @=2.1 Pix=1.0 + + Due SSD1351_128X128_332 HW SPI Clip=24.6 Box=6.3 @=7.8 Pix=2.8 + Due SSD1351_128X128_4X_332 HW SPI Clip=28.1 Box=13.0 @=15.1 Pix=8.5 + Due SSD1351_128X128_HICOLOR HW SPI Clip=20.8 Box=3.4 @=4.5 Pix=1.4 + Due SSD1351_128X128_4X_HICOLOR HW SPI Clip=26.3 Box=8.9 @=11.1 Pix=4.8 + + Due SSD1351_128X128_4X_HICOLOR SW SPI Clip=0.4 Box=0.4 @=0.4 Pix=0.4 + + Due DOGS102 u8g(13, 11, 10, 9); SW SPI FPS: Clip=19.1 Box=13.1 @=14.3 Pix=9.4 + Due DOGS102 u8g(10, 9); HW SPI FPS: Clip=128.9 Box=30.7 @=40.6 Pix=15.4 + + Due NHD27OLED_BW u8g(10, 9) HW SPI FPS: Clip=53.0 Box=19.6 @=23.8 Pix=10.6 + Due NHD27OLED_2X_BW u8g(10, 9) HW SPI FPS: Clip=57.0 Box=25.3 @=31.7 Pix=18.1 + Due NHD27OLED_GR u8g(10, 9) HW SPI FPS: Clip=34.1 Box=11.7 @=13.7 Pix=5.6 + Due NHD27OLED_2X_GR u8g(10, 9) HW SPI FPS: Clip=38.1 Box=15.5 @=20.0 Pix=8.8 + +*/ + + +#include "U8glib.h" + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +#define SECONDS 10 +uint8_t flip_color = 0; +uint8_t draw_color = 1; + +void draw_set_screen(void) { + // graphic commands to redraw the complete screen should be placed here + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + if ( flip_color == 0 ) + u8g.setHiColorByRGB(0,0,0); + else + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(flip_color); + } + u8g.drawBox( 0, 0, u8g.getWidth(), u8g.getHeight() ); +} + +void draw_clip_test(void) { + u8g_uint_t i, j, k; + char buf[3] = "AB"; + k = 0; + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_6x10); + + for( i = 0; i < 6; i++ ) { + for( j = 1; j < 8; j++ ) { + u8g.drawHLine(i-3, k, j); + u8g.drawHLine(i-3+10, k, j); + + u8g.drawVLine(k+20, i-3, j); + u8g.drawVLine(k+20, i-3+10, j); + + k++; + } + } + u8g.drawStr(0-3, 50, buf); + u8g.drawStr180(0+3, 50, buf); + + u8g.drawStr(u8g.getWidth()-3, 40, buf); + u8g.drawStr180(u8g.getWidth()+3, 40, buf); + + u8g.drawStr90(u8g.getWidth()-10, 0-3, buf); + u8g.drawStr270(u8g.getWidth()-10, 3, buf); + + u8g.drawStr90(u8g.getWidth()-20, u8g.getHeight()-3, buf); + u8g.drawStr270(u8g.getWidth()-20, u8g.getHeight()+3, buf); + +} + +void draw_char(void) { + char buf[2] = "@"; + u8g_uint_t i, j; + // graphic commands to redraw the complete screen should be placed here + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_6x10); + j = 8; + for(;;) { + i = 0; + for(;;) { + u8g.drawStr( i, j, buf); + i += 8; + if ( i > u8g.getWidth() ) + break; + } + j += 8; + if ( j > u8g.getHeight() ) + break; + } + +} + +void draw_pixel(void) { + u8g_uint_t x, y, w2, h2; + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + w2 = u8g.getWidth(); + h2 = u8g.getHeight(); + w2 /= 2; + h2 /= 2; + for( y = 0; y < h2; y++ ) { + for( x = 0; x < w2; x++ ) { + if ( (x + y) & 1 ) { + u8g.drawPixel(x,y); + u8g.drawPixel(x,y+h2); + u8g.drawPixel(x+w2,y); + u8g.drawPixel(x+w2,y+h2); + } + } + } +} + +// returns unadjusted FPS +uint16_t picture_loop_with_fps(void (*draw_fn)(void)) { + uint16_t FPS10 = 0; + uint32_t time; + + time = millis() + SECONDS*1000; + + // picture loop + do { + u8g.firstPage(); + do { + draw_fn(); + } while( u8g.nextPage() ); + FPS10++; + flip_color = flip_color ^ 1; + } while( millis() < time ); + return FPS10; +} + +const char *convert_FPS(uint16_t fps) { + static char buf[6]; + strcpy(buf, u8g_u8toa( (uint8_t)(fps/10), 3)); + buf[3] = '.'; + buf[4] = (fps % 10) + '0'; + buf[5] = '\0'; + return buf; +} + +void show_result(const char *s, uint16_t fps) { + // assign default color value + if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } + else { + u8g.setColorIndex(draw_color); + } + u8g.setFont(u8g_font_8x13B); + u8g.firstPage(); + do { + u8g.drawStr(0,12, s); + u8g.drawStr(0,24, convert_FPS(fps)); + } while( u8g.nextPage() ); +} + +void setup(void) { + // flip screen, if required + // u8g.setRot180(); + + // assign default color value + if ( u8g.getMode() == U8G_MODE_R3G3B2 ) + draw_color = 255; // white + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + draw_color = 3; // max intensity + else if ( u8g.getMode() == U8G_MODE_BW ) + draw_color = 1; // pixel on + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } +} + +void loop(void) { + uint16_t fps; + fps = picture_loop_with_fps(draw_clip_test); + show_result("draw clip test", fps); + delay(5000); + fps = picture_loop_with_fps(draw_set_screen); + show_result("clear screen", fps); + delay(5000); + fps = picture_loop_with_fps(draw_char); + show_result("draw @", fps); + delay(5000); + fps = picture_loop_with_fps(draw_pixel); + show_result("draw pixel", fps); + delay(5000); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino new file mode 100644 index 000000000..f159b8ddc --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/GraphicsTest/GraphicsTest.ino @@ -0,0 +1,300 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +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_triangle(uint8_t a) { + uint16_t offset = a; + u8g.drawStr( 0, 0, "drawTriangle"); + u8g.drawTriangle(14,7, 45,30, 10,40); + u8g.drawTriangle(14+offset,7-offset, 45+offset,30-offset, 57+offset,10-offset); + u8g.drawTriangle(57+offset*2,10, 45+offset*2,30, 86+offset*2,53); + u8g.drawTriangle(10+offset,40+offset, 45+offset,30+offset, 86+offset,53+offset); +} + +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); + } + } +} + +void u8g_extra_page(uint8_t a) +{ + if ( u8g.getMode() == U8G_MODE_HICOLOR || u8g.getMode() == U8G_MODE_R3G3B2) { + /* draw background (area is 128x128) */ + u8g_uint_t r, g, b; + b = a << 5; + for( g = 0; g < 64; g++ ) + { + for( r = 0; r < 64; r++ ) + { + u8g.setRGB(r<<2, g<<2, b ); + u8g.drawPixel(g, r); + } + } + u8g.setRGB(255,255,255); + u8g.drawStr( 66, 0, "Color Page"); + } + else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) + { + u8g.drawStr( 66, 0, "Gray Level"); + u8g.setColorIndex(1); + u8g.drawBox(0, 4, 64, 32); + u8g.drawBox(70, 20, 4, 12); + u8g.setColorIndex(2); + u8g.drawBox(0+1*a, 4+1*a, 64-2*a, 32-2*a); + u8g.drawBox(74, 20, 4, 12); + u8g.setColorIndex(3); + u8g.drawBox(0+2*a, 4+2*a, 64-4*a, 32-4*a); + u8g.drawBox(78, 20, 4, 12); + } + else + { + u8g.drawStr( 0, 12, "setScale2x2"); + u8g.setScale2x2(); + u8g.drawStr( 0, 6+a, "setScale2x2"); + u8g.undoScale(); + } +} + + +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_triangle(draw_state&7); break; + case 6: u8g_ascii_1(); break; + case 7: u8g_ascii_2(); break; + case 8: u8g_extra_page(draw_state&7); break; + } +} + +void setup(void) { + + // flip screen, if required + //u8g.setRot180(); + + + 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 >= 9*8 ) + draw_state = 0; + + // rebuild the picture after some delay + //delay(150); + +} + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.ino new file mode 100644 index 000000000..f71bf8e4f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/HelloWorld/HelloWorld.ino @@ -0,0 +1,177 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +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 + } + else if ( u8g.getMode() == U8G_MODE_HICOLOR ) { + u8g.setHiColorByRGB(255,255,255); + } +} + +void loop(void) { + // picture loop + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + + // rebuild the picture after some delay + delay(50); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.ino new file mode 100644 index 000000000..d8ab6f0df --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Menu/Menu.ino @@ -0,0 +1,273 @@ +/* + + 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 + +// setup u8g object, please remove comment from one of the following constructor calls +// IMPORTANT NOTE: The following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +#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.6.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.ino new file mode 100644 index 000000000..edc9afa8c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/PrintTest/PrintTest.ino @@ -0,0 +1,160 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.ino new file mode 100644 index 000000000..f4008138b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Rotation/Rotation.ino @@ -0,0 +1,188 @@ +/* + + Rotation.pde + + Example code for RotXXX functions. + + >>> 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.ino new file mode 100644 index 000000000..5fc5d331f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Scale/Scale.ino @@ -0,0 +1,177 @@ +/* + + Scale.pde + + Example code for the 2x2 scale function. + + >>> 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.ino new file mode 100644 index 000000000..352780828 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/TextRotX/TextRotX.ino @@ -0,0 +1,190 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +// 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.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino new file mode 100644 index 000000000..9ce10e941 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WSetup/Touch4WSetup.ino @@ -0,0 +1,348 @@ +/* + + Touch4WSetup.pde + + Use this example to figure out the ranges for of the active area of a 4-wire resistive + touch panel. + + >>> 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +//================================================================ +// Setup 4-Wire Resistive Touch Panel + +uint8_t tp_left = A3; +uint8_t tp_right = A5; +uint8_t tp_top = A4; +uint8_t tp_bottom = A2; + +#define X_START 120 +#define X_END 140 +#define Y_START 120 +#define Y_END 140 + +#define PULLUP_THRESHOLD 235 + +//================================================================ +// Touch Panel Code + +/* touch panel dimension */ +struct tpd_struct +{ + /* raw value */ + uint8_t raw; + + /* calibration values */ + uint8_t start; + uint8_t end; + + /* user values */ + uint8_t range; /* result will have range fron 0..range (including the value of range) */ + + uint8_t result; /* output value: position [0...range] */ + uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */ + uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */ +}; + +struct tp_struct +{ + struct tpd_struct x; + struct tpd_struct y; + uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */ + uint8_t is_update; +}; + +struct tp_struct tp; + +/* map raw value to 0...range (result) */ +void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw) +{ + uint8_t is_pressed; + uint16_t p; + uint8_t start, end; + + d->raw = raw; + + start = d->start; + end = d->end; + + /* check if position is within active area; store result in "is_pressed" */ + is_pressed = 1; + if ( raw >= PULLUP_THRESHOLD ) + { + d->result = 0; + is_pressed = 0; + } + else + { + /* update start and end */ + if ( raw < start ) + { + start = raw; + d->start = raw; + } + if ( raw > end ) + { + end = raw; + d->end = raw; + } + } + + /* store "is_pressed" in the global structure, set update flag */ + if ( d->is_pressed != is_pressed ) + d->is_update = 1; + d->is_pressed = is_pressed; + + /* map "raw" value into target range */ + if ( is_pressed != 0 ) + { + p = raw; + p -= start; + p *= d->range; + end -= start; + p /= end; + + if ( d->result != p ) + d->is_update = 1; + d->result = p; + } +} + +void tp_Init(uint8_t width, uint8_t height) +{ + tp.x.start = X_START; + tp.x.end = X_END; + tp.x.range = width-1; + + tp.y.start = Y_START; + tp.y.end = Y_END; + tp.y.range = height-1; + + tp.is_update = 1; +} + +void setTouchRawValues(uint8_t x, uint8_t y) +{ + tpd_map_touch_position(&(tp.x), x); + tpd_map_touch_position(&(tp.y), y); + + tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed; + if ( tp.x.is_update || tp.y.is_update ) + tp.is_update = 1; +} + + +uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin) +{ + uint8_t val; + pinMode(dcPin, INPUT); + pinMode(sensePin, INPUT_PULLUP); + pinMode(hiPin, OUTPUT); + pinMode(lowPin, OUTPUT); + + digitalWrite(hiPin, HIGH); + digitalWrite(lowPin, LOW); + delay(10); + val = analogRead(sensePin) >> 2; + pinMode(hiPin, INPUT); + pinMode(lowPin, INPUT); + delay(10); + return val; +} + +void updateTouchPanel(void) +{ + uint8_t tp_raw_x; + uint8_t tp_raw_y; + + tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top); + tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right); + + setTouchRawValues(tp_raw_x, tp_raw_y); +} + +//================================================================ +// graphics output and picture loop + +void center(u8g_uint_t y, const char *str) +{ + u8g_uint_t x; + x = u8g.getWidth(); + x -= u8g.getStrWidth(str); + x /= 2; + u8g.drawStr(x, y, str); +} + + +void draw(void) { + u8g.setFont(u8g_font_6x10); + center( 10, "Touch Panel Setup"); + u8g.setPrintPos(0, 20); u8g.print("x_start=");u8g.print((int)tp.x.start);u8g.print(" x_end=");u8g.print((int)tp.x.end); + u8g.setPrintPos(0, 30); u8g.print("y_start=");u8g.print((int)tp.y.start);u8g.print(" y_end=");u8g.print((int)tp.y.end); + u8g.setPrintPos(0, 40); u8g.print("x=");u8g.print((int)tp.x.raw); + u8g.setPrintPos(0, 50); u8g.print("y=");u8g.print((int)tp.y.raw); +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + u8g.setCursorFont(u8g_font_cursor); + u8g.setCursorStyle(32); + + tp_Init(u8g.getWidth(), u8g.getHeight()); + + tp.is_update = 1; +} + +void loop(void) { + + // update touch panel and handle return values + updateTouchPanel(); + + if ( tp.is_pressed != 0 ) + u8g.enableCursor(); + else + u8g.disableCursor(); + + u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1); + + // picture loop + if ( tp.is_update != 0 ) + { + tp.is_update = 0; + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + } + +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino new file mode 100644 index 000000000..ebe15838f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/Touch4WTest/Touch4WTest.ino @@ -0,0 +1,335 @@ +/* + + Touch4WTest.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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +//================================================================ +// Setup 4-Wire Resistive Touch Panel + +uint8_t tp_left = A3; +uint8_t tp_right = A5; +uint8_t tp_top = A4; +uint8_t tp_bottom = A2; + +/* Run "Touch4WSetup" and enter values here */ +#define X_START 64 +#define X_END 200 +#define Y_START 105 +#define Y_END 160 + +//================================================================ +// Touch Panel Code + +/* touch panel dimension */ +struct tpd_struct +{ + /* raw value */ + uint8_t raw; + + /* calibration values */ + uint8_t start; + uint8_t end; + + /* user values */ + uint8_t range; /* result will have range fron 0..range (including the value of range) */ + + uint8_t result; /* output value: position [0...range] */ + uint8_t is_pressed; /* output value: pressed (=1) or not pressed (=0) */ + uint8_t is_update; /* will be set to 1 if result or is_pressed has been updated */ +}; + +struct tp_struct +{ + struct tpd_struct x; + struct tpd_struct y; + uint8_t is_pressed; /* combination of x.is_pressed && y.is_pressed */ + uint8_t is_update; +}; + +struct tp_struct tp; + +/* map raw value to 0...range (result) */ +void tpd_map_touch_position(struct tpd_struct *d, uint8_t raw) +{ + uint8_t is_pressed; + uint16_t p; + uint8_t start, end; + + d->raw = raw; + + start = d->start; + end = d->end; + + /* check if position is within active area; store result in "is_pressed" */ + is_pressed = 1; + if ( raw < start ) + { + d->result = 0; + is_pressed = 0; + } + if ( raw >= end ) + { + d->result = d->range; + is_pressed = 0; + } + + /* store "is_pressed" in the global structure, set update flag */ + if ( d->is_pressed != is_pressed ) + d->is_update = 1; + d->is_pressed = is_pressed; + + /* map "raw" value into target range */ + if ( is_pressed != 0 ) + { + p = raw; + p -= start; + p *= d->range; + end -= start; + p /= end; + + if ( d->result != p ) + d->is_update = 1; + d->result = p; + } +} + +void tp_Init(uint8_t width, uint8_t height) +{ + tp.x.start = X_START; + tp.x.end = X_END; + tp.x.range = width-1; + + tp.y.start = Y_START; + tp.y.end = Y_END; + tp.y.range = height-1; + + tp.is_update = 1; +} + +void setTouchRawValues(uint8_t x, uint8_t y) +{ + tpd_map_touch_position(&(tp.x), x); + tpd_map_touch_position(&(tp.y), y); + + tp.is_pressed = tp.x.is_pressed && tp.y.is_pressed; + if ( tp.x.is_update || tp.y.is_update ) + tp.is_update = 1; +} + + +uint8_t getTouchPos(uint8_t hiPin, uint8_t lowPin, uint8_t sensePin, uint8_t dcPin) +{ + uint8_t val; + pinMode(dcPin, INPUT); + pinMode(sensePin, INPUT_PULLUP); + pinMode(hiPin, OUTPUT); + pinMode(lowPin, OUTPUT); + + digitalWrite(hiPin, HIGH); + digitalWrite(lowPin, LOW); + delay(10); + val = analogRead(sensePin) >> 2; + pinMode(hiPin, INPUT); + pinMode(lowPin, INPUT); + delay(10); + return val; +} + +void updateTouchPanel(void) +{ + uint8_t tp_raw_x; + uint8_t tp_raw_y; + + tp_raw_x = getTouchPos(tp_right, tp_left, tp_bottom, tp_top); + tp_raw_y = getTouchPos(tp_top, tp_bottom, tp_left, tp_right); + + setTouchRawValues(tp_raw_x, tp_raw_y); +} + +//================================================================ +// graphics output and picture loop + +void center(u8g_uint_t y, const char *str) +{ + u8g_uint_t x; + x = u8g.getWidth(); + x -= u8g.getStrWidth(str); + x /= 2; + u8g.drawStr(x, y, str); +} + + +void draw(void) { + u8g.setFont(u8g_font_6x10); + center( 10, "Touch Panel Test"); + if ( tp.is_pressed != 0 ) + { + u8g.setPrintPos(0, 20); u8g.print("x=");u8g.print((int)tp.x.result); + u8g.setPrintPos(0, 30); u8g.print("y=");u8g.print((int)(u8g.getHeight()-tp.y.result-1)); + //u8g.setPrintPos(0, 40); u8g.print("x: ");u8g.print((int)tp.x.start);u8g.print("..");u8g.print((int)tp.x.end); + //u8g.setPrintPos(0, 50); u8g.print("y: ");u8g.print((int)tp.y.start);u8g.print("..");u8g.print((int)tp.y.end); + } +} + +void setup(void) { + + // flip screen, if required + // u8g.setRot180(); + u8g.setCursorFont(u8g_font_cursor); + u8g.setCursorStyle(32); + + tp_Init(u8g.getWidth(), u8g.getHeight()); +} + +void loop(void) { + + // update touch panel and handle return values + updateTouchPanel(); + + if ( tp.is_pressed != 0 ) + u8g.enableCursor(); + else + u8g.disableCursor(); + + u8g.setCursorPos(tp.x.result, u8g.getHeight()-tp.y.result-1); + + // picture loop + if ( tp.is_update != 0 ) { + tp.is_update = 0; + u8g.firstPage(); + do { + draw(); + } while( u8g.nextPage() ); + } + +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.ino new file mode 100644 index 000000000..151542dcf --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/U8gLogo/U8gLogo.ino @@ -0,0 +1,230 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +//#define MINI_LOGO + +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) +{ +#ifdef MINI_LOGO + u8g.setFont(u8g_font_gdr17r); + u8g.drawStr(0+d, 22+d, "U"); + u8g.setFont(u8g_font_gdr20n); + u8g.drawStr90(17+d,8+d,"8"); + u8g.setFont(u8g_font_gdr17r); + u8g.drawStr(39+d,22+d,"g"); + + u8g.drawHLine(2+d, 25+d, 34); + u8g.drawVLine(32+d, 22+d, 12); +#else + 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); +#endif +} + +void drawURL(void) +{ +#ifndef MINI_LOGO + 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"); + } +#endif +} + + +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.6.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.ino new file mode 100644 index 000000000..65b183187 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/examples/XBM/XBM.ino @@ -0,0 +1,172 @@ +/* + + 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 following list is incomplete. The complete list of supported +// devices with all constructor calls 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, 8); // 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_DOGM128_2X 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(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) +//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|U8G_I2C_OPT_DEV_0); // I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI +//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send AC +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SSD1306_ADAFRUIT_128X64 u8g(10, 9); // 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); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_SH1106_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new blue HalTec OLED) +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_FAST); // Dev 0, Fast I2C / TWI +//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK +//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_UC1611_DOGM240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGM240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGM240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//U8GLIB_UC1611_DOGXL240 u8g(U8G_I2C_OPT_NONE); // I2C +//U8GLIB_UC1611_DOGXL240 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 +//U8GLIB_UC1611_DOGXL240 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11) +//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_LD7032_60x32 u8g(13, 11, 10, 9, 8); // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_LD7032_60x32 u8g(11, 12, 9, 10, 8); // SPI Com: SCK = 11, MOSI = 12, CS = 9, A0 = 10, RST = 8 (SW SPI Nano Board) +//U8GLIB_UC1608_240X64 u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(13, 11, 10, 9, 8); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64 u8g(10, 9, 8); // HW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9, RST = 8 +//U8GLIB_UC1608_240X64_2X u8g(10, 9, 8); // HW 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_128X128 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 +//U8GLIB_HT1632_24X16 u8g(3, 2, 4); // WR = 3, DATA = 2, CS = 4 +//U8GLIB_SSD1351_128X128_332 u8g(13, 11, 8, 9, 7); // Arduino UNO: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(76, 75, 8, 9, 7); // Arduino DUE: SW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_332 u8g(8, 9, 7); // Arduino: HW SPI Com: SCK = 13, MOSI = 11, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(76, 75, 8, 9, 7); // Arduino DUE, SW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (http://electronics.ilsoft.co.uk/ArduinoShield.aspx) +//U8GLIB_SSD1351_128X128GH_332 u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) +//U8GLIB_SSD1351_128X128GH_HICOLOR u8g(8, 9, 7); // Arduino, HW SPI Com: SCK = 76, MOSI = 75, CS = 8, A0 = 9, RESET = 7 (Freetronics OLED) + +#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.6.x/hardware/marlin/avr/libraries/U8glib/license.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/license.txt new file mode 100644 index 000000000..f1a9615c7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/license.txt @@ -0,0 +1,81 @@ + +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.6.x/hardware/marlin/avr/libraries/U8glib/utility/chessengine.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/chessengine.c new file mode 100644 index 000000000..f86bf0687 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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 / LOOSE 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h new file mode 100644 index 000000000..afe161fc6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g.h @@ -0,0 +1,1977 @@ +/* + + 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 + +/* uncomment the following line to support displays larger than 240x240 */ +//#define U8G_16BIT 1 + +/* comment the following line to generate more compact but interrupt unsafe code */ +#define U8G_INTERRUPT_SAFE 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 + +/* + use the com interface directly on any systems which are not AVR or ARDUINO +*/ +#if defined(__AVR__) || defined(ARDUINO) +#define U8G_WITH_PINLIST +#endif +#define U8G_WITH_PINLIST + + +#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))) +# if defined(__MSPGCC__) +/* mspgcc does not have .progmem sections. Use -fdata-sections. */ +# define U8G_FONT_SECTION(name) +# endif +# if defined(__AVR__) +# define U8G_FONT_SECTION(name) U8G_SECTION(".progmem." name) +# endif +#else +# define U8G_NOINLINE +# define U8G_PURE +# define U8G_NOCOMMON +# define U8G_SECTION(name) +# define U8G_FONT_SECTION(name) +#endif + +#ifndef U8G_FONT_SECTION +# define U8G_FONT_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 + +/*===============================================================*/ +/* interrupt safe code */ +#if defined(U8G_INTERRUPT_SAFE) +# if defined(__AVR__) +extern uint8_t global_SREG_backup; /* u8g_state.c */ +# define U8G_ATOMIC_START() do { global_SREG_backup = SREG; cli(); } while(0) +# define U8G_ATOMIC_END() SREG = global_SREG_backup +# define U8G_ATOMIC_OR(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) |= (val)); SREG = tmpSREG; } while(0) +# define U8G_ATOMIC_AND(ptr, val) do { uint8_t tmpSREG = SREG; cli(); (*(ptr) &= (val)); SREG = tmpSREG; } while(0) +# else +# define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val)) +# define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val)) +# define U8G_ATOMIC_START() +# define U8G_ATOMIC_END() +# endif /* __AVR__ */ +#else +# define U8G_ATOMIC_OR(ptr, val) (*(ptr) |= (val)) +# define U8G_ATOMIC_AND(ptr, val) (*(ptr) &= (val)) +# define U8G_ATOMIC_START() +# define U8G_ATOMIC_END() +#endif /* U8G_INTERRUPT_SAFE */ + + +/*===============================================================*/ +/* 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; +typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_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; +extern u8g_dev_t u8g_dev_sdl_hicolor; +extern u8g_dev_t u8g_dev_sdl_fullcolor; +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; + +extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_dogs102_2x_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; + +extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1701_mini12864_2x_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; +extern u8g_dev_t u8g_dev_st7565_dogm128_parallel; + +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi; +extern u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel; + +/* EA DOGM 240-6 */ +extern u8g_dev_t u8g_dev_uc1611_dogm240_i2c; +extern u8g_dev_t u8g_dev_uc1611_dogm240_hw_spi; +extern u8g_dev_t u8g_dev_uc1611_dogm240_sw_spi; + +/* EA DOGXL 240 */ +extern u8g_dev_t u8g_dev_uc1611_dogxl240_i2c; +extern u8g_dev_t u8g_dev_uc1611_dogxl240_hw_spi; +extern u8g_dev_t u8g_dev_uc1611_dogxl240_sw_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; +extern u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6059_2x_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; +extern u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_lm6063_2x_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; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_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; +extern u8g_dev_t u8g_dev_st7565_nhd_c12832_hw_usart_spi; + +/* Display: Displaytech 64128N */ +extern u8g_dev_t u8g_dev_st7565_64128n_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_hw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_parallel; + +extern u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi; +extern u8g_dev_t u8g_dev_st7565_64128n_2x_parallel; + +/* Display: LCD-AG-C128032R-DIW W/KK E6 PBF */ +extern u8g_dev_t u8g_dev_uc1601_c128032_sw_spi; +extern u8g_dev_t u8g_dev_uc1601_c128032_hw_spi; + +extern u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi; + +/* East Rising/buy-display.com ERC24064-1 */ +extern u8g_dev_t u8g_dev_uc1608_240x64_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x64_hw_spi; + +extern u8g_dev_t u8g_dev_uc1608_240x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x64_2x_hw_spi; + +/* UC1608 240x128 */ +extern u8g_dev_t u8g_dev_uc1608_240x128_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x128_hw_spi; + +extern u8g_dev_t u8g_dev_uc1608_240x128_2x_sw_spi; +extern u8g_dev_t u8g_dev_uc1608_240x128_2x_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_custom; + +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; +extern u8g_dev_t u8g_dev_st7920_128x64_4x_custom; + +/* 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_128x128_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_pcd8544_84x48_hw_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; +extern u8g_dev_t u8g_dev_pcf8812_96x65_hw_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_bw_parallel; +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_gr_parallel; +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; + +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_adafruit_128x64_i2c; + +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c; + +/* OLED 128x64 Display with SH1106 Controller */ +extern u8g_dev_t u8g_dev_sh1106_128x64_sw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_hw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_i2c; + +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_sw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_hw_spi; +extern u8g_dev_t u8g_dev_sh1106_128x64_2x_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; + +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi; +extern u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c; + +/* OLED 60x32 Display with LD7032 Controller */ +extern u8g_dev_t u8g_dev_ld7032_60x32_sw_spi; +extern u8g_dev_t u8g_dev_ld7032_60x32_hw_spi; +extern u8g_dev_t u8g_dev_ld7032_60x32_parallel; + +/* 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; + + +/* SSD1351 OLED (breakout board from http://www.kickstarter.com/projects/ilsoftltd/colour-oled-breakout-board) */ +extern u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi; + +/* SSD1351 OLED (Freetronics, GPIOs set to high level) */ +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi; +extern u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi; + +/* HT1632 */ +extern u8g_dev_t u8g_dev_ht1632_24x16; + +/* A2 Micro Printer */ +extern u8g_dev_t u8g_dev_a2_micro_printer_384x240; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x120_ds; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x360_ds; +extern u8g_dev_t u8g_dev_a2_micro_printer_192x720_ds; + +/* 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, pixel sequence or transparency value */ + uint8_t dir; + uint8_t color; /* color or index value, red value for true color mode */ + uint8_t hi_color; /* high byte for 64K color mode, low byte is in "color", green value for true color mode */ + uint8_t blue; /* blue value in true color mode */ +}; +/* typedef struct _u8g_dev_arg_pixel_t u8g_dev_arg_pixel_t; */ /* forward decl */ + +/* range for r,g,b: 0..255 */ +#define U8G_GET_HICOLOR_BY_RGB(r,g,b) (((uint16_t)((r)&0x0f8))<<8)|(((uint16_t)((g)&0x0fc))<<3)|(((uint16_t)((b)>>3))) + +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 */ + +struct _u8g_dev_arg_irgb_t +{ + u8g_uint_t idx, r, g, b; /* index with rgb value */ +}; +/* typedef struct _u8g_dev_arg_irgb_t u8g_dev_arg_irgb_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_TPIXEL 44 +#define U8G_DEV_MSG_SET_4TPIXEL 45 + +#define U8G_DEV_MSG_SET_PIXEL 50 +#define U8G_DEV_MSG_SET_8PIXEL 59 + +#define U8G_DEV_MSG_SET_COLOR_ENTRY 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_index_mode, is_color, bits_per_pixel) (((is_index_mode)<<6) | ((is_color)<<5)|(bits_per_pixel)) + +#define U8G_MODE_UNKNOWN 0 +#define U8G_MODE_BW U8G_MODE(0, 0, 1) +#define U8G_MODE_GRAY2BIT U8G_MODE(0, 0, 2) +#define U8G_MODE_R3G3B2 U8G_MODE(0, 1, 8) +#define U8G_MODE_INDEX U8G_MODE(1, 1, 8) +/* hicolor is R5G6B5 */ +#define U8G_MODE_HICOLOR U8G_MODE(0, 1, 16) +/* truecolor */ +#define U8G_MODE_TRUECOLOR U8G_MODE(0, 1, 24) + + +#define U8G_MODE_GET_BITS_PER_PIXEL(mode) ((mode)&31) +#define U8G_MODE_IS_COLOR(mode) (((mode)&32)==0?0:1) +#define U8G_MODE_IS_INDEX_MODE(mode) (((mode)&64)==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_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_atmega_hw_usart_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_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_arduino_ATTiny85_std_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_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_arduino_st7920_custom.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_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); +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 */ + +uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_rasperrypi_hw_spi.c */ +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr); /* u8g_com_raspberrypi_ssd_i2c.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 + U8G_COM_UC_I2C + +defined(__18CXX) || defined(__PIC32MX) + +*/ + +/* ==== HW SPI, Raspberry PI ====*/ +#if defined(U8G_RASPBERRY_PI) +#define U8G_COM_HW_SPI u8g_com_raspberrypi_hw_spi_fn +#define U8G_COM_SW_SPI u8g_com_null_fn + +/* I'm sure there must be some mad reason for needing this */ +#define U8G_COM_ST7920_SW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#endif + +/* ==== HW SPI, Arduino ====*/ +#if defined(ARDUINO) +#if defined(__AVR__) + +#if defined(__AVR_ATtiny85__) +#define U8G_COM_HW_SPI u8g_com_arduino_ATtiny85_std_hw_spi_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#else + +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_fn +#if defined(__AVR_ATmega32U4__) +#define U8G_COM_HW_USART_SPI u8g_com_arduino_hw_usart_spi_fn +#endif /* __AVR_ATmega32U4__ */ +#define U8G_COM_ST7920_HW_SPI u8g_com_arduino_st7920_hw_spi_fn +#endif /* __AVR_ATtiny85__ */ + +#elif defined(__18CXX) || defined(__PIC32MX) +#define U8G_COM_HW_SPI u8g_com_null_fn +#define U8G_COM_ST7920_HW_SPI u8g_com_null_fn +#elif defined(__SAM3X8E__) /* Arduino Due */ +#define U8G_COM_HW_SPI u8g_com_arduino_hw_spi_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 +#ifndef U8G_COM_HW_USART_SPI +#define U8G_COM_HW_USART_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(__SAM3X8E__) /* Arduino Due */ +//#define U8G_COM_SW_SPI u8g_com_arduino_std_sw_spi_fn +#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__) /* Teensy */ +#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 interface, 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 +#define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn +#endif +#endif + +#ifndef U8G_COM_SSD_I2C +#if defined(__AVR__) || defined(__SAM3X8E__) +/* AVR variant and also DUE 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 +#if defined(U8G_RASPBERRY_PI) +#define U8G_COM_SSD_I2C u8g_com_raspberrypi_ssd_i2c_fn +#endif +#endif + +#ifndef U8G_COM_SSD_I2C +#define U8G_COM_SSD_I2C u8g_com_null_fn +#endif + +#ifndef U8G_COM_UC_I2C +#if defined(__AVR__) +/* AVR variant can use the arduino version at the moment */ +#define U8G_COM_UC_I2C u8g_com_arduino_uc_i2c_fn +#endif +#endif +#ifndef U8G_COM_UC_I2C +#define U8G_COM_UC_I2C u8g_com_null_fn +#endif + + +/*===============================================================*/ +/* com api */ + +#define U8G_SPI_CLK_CYCLE_50NS 1 +#define U8G_SPI_CLK_CYCLE_300NS 2 +#define U8G_SPI_CLK_CYCLE_400NS 3 +#define U8G_SPI_CLK_CYCLE_NONE 255 + +uint8_t u8g_InitCom(u8g_t *u8g, u8g_dev_t *dev, uint8_t clk_cycle_time); +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_pbxh16.c */ +uint8_t u8g_dev_pbxh16_base_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg); + +/* u8g_pbxh24.c */ +uint8_t u8g_dev_pbxh24_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_DUMMY 254 +#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; */ + +#ifdef U8G_WITH_PINLIST + uint8_t pin_list[U8G_PIN_LIST_LEN]; +#endif + + 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); +void u8g_Draw4TPixelLL(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_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn); /* Init procedure for anything which is not Arduino or AVR (e.g. ARM, but not Due, which is Arduino) */ +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); +void u8g_Draw4TPixel(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_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b); +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx); +void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb); +void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b); +void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b); +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_spi(uint8_t msg); /* backup SPI state controller */ +/* backward compatible definition */ +#define u8g_backup_avr_spi u8g_backup_spi + +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_NOINLINE; +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_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s); + +/* 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) U8G_NOINLINE; +void u8g_DrawVLine(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w) U8G_NOINLINE; +void u8g_DrawFrame(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; +void u8g_DrawBox(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h) U8G_NOINLINE; + +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_NOINLINE; +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_NOINLINE; + +/* 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_ellipse.c */ +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option); +void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, 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_polygon.c */ + +typedef int16_t pg_word_t; + +#define PG_NOINLINE U8G_NOINLINE + +struct pg_point_struct +{ + pg_word_t x; + pg_word_t y; +}; + +typedef struct _pg_struct pg_struct; /* forward declaration */ + +struct pg_edge_struct +{ + pg_word_t x_direction; /* 1, if x2 is greater than x1, -1 otherwise */ + pg_word_t height; + pg_word_t current_x_offset; + pg_word_t error_offset; + + /* --- line loop --- */ + pg_word_t current_y; + pg_word_t max_y; + pg_word_t current_x; + pg_word_t error; + + /* --- outer loop --- */ + uint8_t (*next_idx_fn)(pg_struct *pg, uint8_t i); + uint8_t curr_idx; +}; + +/* maximum number of points in the polygon */ +/* can be redefined, but highest possible value is 254 */ +#define PG_MAX_POINTS 6 + +/* index numbers for the pge structures below */ +#define PG_LEFT 0 +#define PG_RIGHT 1 + + +struct _pg_struct +{ + struct pg_point_struct list[PG_MAX_POINTS]; + uint8_t cnt; + uint8_t is_min_y_not_flat; + pg_word_t total_scan_line_cnt; + struct pg_edge_struct pge[2]; /* left and right line draw structures */ +}; + +void pg_ClearPolygonXY(pg_struct *pg); +void pg_AddPolygonXY(pg_struct *pg, u8g_t *u8g, int16_t x, int16_t y); +void pg_DrawPolygon(pg_struct *pg, u8g_t *u8g); +void u8g_ClearPolygonXY(void); +void u8g_AddPolygonXY(u8g_t *u8g, int16_t x, int16_t y); +void u8g_DrawPolygon(u8g_t *u8g); +void u8g_DrawTriangle(u8g_t *u8g, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2); + + +/*===============================================================*/ +/* 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 +#define U8G_I2C_OPT_NO_ACK 2 +#define U8G_I2C_OPT_DEV_0 0 +#define U8G_I2C_OPT_DEV_1 4 +#define U8G_I2C_OPT_FAST 16 + +/* 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; +uint8_t u8g_i2c_send_mode(uint8_t mode) 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_FONT_SECTION("u8g_font_m2icon_5"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_7[] U8G_FONT_SECTION("u8g_font_m2icon_7"); +extern const u8g_fntpgm_uint8_t u8g_font_m2icon_9[] U8G_FONT_SECTION("u8g_font_m2icon_9"); + +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4[] U8G_FONT_SECTION("u8g_font_u8glib_4"); +extern const u8g_fntpgm_uint8_t u8g_font_u8glib_4r[] U8G_FONT_SECTION("u8g_font_u8glib_4r"); + + +extern const u8g_fntpgm_uint8_t u8g_font_6x12_75r[] U8G_FONT_SECTION("u8g_font_6x12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_75r[] U8G_FONT_SECTION("u8g_font_6x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_75r[] U8G_FONT_SECTION("u8g_font_7x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_75r[] U8G_FONT_SECTION("u8g_font_8x13_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_75r[] U8G_FONT_SECTION("u8g_font_9x15_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_75r[] U8G_FONT_SECTION("u8g_font_9x18_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_75r[] U8G_FONT_SECTION("u8g_font_cu12_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_75r[] U8G_FONT_SECTION("u8g_font_unifont_75r"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_75r[] U8G_FONT_SECTION("u8g_font_10x20_75r"); + +extern const u8g_fntpgm_uint8_t u8g_font_10x20_67_75[] U8G_FONT_SECTION("u8g_font_10x20_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20_78_79[] U8G_FONT_SECTION("u8g_font_10x20_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20[] U8G_FONT_SECTION("u8g_font_10x20"); +extern const u8g_fntpgm_uint8_t u8g_font_10x20r[] U8G_FONT_SECTION("u8g_font_10x20r"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6[] U8G_FONT_SECTION("u8g_font_4x6"); +extern const u8g_fntpgm_uint8_t u8g_font_4x6r[] U8G_FONT_SECTION("u8g_font_4x6r"); +//extern const u8g_fntpgm_uint8_t u8g_font_4x6n[] U8G_FONT_SECTION("u8g_font_4x6n"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7[] U8G_FONT_SECTION("u8g_font_5x7"); +extern const u8g_fntpgm_uint8_t u8g_font_5x7r[] U8G_FONT_SECTION("u8g_font_5x7r"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8[] U8G_FONT_SECTION("u8g_font_5x8"); +extern const u8g_fntpgm_uint8_t u8g_font_5x8r[] U8G_FONT_SECTION("u8g_font_5x8r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10[] U8G_FONT_SECTION("u8g_font_6x10"); +extern const u8g_fntpgm_uint8_t u8g_font_6x10r[] U8G_FONT_SECTION("u8g_font_6x10r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_67_75[] U8G_FONT_SECTION("u8g_font_6x12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12_78_79[] U8G_FONT_SECTION("u8g_font_6x12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12[] U8G_FONT_SECTION("u8g_font_6x12"); +extern const u8g_fntpgm_uint8_t u8g_font_6x12r[] U8G_FONT_SECTION("u8g_font_6x12r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_67_75[] U8G_FONT_SECTION("u8g_font_6x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13_78_79[] U8G_FONT_SECTION("u8g_font_6x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13B[] U8G_FONT_SECTION("u8g_font_6x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Br[] U8G_FONT_SECTION("u8g_font_6x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13[] U8G_FONT_SECTION("u8g_font_6x13"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13r[] U8G_FONT_SECTION("u8g_font_6x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13O[] U8G_FONT_SECTION("u8g_font_6x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_6x13Or[] U8G_FONT_SECTION("u8g_font_6x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_67_75[] U8G_FONT_SECTION("u8g_font_7x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13_78_79[] U8G_FONT_SECTION("u8g_font_7x13_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13B[] U8G_FONT_SECTION("u8g_font_7x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Br[] U8G_FONT_SECTION("u8g_font_7x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13[] U8G_FONT_SECTION("u8g_font_7x13"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13r[] U8G_FONT_SECTION("u8g_font_7x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13O[] U8G_FONT_SECTION("u8g_font_7x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_7x13Or[] U8G_FONT_SECTION("u8g_font_7x13Or"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14B[] U8G_FONT_SECTION("u8g_font_7x14B"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14Br[] U8G_FONT_SECTION("u8g_font_7x14Br"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14[] U8G_FONT_SECTION("u8g_font_7x14"); +extern const u8g_fntpgm_uint8_t u8g_font_7x14r[] U8G_FONT_SECTION("u8g_font_7x14r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13_67_75[] U8G_FONT_SECTION("u8g_font_8x13_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13B[] U8G_FONT_SECTION("u8g_font_8x13B"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Br[] U8G_FONT_SECTION("u8g_font_8x13Br"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13[] U8G_FONT_SECTION("u8g_font_8x13"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13r[] U8G_FONT_SECTION("u8g_font_8x13r"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13O[] U8G_FONT_SECTION("u8g_font_8x13O"); +extern const u8g_fntpgm_uint8_t u8g_font_8x13Or[] U8G_FONT_SECTION("u8g_font_8x13Or"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x15_67_75[] U8G_FONT_SECTION("u8g_font_9x15_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15_78_79[] U8G_FONT_SECTION("u8g_font_9x15_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15B[] U8G_FONT_SECTION("u8g_font_9x15B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15Br[] U8G_FONT_SECTION("u8g_font_9x15Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15[] U8G_FONT_SECTION("u8g_font_9x15"); +extern const u8g_fntpgm_uint8_t u8g_font_9x15r[] U8G_FONT_SECTION("u8g_font_9x15r"); + +extern const u8g_fntpgm_uint8_t u8g_font_9x18_67_75[] U8G_FONT_SECTION("u8g_font_9x18_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18_78_79[] U8G_FONT_SECTION("u8g_font_9x18_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18B[] U8G_FONT_SECTION("u8g_font_9x18B"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18[] U8G_FONT_SECTION("u8g_font_9x18"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18Br[] U8G_FONT_SECTION("u8g_font_9x18Br"); +extern const u8g_fntpgm_uint8_t u8g_font_9x18r[] U8G_FONT_SECTION("u8g_font_9x18r"); + +extern const u8g_fntpgm_uint8_t u8g_font_cursor[] U8G_FONT_SECTION("u8g_font_cursor"); +extern const u8g_fntpgm_uint8_t u8g_font_cursorr[] U8G_FONT_SECTION("u8g_font_cursorr"); +extern const u8g_fntpgm_uint8_t u8g_font_micro[] U8G_FONT_SECTION("u8g_font_micro"); + +extern const u8g_fntpgm_uint8_t u8g_font_cu12_67_75[] U8G_FONT_SECTION("u8g_font_cu12_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12_78_79[] U8G_FONT_SECTION("u8g_font_cu12_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_cu12[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_fub11"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11r[] U8G_FONT_SECTION("u8g_font_fub11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub11n[] U8G_FONT_SECTION("u8g_font_fub11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14[] U8G_FONT_SECTION("u8g_font_fub14"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14r[] U8G_FONT_SECTION("u8g_font_fub14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub14n[] U8G_FONT_SECTION("u8g_font_fub14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17[] U8G_FONT_SECTION("u8g_font_fub17"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17r[] U8G_FONT_SECTION("u8g_font_fub17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub17n[] U8G_FONT_SECTION("u8g_font_fub17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20[] U8G_FONT_SECTION("u8g_font_fub20"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20r[] U8G_FONT_SECTION("u8g_font_fub20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub20n[] U8G_FONT_SECTION("u8g_font_fub20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25[] U8G_FONT_SECTION("u8g_font_fub25"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25r[] U8G_FONT_SECTION("u8g_font_fub25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub25n[] U8G_FONT_SECTION("u8g_font_fub25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30[] U8G_FONT_SECTION("u8g_font_fub30"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30r[] U8G_FONT_SECTION("u8g_font_fub30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fub30n[] U8G_FONT_SECTION("u8g_font_fub30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub35n[] U8G_FONT_SECTION("u8g_font_fub35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub42n[] U8G_FONT_SECTION("u8g_font_fub42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fub49n[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_fur11"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11r[] U8G_FONT_SECTION("u8g_font_fur11r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur11n[] U8G_FONT_SECTION("u8g_font_fur11n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14[] U8G_FONT_SECTION("u8g_font_fur14"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14r[] U8G_FONT_SECTION("u8g_font_fur14r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur14n[] U8G_FONT_SECTION("u8g_font_fur14n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17[] U8G_FONT_SECTION("u8g_font_fur17"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17r[] U8G_FONT_SECTION("u8g_font_fur17r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur17n[] U8G_FONT_SECTION("u8g_font_fur17n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20[] U8G_FONT_SECTION("u8g_font_fur20"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20r[] U8G_FONT_SECTION("u8g_font_fur20r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur20n[] U8G_FONT_SECTION("u8g_font_fur20n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25[] U8G_FONT_SECTION("u8g_font_fur25"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25r[] U8G_FONT_SECTION("u8g_font_fur25r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur25n[] U8G_FONT_SECTION("u8g_font_fur25n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30[] U8G_FONT_SECTION("u8g_font_fur30"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30r[] U8G_FONT_SECTION("u8g_font_fur30r"); +extern const u8g_fntpgm_uint8_t u8g_font_fur30n[] U8G_FONT_SECTION("u8g_font_fur30n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur35n[] U8G_FONT_SECTION("u8g_font_fur35n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur42n[] U8G_FONT_SECTION("u8g_font_fur42n"); +extern const u8g_fntpgm_uint8_t u8g_font_fur49n[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_gdb11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12[] U8G_FONT_SECTION("u8g_font_gdb12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14[] U8G_FONT_SECTION("u8g_font_gdb14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17[] U8G_FONT_SECTION("u8g_font_gdb17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20[] U8G_FONT_SECTION("u8g_font_gdb20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25[] U8G_FONT_SECTION("u8g_font_gdb25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30[] U8G_FONT_SECTION("u8g_font_gdb30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11r[] U8G_FONT_SECTION("u8g_font_gdb11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12r[] U8G_FONT_SECTION("u8g_font_gdb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14r[] U8G_FONT_SECTION("u8g_font_gdb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17r[] U8G_FONT_SECTION("u8g_font_gdb17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20r[] U8G_FONT_SECTION("u8g_font_gdb20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25r[] U8G_FONT_SECTION("u8g_font_gdb25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30r[] U8G_FONT_SECTION("u8g_font_gdb30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdb11n[] U8G_FONT_SECTION("u8g_font_gdb11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb12n[] U8G_FONT_SECTION("u8g_font_gdb12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb14n[] U8G_FONT_SECTION("u8g_font_gdb14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb17n[] U8G_FONT_SECTION("u8g_font_gdb17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb20n[] U8G_FONT_SECTION("u8g_font_gdb20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb25n[] U8G_FONT_SECTION("u8g_font_gdb25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdb30n[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_gdr9"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10[] U8G_FONT_SECTION("u8g_font_gdr10"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11[] U8G_FONT_SECTION("u8g_font_gdr11"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12[] U8G_FONT_SECTION("u8g_font_gdr12"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14[] U8G_FONT_SECTION("u8g_font_gdr14"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17[] U8G_FONT_SECTION("u8g_font_gdr17"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20[] U8G_FONT_SECTION("u8g_font_gdr20"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25[] U8G_FONT_SECTION("u8g_font_gdr25"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30[] U8G_FONT_SECTION("u8g_font_gdr30"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9r[] U8G_FONT_SECTION("u8g_font_gdr9r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10r[] U8G_FONT_SECTION("u8g_font_gdr10r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11r[] U8G_FONT_SECTION("u8g_font_gdr11r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12r[] U8G_FONT_SECTION("u8g_font_gdr12r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14r[] U8G_FONT_SECTION("u8g_font_gdr14r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17r[] U8G_FONT_SECTION("u8g_font_gdr17r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20r[] U8G_FONT_SECTION("u8g_font_gdr20r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25r[] U8G_FONT_SECTION("u8g_font_gdr25r"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30r[] U8G_FONT_SECTION("u8g_font_gdr30r"); + +extern const u8g_fntpgm_uint8_t u8g_font_gdr9n[] U8G_FONT_SECTION("u8g_font_gdr9n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr10n[] U8G_FONT_SECTION("u8g_font_gdr10n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr11n[] U8G_FONT_SECTION("u8g_font_gdr11n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr12n[] U8G_FONT_SECTION("u8g_font_gdr12n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr14n[] U8G_FONT_SECTION("u8g_font_gdr14n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr17n[] U8G_FONT_SECTION("u8g_font_gdr17n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr20n[] U8G_FONT_SECTION("u8g_font_gdr20n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr25n[] U8G_FONT_SECTION("u8g_font_gdr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_gdr30n[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_osb18"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21[] U8G_FONT_SECTION("u8g_font_osb21"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26[] U8G_FONT_SECTION("u8g_font_osb26"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29[] U8G_FONT_SECTION("u8g_font_osb29"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35[] U8G_FONT_SECTION("u8g_font_osb35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18r[] U8G_FONT_SECTION("u8g_font_osb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21r[] U8G_FONT_SECTION("u8g_font_osb21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26r[] U8G_FONT_SECTION("u8g_font_osb26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29r[] U8G_FONT_SECTION("u8g_font_osb29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35r[] U8G_FONT_SECTION("u8g_font_osb35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osb18n[] U8G_FONT_SECTION("u8g_font_osb18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb21n[] U8G_FONT_SECTION("u8g_font_osb21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb26n[] U8G_FONT_SECTION("u8g_font_osb26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb29n[] U8G_FONT_SECTION("u8g_font_osb29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osb35n[] U8G_FONT_SECTION("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_FONT_SECTION("u8g_font_osr18"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21[] U8G_FONT_SECTION("u8g_font_osr21"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26[] U8G_FONT_SECTION("u8g_font_osr26"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29[] U8G_FONT_SECTION("u8g_font_osr29"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35[] U8G_FONT_SECTION("u8g_font_osr35"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18r[] U8G_FONT_SECTION("u8g_font_osr18r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21r[] U8G_FONT_SECTION("u8g_font_osr21r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26r[] U8G_FONT_SECTION("u8g_font_osr26r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29r[] U8G_FONT_SECTION("u8g_font_osr29r"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35r[] U8G_FONT_SECTION("u8g_font_osr35r"); + +extern const u8g_fntpgm_uint8_t u8g_font_osr18n[] U8G_FONT_SECTION("u8g_font_osr18n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr21n[] U8G_FONT_SECTION("u8g_font_osr21n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr26n[] U8G_FONT_SECTION("u8g_font_osr26n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr29n[] U8G_FONT_SECTION("u8g_font_osr29n"); +extern const u8g_fntpgm_uint8_t u8g_font_osr35n[] U8G_FONT_SECTION("u8g_font_osr35n"); + +//extern const u8g_fntpgm_uint8_t u8g_font_osr41[] U8G_FONT_SECTION("u8g_font_osr41"); + +/* GNU unifont */ + +extern const u8g_fntpgm_uint8_t u8g_font_unifont_18_19[] U8G_FONT_SECTION("u8g_font_unifont_18_19"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_72_73[] U8G_FONT_SECTION("u8g_font_unifont_72_73"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[] U8G_FONT_SECTION("u8g_font_unifont_67_75"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_76[] U8G_FONT_SECTION("u8g_font_unifont_76"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_77[] U8G_FONT_SECTION("u8g_font_unifont_77"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_78_79[] U8G_FONT_SECTION("u8g_font_unifont_78_79"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_86[] U8G_FONT_SECTION("u8g_font_unifont_86"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont[] U8G_FONT_SECTION("u8g_font_unifont"); +extern const u8g_fntpgm_uint8_t u8g_font_unifontr[] U8G_FONT_SECTION("u8g_font_unifontr"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_0_8[] U8G_FONT_SECTION("u8g_font_unifont_0_8"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_2_3[] U8G_FONT_SECTION("u8g_font_unifont_2_3"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_4_5[] U8G_FONT_SECTION("u8g_font_unifont_4_5"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_8_9[] U8G_FONT_SECTION("u8g_font_unifont_8_9"); +extern const u8g_fntpgm_uint8_t u8g_font_unifont_12_13[] U8G_FONT_SECTION("u8g_font_unifont_12_13"); + + +/* 04b fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_04b_03b[] U8G_FONT_SECTION("u8g_font_04b_03b"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03bn[] U8G_FONT_SECTION("u8g_font_04b_03bn"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03br[] U8G_FONT_SECTION("u8g_font_04b_03br"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03[] U8G_FONT_SECTION("u8g_font_04b_03"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03n[] U8G_FONT_SECTION("u8g_font_04b_03n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_03r[] U8G_FONT_SECTION("u8g_font_04b_03r"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24[] U8G_FONT_SECTION("u8g_font_04b_24"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24n[] U8G_FONT_SECTION("u8g_font_04b_24n"); +extern const u8g_fntpgm_uint8_t u8g_font_04b_24r[] U8G_FONT_SECTION("u8g_font_04b_24r"); + +/* orgdot fonts */ + +extern const u8g_fntpgm_uint8_t u8g_font_orgv01[] U8G_FONT_SECTION("u8g_font_orgv01"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01r[] U8G_FONT_SECTION("u8g_font_orgv01r"); +extern const u8g_fntpgm_uint8_t u8g_font_orgv01n[] U8G_FONT_SECTION("u8g_font_orgv01n"); + +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0[] U8G_FONT_SECTION("u8g_font_fixed_v0"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0r[] U8G_FONT_SECTION("u8g_font_fixed_v0r"); +extern const u8g_fntpgm_uint8_t u8g_font_fixed_v0n[] U8G_FONT_SECTION("u8g_font_fixed_v0n"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpssb[] U8G_FONT_SECTION("u8g_font_tpssb"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbr[] U8G_FONT_SECTION("u8g_font_tpssbr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssbn[] U8G_FONT_SECTION("u8g_font_tpssbn"); + +extern const u8g_fntpgm_uint8_t u8g_font_tpss[] U8G_FONT_SECTION("u8g_font_tpss"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssr[] U8G_FONT_SECTION("u8g_font_tpssr"); +extern const u8g_fntpgm_uint8_t u8g_font_tpssn[] U8G_FONT_SECTION("u8g_font_tpssn"); + +/* contributed */ + +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr25n[] U8G_FONT_SECTION("u8g_font_freedoomr25n"); +extern const u8g_fntpgm_uint8_t u8g_font_freedoomr10r[] U8G_FONT_SECTION("u8g_font_freedoomr10r"); + +/* adobe X11 */ +extern const u8g_fntpgm_uint8_t u8g_font_courB08[] U8G_FONT_SECTION("u8g_font_courB08"); +extern const u8g_fntpgm_uint8_t u8g_font_courB08r[] U8G_FONT_SECTION("u8g_font_courB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10[] U8G_FONT_SECTION("u8g_font_courB10"); +extern const u8g_fntpgm_uint8_t u8g_font_courB10r[] U8G_FONT_SECTION("u8g_font_courB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12[] U8G_FONT_SECTION("u8g_font_courB12"); +extern const u8g_fntpgm_uint8_t u8g_font_courB12r[] U8G_FONT_SECTION("u8g_font_courB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14[] U8G_FONT_SECTION("u8g_font_courB14"); +extern const u8g_fntpgm_uint8_t u8g_font_courB14r[] U8G_FONT_SECTION("u8g_font_courB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18[] U8G_FONT_SECTION("u8g_font_courB18"); +extern const u8g_fntpgm_uint8_t u8g_font_courB18r[] U8G_FONT_SECTION("u8g_font_courB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24[] U8G_FONT_SECTION("u8g_font_courB24"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24r[] U8G_FONT_SECTION("u8g_font_courB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courB24n[] U8G_FONT_SECTION("u8g_font_courB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_courR08[] U8G_FONT_SECTION("u8g_font_courR08"); +extern const u8g_fntpgm_uint8_t u8g_font_courR08r[] U8G_FONT_SECTION("u8g_font_courR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10[] U8G_FONT_SECTION("u8g_font_courR10"); +extern const u8g_fntpgm_uint8_t u8g_font_courR10r[] U8G_FONT_SECTION("u8g_font_courR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12[] U8G_FONT_SECTION("u8g_font_courR12"); +extern const u8g_fntpgm_uint8_t u8g_font_courR12r[] U8G_FONT_SECTION("u8g_font_courR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14[] U8G_FONT_SECTION("u8g_font_courR14"); +extern const u8g_fntpgm_uint8_t u8g_font_courR14r[] U8G_FONT_SECTION("u8g_font_courR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18[] U8G_FONT_SECTION("u8g_font_courR18"); +extern const u8g_fntpgm_uint8_t u8g_font_courR18r[] U8G_FONT_SECTION("u8g_font_courR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24[] U8G_FONT_SECTION("u8g_font_courR24"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24r[] U8G_FONT_SECTION("u8g_font_courR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_courR24n[] U8G_FONT_SECTION("u8g_font_courR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvB08[] U8G_FONT_SECTION("u8g_font_helvB08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08r[] U8G_FONT_SECTION("u8g_font_helvB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB08n[] U8G_FONT_SECTION("u8g_font_helvB08n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10[] U8G_FONT_SECTION("u8g_font_helvB10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10r[] U8G_FONT_SECTION("u8g_font_helvB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB10n[] U8G_FONT_SECTION("u8g_font_helvB10n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12[] U8G_FONT_SECTION("u8g_font_helvB12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12r[] U8G_FONT_SECTION("u8g_font_helvB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB12n[] U8G_FONT_SECTION("u8g_font_helvB12n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14[] U8G_FONT_SECTION("u8g_font_helvB14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14r[] U8G_FONT_SECTION("u8g_font_helvB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB14n[] U8G_FONT_SECTION("u8g_font_helvB14n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18[] U8G_FONT_SECTION("u8g_font_helvB18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18r[] U8G_FONT_SECTION("u8g_font_helvB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB18n[] U8G_FONT_SECTION("u8g_font_helvB18n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24[] U8G_FONT_SECTION("u8g_font_helvB24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24r[] U8G_FONT_SECTION("u8g_font_helvB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvB24n[] U8G_FONT_SECTION("u8g_font_helvB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_helvR08[] U8G_FONT_SECTION("u8g_font_helvR08"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08r[] U8G_FONT_SECTION("u8g_font_helvR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR08n[] U8G_FONT_SECTION("u8g_font_helvR08n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10[] U8G_FONT_SECTION("u8g_font_helvR10"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10r[] U8G_FONT_SECTION("u8g_font_helvR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR10n[] U8G_FONT_SECTION("u8g_font_helvR10n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12[] U8G_FONT_SECTION("u8g_font_helvR12"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12r[] U8G_FONT_SECTION("u8g_font_helvR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR12n[] U8G_FONT_SECTION("u8g_font_helvR12n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14[] U8G_FONT_SECTION("u8g_font_helvR14"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14r[] U8G_FONT_SECTION("u8g_font_helvR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR14n[] U8G_FONT_SECTION("u8g_font_helvR14n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18[] U8G_FONT_SECTION("u8g_font_helvR18"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18r[] U8G_FONT_SECTION("u8g_font_helvR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR18n[] U8G_FONT_SECTION("u8g_font_helvR18n"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24[] U8G_FONT_SECTION("u8g_font_helvR24"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24r[] U8G_FONT_SECTION("u8g_font_helvR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_helvR24n[] U8G_FONT_SECTION("u8g_font_helvR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08[] U8G_FONT_SECTION("u8g_font_ncenB08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB08r[] U8G_FONT_SECTION("u8g_font_ncenB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10[] U8G_FONT_SECTION("u8g_font_ncenB10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB10r[] U8G_FONT_SECTION("u8g_font_ncenB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12[] U8G_FONT_SECTION("u8g_font_ncenB12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB12r[] U8G_FONT_SECTION("u8g_font_ncenB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14[] U8G_FONT_SECTION("u8g_font_ncenB14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB14r[] U8G_FONT_SECTION("u8g_font_ncenB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18[] U8G_FONT_SECTION("u8g_font_ncenB18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB18r[] U8G_FONT_SECTION("u8g_font_ncenB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24[] U8G_FONT_SECTION("u8g_font_ncenB24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24r[] U8G_FONT_SECTION("u8g_font_ncenB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenB24n[] U8G_FONT_SECTION("u8g_font_ncenB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08[] U8G_FONT_SECTION("u8g_font_ncenR08"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR08r[] U8G_FONT_SECTION("u8g_font_ncenR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10[] U8G_FONT_SECTION("u8g_font_ncenR10"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR10r[] U8G_FONT_SECTION("u8g_font_ncenR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12[] U8G_FONT_SECTION("u8g_font_ncenR12"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR12r[] U8G_FONT_SECTION("u8g_font_ncenR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14[] U8G_FONT_SECTION("u8g_font_ncenR14"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR14r[] U8G_FONT_SECTION("u8g_font_ncenR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18[] U8G_FONT_SECTION("u8g_font_ncenR18"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR18r[] U8G_FONT_SECTION("u8g_font_ncenR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24[] U8G_FONT_SECTION("u8g_font_ncenR24"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24r[] U8G_FONT_SECTION("u8g_font_ncenR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_ncenR24n[] U8G_FONT_SECTION("u8g_font_ncenR24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_symb08[] U8G_FONT_SECTION("u8g_font_symb08"); +extern const u8g_fntpgm_uint8_t u8g_font_symb08r[] U8G_FONT_SECTION("u8g_font_symb08r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10[] U8G_FONT_SECTION("u8g_font_symb10"); +extern const u8g_fntpgm_uint8_t u8g_font_symb10r[] U8G_FONT_SECTION("u8g_font_symb10r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12[] U8G_FONT_SECTION("u8g_font_symb12"); +extern const u8g_fntpgm_uint8_t u8g_font_symb12r[] U8G_FONT_SECTION("u8g_font_symb12r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14[] U8G_FONT_SECTION("u8g_font_symb14"); +extern const u8g_fntpgm_uint8_t u8g_font_symb14r[] U8G_FONT_SECTION("u8g_font_symb14r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18[] U8G_FONT_SECTION("u8g_font_symb18"); +extern const u8g_fntpgm_uint8_t u8g_font_symb18r[] U8G_FONT_SECTION("u8g_font_symb18r"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24[] U8G_FONT_SECTION("u8g_font_symb24"); +extern const u8g_fntpgm_uint8_t u8g_font_symb24r[] U8G_FONT_SECTION("u8g_font_symb24r"); + +extern const u8g_fntpgm_uint8_t u8g_font_timB08[] U8G_FONT_SECTION("u8g_font_timB08"); +extern const u8g_fntpgm_uint8_t u8g_font_timB08r[] U8G_FONT_SECTION("u8g_font_timB08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10[] U8G_FONT_SECTION("u8g_font_timB10"); +extern const u8g_fntpgm_uint8_t u8g_font_timB10r[] U8G_FONT_SECTION("u8g_font_timB10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12[] U8G_FONT_SECTION("u8g_font_timB12"); +extern const u8g_fntpgm_uint8_t u8g_font_timB12r[] U8G_FONT_SECTION("u8g_font_timB12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14[] U8G_FONT_SECTION("u8g_font_timB14"); +extern const u8g_fntpgm_uint8_t u8g_font_timB14r[] U8G_FONT_SECTION("u8g_font_timB14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18[] U8G_FONT_SECTION("u8g_font_timB18"); +extern const u8g_fntpgm_uint8_t u8g_font_timB18r[] U8G_FONT_SECTION("u8g_font_timB18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24[] U8G_FONT_SECTION("u8g_font_timB24"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24r[] U8G_FONT_SECTION("u8g_font_timB24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timB24n[] U8G_FONT_SECTION("u8g_font_timB24n"); + +extern const u8g_fntpgm_uint8_t u8g_font_timR08[] U8G_FONT_SECTION("u8g_font_timR08"); +extern const u8g_fntpgm_uint8_t u8g_font_timR08r[] U8G_FONT_SECTION("u8g_font_timR08r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10[] U8G_FONT_SECTION("u8g_font_timR10"); +extern const u8g_fntpgm_uint8_t u8g_font_timR10r[] U8G_FONT_SECTION("u8g_font_timR10r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12[] U8G_FONT_SECTION("u8g_font_timR12"); +extern const u8g_fntpgm_uint8_t u8g_font_timR12r[] U8G_FONT_SECTION("u8g_font_timR12r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14[] U8G_FONT_SECTION("u8g_font_timR14"); +extern const u8g_fntpgm_uint8_t u8g_font_timR14r[] U8G_FONT_SECTION("u8g_font_timR14r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18[] U8G_FONT_SECTION("u8g_font_timR18"); +extern const u8g_fntpgm_uint8_t u8g_font_timR18r[] U8G_FONT_SECTION("u8g_font_timR18r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24[] U8G_FONT_SECTION("u8g_font_timR24"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24r[] U8G_FONT_SECTION("u8g_font_timR24r"); +extern const u8g_fntpgm_uint8_t u8g_font_timR24n[] U8G_FONT_SECTION("u8g_font_timR24n"); + +/* fontstruct */ + +extern const u8g_fntpgm_uint8_t u8g_font_p01type[] U8G_FONT_SECTION("u8g_font_p01type"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typer[] U8G_FONT_SECTION("u8g_font_p01typer"); +extern const u8g_fntpgm_uint8_t u8g_font_p01typen[] U8G_FONT_SECTION("u8g_font_p01typen"); + +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternate[] U8G_FONT_SECTION("u8g_font_lucasfont_alternate"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternater[] U8G_FONT_SECTION("u8g_font_lucasfont_alternater"); +extern const u8g_fntpgm_uint8_t u8g_font_lucasfont_alternaten[] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten"); + +extern const u8g_fntpgm_uint8_t u8g_font_chikita[] U8G_FONT_SECTION("u8g_font_chikita"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitar[] U8G_FONT_SECTION("u8g_font_chikitar"); +extern const u8g_fntpgm_uint8_t u8g_font_chikitan[] U8G_FONT_SECTION("u8g_font_chikitan"); + +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micro[] U8G_FONT_SECTION("u8g_font_pixelle_micro"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micror[] U8G_FONT_SECTION("u8g_font_pixelle_micror"); +extern const u8g_fntpgm_uint8_t u8g_font_pixelle_micron[] U8G_FONT_SECTION("u8g_font_pixelle_micron"); + +extern const u8g_fntpgm_uint8_t u8g_font_trixel_square[] U8G_FONT_SECTION("u8g_font_trixel_square"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squarer[] U8G_FONT_SECTION("u8g_font_trixel_squarer"); +extern const u8g_fntpgm_uint8_t u8g_font_trixel_squaren[] U8G_FONT_SECTION("u8g_font_trixel_squaren"); + +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niro[] U8G_FONT_SECTION("u8g_font_robot_de_niro"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niror[] U8G_FONT_SECTION("u8g_font_robot_de_niror"); +extern const u8g_fntpgm_uint8_t u8g_font_robot_de_niron[] U8G_FONT_SECTION("u8g_font_robot_de_niron"); + +extern const u8g_fntpgm_uint8_t u8g_font_baby[] U8G_FONT_SECTION("u8g_font_baby"); +extern const u8g_fntpgm_uint8_t u8g_font_babyr[] U8G_FONT_SECTION("u8g_font_babyr"); +extern const u8g_fntpgm_uint8_t u8g_font_babyn[] U8G_FONT_SECTION("u8g_font_babyn"); + +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07[] U8G_FONT_SECTION("u8g_font_blipfest_07"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07r[] U8G_FONT_SECTION("u8g_font_blipfest_07r"); +extern const u8g_fntpgm_uint8_t u8g_font_blipfest_07n[] U8G_FONT_SECTION("u8g_font_blipfest_07n"); + +/* profont */ + +extern const u8g_fntpgm_uint8_t u8g_font_profont10[] U8G_FONT_SECTION("u8g_font_profont10"); +extern const u8g_fntpgm_uint8_t u8g_font_profont10r[] U8G_FONT_SECTION("u8g_font_profont10r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont11[] U8G_FONT_SECTION("u8g_font_profont11"); +extern const u8g_fntpgm_uint8_t u8g_font_profont11r[] U8G_FONT_SECTION("u8g_font_profont11r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont12[] U8G_FONT_SECTION("u8g_font_profont12"); +extern const u8g_fntpgm_uint8_t u8g_font_profont12r[] U8G_FONT_SECTION("u8g_font_profont12r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont15[] U8G_FONT_SECTION("u8g_font_profont15"); +extern const u8g_fntpgm_uint8_t u8g_font_profont15r[] U8G_FONT_SECTION("u8g_font_profont15r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont17[] U8G_FONT_SECTION("u8g_font_profont17"); +extern const u8g_fntpgm_uint8_t u8g_font_profont17r[] U8G_FONT_SECTION("u8g_font_profont17r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont22[] U8G_FONT_SECTION("u8g_font_profont22"); +extern const u8g_fntpgm_uint8_t u8g_font_profont22r[] U8G_FONT_SECTION("u8g_font_profont22r"); +extern const u8g_fntpgm_uint8_t u8g_font_profont29[] U8G_FONT_SECTION("u8g_font_profont29"); +extern const u8g_fntpgm_uint8_t u8g_font_profont29r[] U8G_FONT_SECTION("u8g_font_profont29r"); + + +#ifdef __cplusplus +} +#endif + +#endif /* _U8G_H */ + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_bitmap.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_bitmap.c new file mode 100644 index 000000000..dc742d1d7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_circle.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_circle.c new file mode 100644 index 000000000..57e184b6b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_clip.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_clip.c new file mode 100644 index 000000000..1ca223e43 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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 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 __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_ALWAYS_INLINE 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api.c new file mode 100644 index 000000000..0201808d7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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, uint8_t clk_cycle_time) +{ + return dev->com_fn(u8g, U8G_COM_MSG_INIT, clk_cycle_time, 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_api_16gr.c b/ArduinoAddons/Arduino_1.6.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.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c new file mode 100644 index 000000000..9d0191eae --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_attiny85_hw_spi.c @@ -0,0 +1,160 @@ +/* + + u8g_arduino_ATtiny85_std_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. + +*/ + +// Uses code from tinySPI Written by Nick Gammon +// March 2013 + +// ATMEL ATTINY45 / ARDUINO pin mappings +// +// +-\/-+ +// RESET Ain0 (D 5) PB5 1| |8 Vcc +// CLK1 Ain3 (D 3) PB3 2| |7 PB2 (D 2) Ain1 SCK / USCK / SCL +// CLK0 Ain2 (D 4) PB4 3| |6 PB1 (D 1) pwm1 MISO / DO +// GND 4| |5 PB0 (D 0) pwm0 MOSI / DI / SDA +// +----+ + + +#include "u8g.h" + + +#if defined(ARDUINO) && defined(__AVR_ATtiny85__) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +const byte DI = 0; // D0, pin 5 Data In +const byte DO = 1; // D1, pin 6 Data Out (this is *not* MOSI) +const byte USCK = 2; // D2, pin 7 Universal Serial Interface clock + +uint8_t u8g_arduino_ATtiny85_spi_out(uint8_t val) +{ + USIDR = val; // byte to output + USISR = _BV (USIOIF); // clear Counter Overflow Interrupt Flag, set count to zero + do + { + USICR = _BV (USIWM0) // 3-wire mode + | _BV (USICS1) | _BV (USICLK) // Software clock strobe + | _BV (USITC); // Toggle Clock Port Pin + } + while ((USISR & _BV (USIOIF)) == 0); // until Counter Overflow Interrupt Flag set + + return USIDR; // return read data +} + +uint8_t u8g_com_arduino_ATtiny85_std_hw_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_digital_write(u8g, U8G_PI_CS, HIGH); // ensure SS stays high until needed + pinMode (USCK, OUTPUT); + pinMode (DO, OUTPUT); + pinMode (u8g->pin_list[U8G_PI_CS], OUTPUT); + pinMode (u8g->pin_list[U8G_PI_A0], OUTPUT); + USICR = _BV (USIWM0); // 3-wire mode + u8g_MicroDelay(); + 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_MicroDelay(); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + u8g_MicroDelay(); + } + else + { + /* enable */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + u8g_MicroDelay(); + } + break; + + case U8G_COM_MSG_WRITE_BYTE: + u8g_arduino_ATtiny85_spi_out(arg_val); + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_ATtiny85_spi_out(*ptr++); + arg_val--; + } + } + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_arduino_ATtiny85_spi_out(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); + u8g_MicroDelay(); + break; + } + return 1; +} + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_ATtiny85_std_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_common.c b/ArduinoAddons/Arduino_1.6.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.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c new file mode 100644 index 000000000..57d4410af --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_fast_parallel.c @@ -0,0 +1,254 @@ +/* + + 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) + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + +*/ + +#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]); +} + +/* atomic protection must be done by calling function */ +static 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_ATOMIC_START(); + 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; + U8G_ATOMIC_END(); + + /* 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c new file mode 100644 index 000000000..3c0d34a48 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_spi.c @@ -0,0 +1,438 @@ +/* + + 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. + + SPI Clock Cycle Type + + SSD1351 50ns 20 MHz + SSD1322 300ns 3.3 MHz + SSD1327 300ns + SSD1306 300ns + ST7565 400ns 2.5 MHz + ST7920 400ns + + Arduino DUE + + PA25 MISO + PA26 MOSI 75 + PA27 SCLK 76 + + +typedef struct { + WoReg SPI_CR; (Spi Offset: 0x00) Control Register + RwReg SPI_MR; (Spi Offset: 0x04) Mode Register + RoReg SPI_RDR; (Spi Offset: 0x08) Receive Data Register + WoReg SPI_TDR; (Spi Offset: 0x0C) Transmit Data Register + RoReg SPI_SR; (Spi Offset: 0x10) Status Register + WoReg SPI_IER; (Spi Offset: 0x14) Interrupt Enable Register + WoReg SPI_IDR; (Spi Offset: 0x18) Interrupt Disable Register + RoReg SPI_IMR; (Spi Offset: 0x1C) Interrupt Mask Register + RoReg Reserved1[4]; + RwReg SPI_CSR[4]; (Spi Offset: 0x30) Chip Select Register + RoReg Reserved2[41]; + RwReg SPI_WPMR; (Spi Offset: 0xE4) Write Protection Control Register + RoReg SPI_WPSR; (Spi Offset: 0xE8) Write Protection Status Register +} Spi; + + Power Management Controller (PMC) + arduino-1.5.2/hardware/arduino/sam/system/CMSIS/Device/ATMEL/sam3xa/include/instance/instance_pmc.h + - enable PIO + + REG_PMC_PCER0 = 1UL << ID_PIOA + - enable SPI + REG_PMC_PCER0 = 1UL << ID_SPI0 + + + - enable PIOA and SPI0 + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + + Parallel Input/Output Controller (PIO) + arduino-1.5.2/hardware/arduino/sam/system/CMSIS/Device/ATMEL/sam3xa/include/instance/instance_pioa.h + - enable special function of the pin: disable PIO on A26 and A27: + REG_PIOA_PDR = 0x0c000000 + PIOA->PIO_PDR = 0x0c000000 + + SPI + SPI0->SPI_CR = SPI_CR_SPIDIS + SPI0->SPI_CR = SPI_CR_SWRST ; + SPI0->SPI_CR = SPI_CR_SWRST ; + SPI0->SPI_CR = SPI_CR_SPIEN + + Bit 0: Master Mode = 1 (active) + Bit 1: Peripheral Select = 0 (fixed) + Bit 2: Chip Select Decode Mode = 1 (4 to 16) + Bit 4: Mode Fault Detection = 1 (disabled) + Bit 5: Wait Data Read = 0 (disabled) + Bit 7: Loop Back Mode = 0 (disabled) + Bit 16-19: Peripheral Chip Select = 0 (chip select 0) + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS + + Bit 0: Clock Polarity = 0 + Bit 1: Clock Phase = 0 + Bit 4-7: Bits = 0 (8 Bit) + Bit 8-15: SCBR = 1 + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(x) Serial Baud Rate + SCBR / 84000000 > 50 / 1000000000 + SCBR / 84 > 5 / 100 + SCBR > 50 *84 / 1000 --> SCBR=5 + SCBR > 300*84 / 1000 --> SCBR=26 + SCBR > 400*84 / 1000 --> SCBR=34 + + Arduino Due test code: + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + REG_PIOA_PDR = 0x0c000000; + SPI0->SPI_CR = SPI_CR_SPIDIS; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SPIEN; + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS; + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(30); + + for(;;) + { + while( (SPI0->SPI_SR & SPI_SR_TDRE) == 0 ) + ; + SPI0->SPI_TDR = 0x050; + } + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR__) +#define U8G_ARDUINO_ATMEGA_HW_SPI +/* remove the definition for attiny */ +#if __AVR_ARCH__ == 2 +#undef U8G_ARDUINO_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ARDUINO_ATMEGA_HW_SPI +#endif +#endif + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) + +#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) */ + +#elif defined(__SAM3X8E__) // Arduino Due, maybe we should better check for __SAM3X8E__ + +#include + +/* use Arduino pin definitions */ +#define PIN_SCK SCK +#define PIN_MISO MISO +#define PIN_MOSI MOSI +#define PIN_CS SS + + +static uint8_t u8g_spi_out(uint8_t data) +{ + /* wait until tx register is empty */ + while( (SPI0->SPI_SR & SPI_SR_TDRE) == 0 ) + ; + /* send data */ + SPI0->SPI_TDR = (uint32_t)data; + return data; +} + + +uint8_t u8g_com_arduino_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + + /* Arduino Due specific code */ + + /* enable PIOA and SPI0 */ + REG_PMC_PCER0 = (1UL << ID_PIOA) | (1UL << ID_SPI0); + + /* disable PIO on A26 and A27 */ + REG_PIOA_PDR = 0x0c000000; + + /* reset SPI0 (from sam lib) */ + SPI0->SPI_CR = SPI_CR_SPIDIS; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SWRST; + SPI0->SPI_CR = SPI_CR_SPIEN; + u8g_MicroDelay(); + + /* master mode, no fault detection, chip select 0 */ + SPI0->SPI_MR = SPI_MR_MSTR | SPI_MR_PCSDEC | SPI_MR_MODFDIS; + + /* Polarity, Phase, 8 Bit data transfer, baud rate */ + /* x * 1000 / 84 --> clock cycle in ns + 5 * 1000 / 84 = 58 ns + SCBR > 50 *84 / 1000 --> SCBR=5 + SCBR > 300*84 / 1000 --> SCBR=26 + SCBR > 400*84 / 1000 --> SCBR=34 + */ + + if ( arg_val <= U8G_SPI_CLK_CYCLE_50NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(5) | 1; + } + else if ( arg_val <= U8G_SPI_CLK_CYCLE_300NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(26) | 1; + } + else if ( arg_val <= U8G_SPI_CLK_CYCLE_400NS ) + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(34) | 1; + } + else + { + SPI0->SPI_CSR[0] = SPI_CSR_SCBR(84) | 1; + } + + u8g_MicroDelay(); + 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); + u8g_MicroDelay(); + break; + + case U8G_COM_MSG_CHIP_SELECT: + if ( arg_val == 0 ) + { + /* disable */ + u8g_MicroDelay(); /* this delay is required to avoid that the display is switched off too early --> DOGS102 with DUE */ + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + u8g_MicroDelay(); + } + else + { + /* enable */ + //u8g_com_arduino_digital_write(u8g, U8G_PI_SCK, LOW); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + u8g_MicroDelay(); + } + 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_WRITE_BYTE: + u8g_spi_out(arg_val); + u8g_MicroDelay(); + 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; +} + + + +#else /* U8G_ARDUINO_ATMEGA_HW_SPI */ + +#endif /* U8G_ARDUINO_ATMEGA_HW_SPI */ + +#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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c new file mode 100644 index 000000000..27fd8d01c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_hw_usart_spi.c @@ -0,0 +1,159 @@ +/* + + u8g_com_arduino_hw_usart_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. + + SPI Clock Cycle Type + + SSD1351 50ns 20 MHz + SSD1322 300ns 3.3 MHz + SSD1327 300ns + SSD1306 300ns + ST7565 400ns 2.5 MHz + ST7920 400ns + +*/ + +#include "u8g.h" + +#if defined(ARDUINO) + +#if defined(__AVR_ATmega32U4__ ) + +#include +#include + +#if ARDUINO < 100 +#include +#else +#include +#endif + + + +static uint8_t u8g_usart_spi_out(uint8_t data) +{ + /* send data */ + UDR1 = data; + /* wait for empty transmit buffer */ + while(!(UCSR1A & (1 << UDRE1))); + + return UDR1; +} + + +uint8_t u8g_com_arduino_hw_usart_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + /* SCK is already an output as we overwrite TXLED */ + u8g_com_arduino_assign_pin_output_high(u8g); + u8g_com_arduino_digital_write(u8g, U8G_PI_CS, HIGH); + + // Init interface at 2MHz + UBRR1 = 0x00; + UCSR1C = (1 << UMSEL11) | (1 << UMSEL10); + UCSR1B = (1 << TXEN1); + UBRR1 = 3; + + 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; + + 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_CS, LOW); + } + 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_WRITE_BYTE: + u8g_usart_spi_out(arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_usart_spi_out(*ptr++); + arg_val--; + } + } + break; + case U8G_COM_MSG_WRITE_SEQ_P: + { + register uint8_t *ptr = arg_ptr; + while( arg_val > 0 ) + { + u8g_usart_spi_out(u8g_pgm_read(ptr)); + ptr++; + arg_val--; + } + } + break; + } + return 1; +} + +/* #elif defined(__18CXX) || defined(__PIC32MX) */ +/* #elif defined(__arm__) // Arduino Due, maybe we should better check for __SAM3X8E__ */ + +#else /* __AVR_ATmega32U4__ */ + +#endif /* __AVR_ATmega32U4__ */ + +#else /* ARDUINO */ + +uint8_t u8g_com_arduino_hw_usart_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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c new file mode 100644 index 000000000..4edb30a46 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_no_en_parallel.c @@ -0,0 +1,234 @@ +/* + + 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) + Update for ATOMIC operation done (01 Jun 2013) + + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + +*/ + +#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]); +} + +/* No atomic protcetion. This is done by caller */ +static 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_ATOMIC_START(); + 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; + U8G_ATOMIC_END(); + + /* 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c new file mode 100644 index 000000000..d5d5dd755 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_parallel.c @@ -0,0 +1,184 @@ +/* + + u8g_com_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_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 */ +} + + +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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c new file mode 100644 index 000000000..64a8229e1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_port_d_wr.c @@ -0,0 +1,177 @@ +/* + + 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) + + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + +*/ + +#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 + U8G_ATOMIC_START(); + DDRD = 0x0ff; + PORTD = 0x0ff; + U8G_ATOMIC_END(); + + /* 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c new file mode 100644 index 000000000..84b24daad --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_ssd_i2c.c @@ -0,0 +1,212 @@ +/* + + 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" + +#if defined(U8G_WITH_PINLIST) + + +#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; +} + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_arduino_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c new file mode 100644 index 000000000..d157b9363 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_custom.c @@ -0,0 +1,330 @@ +/* + + u8g_com_arduino_st7920_custom.c + + Additional COM device, initially introduced for 3D Printer community + Implements a fast SW SPI com subsystem + + 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 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + +*/ + +#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__) + +static uint8_t u8g_bitData, u8g_bitNotData; +static uint8_t u8g_bitClock, u8g_bitNotClock; +static volatile uint8_t *u8g_outData; +static 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; + + + U8G_ATOMIC_START(); + bitData |= *outData; + bitNotData &= *outData; + 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 ); + U8G_ATOMIC_END(); +} + +#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; + U8G_ATOMIC_START(); + 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 ); + U8G_ATOMIC_END(); +} + +#else + +/* default interface, Arduino DUE (__arm__) */ + +uint8_t u8g_data_custom_pin; +uint8_t u8g_clock_custom_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_data_custom_pin = dataPin; + u8g_clock_custom_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_custom_pin, HIGH); + else + digitalWrite(u8g_data_custom_pin, LOW); + val <<= 1; + //u8g_MicroDelay(); + digitalWrite(u8g_clock_custom_pin, LOW); + cnt--; + u8g_MicroDelay(); + digitalWrite(u8g_clock_custom_pin, HIGH); + u8g_MicroDelay(); + } while( cnt != 0 ); +} + +#endif + + +static void u8g_com_arduino_st7920_write_byte_seq(uint8_t rs, uint8_t *ptr, uint8_t len) +{ + 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); + } + + while( len > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(*ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + +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_custom_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: + u8g_com_arduino_st7920_write_byte_seq(u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, 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_custom_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* ARDUINO */ + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c new file mode 100644 index 000000000..af44c7f86 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_hw_spi.c @@ -0,0 +1,293 @@ +/* + + 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_ARDUINO_ATMEGA_HW_SPI +#endif +#if __AVR_ARCH__ == 25 +#undef U8G_ARDUINO_ATMEGA_HW_SPI +#endif + +#endif + + +#if defined(U8G_ARDUINO_ATMEGA_HW_SPI) + +#include +#include + + +#if ARDUINO < 100 + +/* 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 + +/* 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_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< 0 ) + { + u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr & 0x0f0); + u8g_arduino_st7920_hw_spi_shift_out(u8g, *ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + +static void u8g_com_arduino_st7920_write_byte_hw_spi(u8g_t *u8g, uint8_t rs, uint8_t val) U8G_NOINLINE; +static void u8g_com_arduino_st7920_write_byte_hw_spi(u8g_t *u8g, uint8_t rs, uint8_t val) +{ + uint8_t i; + + if ( rs == 0 ) + { + /* command */ + u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0f8); + } + else if ( rs == 1 ) + { + /* data */ + u8g_arduino_st7920_hw_spi_shift_out(u8g, 0x0fa); + } + else + { + /* do nothing, keep same state */ + } + + u8g_arduino_st7920_hw_spi_shift_out(u8g, val & 0x0f0); + u8g_arduino_st7920_hw_spi_shift_out(u8g, val << 4); + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + + +uint8_t u8g_com_arduino_st7920_hw_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); + + + /* code from u8g_com-arduino_hw_spi.c */ + pinMode(PIN_SCK, OUTPUT); + digitalWrite(PIN_SCK, LOW); + pinMode(PIN_MOSI, OUTPUT); + digitalWrite(PIN_MOSI, LOW); + /* pinMode(PIN_MISO, INPUT); */ + + pinMode(PIN_CS, OUTPUT); /* system chip select for the atmega board */ + digitalWrite(PIN_CS, HIGH); + + + //u8g_com_arduino_digital_write(u8g, U8G_PI_CS, LOW); + +#ifdef OBSOLETE + DDRB |= _BV(3); /* D0, MOSI */ + DDRB |= _BV(5); /* SCK */ + DDRB |= _BV(2); /* slave select */ + + PORTB &= ~_BV(3); /* D0, MOSI = 0 */ + PORTB &= ~_BV(5); /* SCK = 0 */ +#endif + + /* + SPR1 SPR0 + 0 0 fclk/4 + 0 1 fclk/16 + 1 0 fclk/64 + 1 1 fclk/128 + */ + SPCR = 0; + + /* 20 Dez 2012: set CPOL and CPHA to 1 !!! */ + SPCR = (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: + u8g_com_arduino_st7920_write_byte_hw_spi_seq(u8g, u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, arg_val); + /* + { + 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++); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c new file mode 100644 index 000000000..9a5c2bef3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_st7920_spi.c @@ -0,0 +1,330 @@ +/* + + 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 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + +*/ + +#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__) + +static uint8_t u8g_bitData, u8g_bitNotData; +static uint8_t u8g_bitClock, u8g_bitNotClock; +static volatile uint8_t *u8g_outData; +static 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; + + + U8G_ATOMIC_START(); + bitData |= *outData; + bitNotData &= *outData; + 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 ); + U8G_ATOMIC_END(); +} + +#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; + U8G_ATOMIC_START(); + 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 ); + U8G_ATOMIC_END(); +} + +#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_seq(uint8_t rs, uint8_t *ptr, uint8_t len) +{ + 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); + } + + while( len > 0 ) + { + u8g_com_arduino_do_shift_out_msb_first(*ptr & 0x0f0); + u8g_com_arduino_do_shift_out_msb_first(*ptr << 4); + ptr++; + len--; + u8g_10MicroDelay(); + } + + for( i = 0; i < 4; i++ ) + u8g_10MicroDelay(); +} + +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); + /* 28 Dec 2013 reassign pins, fixes issue with more than one display */ + /* issue 227 */ + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + } + 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: + u8g_com_arduino_st7920_write_byte_seq(u8g->pin_list[U8G_PI_A0_STATE], (uint8_t *)arg_ptr, 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c new file mode 100644 index 000000000..048ac1af3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_std_sw_spi.c @@ -0,0 +1,143 @@ +/* + + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c new file mode 100644 index 000000000..7752adc82 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_sw_spi.c @@ -0,0 +1,301 @@ +/* + + 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. + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + +*/ + +#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 + +/*=========================================================*/ +/* Arduino, AVR */ + +#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; + U8G_ATOMIC_START(); + do + { + if ( val & 128 ) + *outData |= bitData; + else + *outData &= bitNotData; + + *outClock |= bitClock; + val <<= 1; + cnt--; + *outClock &= bitNotClock; + } while( cnt != 0 ); + U8G_ATOMIC_END(); +} + +/*=========================================================*/ +/* Arduino, Chipkit */ +#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; + U8G_ATOMIC_START(); + 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 ); + U8G_ATOMIC_END(); +} + +/*=========================================================*/ +/* Arduino Due */ +#elif defined(__SAM3X8E__) + +/* Due */ + +void u8g_digital_write_sam_high(uint8_t pin) +{ + PIO_Set( g_APinDescription[pin].pPort, g_APinDescription[pin].ulPin) ; +} + +void u8g_digital_write_sam_low(uint8_t pin) +{ + PIO_Clear( g_APinDescription[pin].pPort, g_APinDescription[pin].ulPin) ; +} + +static uint8_t u8g_sam_data_pin; +static uint8_t u8g_sam_clock_pin; + +static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) +{ + u8g_sam_data_pin = dataPin; + u8g_sam_clock_pin = clockPin; +} + +static void u8g_com_arduino_do_shift_out_msb_first(uint8_t val) +{ + uint8_t i = 8; + do + { + if ( val & 128 ) + u8g_digital_write_sam_high(u8g_sam_data_pin); + else + u8g_digital_write_sam_low(u8g_sam_data_pin); + val <<= 1; + //u8g_MicroDelay(); + u8g_digital_write_sam_high(u8g_sam_clock_pin); + u8g_MicroDelay(); + u8g_digital_write_sam_low(u8g_sam_clock_pin); + u8g_MicroDelay(); + i--; + } while( i != 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); + /* issue 227 */ + u8g_com_arduino_init_shift_out(u8g->pin_list[U8G_PI_MOSI], u8g->pin_list[U8G_PI_SCK]); + } + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c new file mode 100644 index 000000000..50e5e93ac --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_t6963.c @@ -0,0 +1,403 @@ +/* + + 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) + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + +*/ + +#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) +{ + /* no ATOMIC protection required here, this is done by calling procedure */ + 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; + U8G_ATOMIC_START(); + 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 + + } + U8G_ATOMIC_END(); +} + +static void u8g_com_arduino_t6963_set_port_input(void) +{ + uint8_t i; + U8G_ATOMIC_START(); + 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 + } + U8G_ATOMIC_END(); +} + + +static void u8g_com_arduino_t6963_write(u8g_t *u8g, uint8_t val) +{ + U8G_ATOMIC_START(); + + 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_ATOMIC_END(); + + 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 */ + + U8G_ATOMIC_START(); + /* 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_ATOMIC_END(); + + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c new file mode 100644 index 000000000..263766818 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_arduino_uc_i2c.c @@ -0,0 +1,206 @@ +/* + + u8g_com_arduino_uc_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" + +#if defined(U8G_WITH_PINLIST) + +#define DOGM240_SLA_CMD (0x38*2) +#define DOGM240_SLA_DATA (0x39*2) + +uint8_t u8g_com_arduino_uc_start_sequence(u8g_t *u8g) +{ + /* are we requested to set the a0 state? */ + if ( u8g->pin_list[U8G_PI_SET_A0] == 0 ) + return 1; + + if ( u8g->pin_list[U8G_PI_A0_STATE] == 0 ) + { + if ( u8g_i2c_start(DOGM240_SLA_CMD) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_start(DOGM240_SLA_DATA) == 0 ) + return 0; + } + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_arduino_uc_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_uc_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_uc_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_uc_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_uc_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; +} + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_arduino_uc_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c new file mode 100644 index 000000000..71e378b55 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_hw_spi.c @@ -0,0 +1,188 @@ +/* + + 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 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + + + +*/ + +#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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c new file mode 100644 index 000000000..2b49b04fd --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_parallel.c @@ -0,0 +1,183 @@ +/* + + u8g_com_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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c new file mode 100644 index 000000000..dd0fd4e15 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_hw_spi.c @@ -0,0 +1,216 @@ +/* + + 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 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + + +*/ + +#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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_st7920_spi.c b/ArduinoAddons/Arduino_1.6.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.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_atmega_sw_spi.c b/ArduinoAddons/Arduino_1.6.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.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c new file mode 100644 index 000000000..8e16bead3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_i2c.c @@ -0,0 +1,642 @@ +/* + + 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" + +//#define U8G_I2C_WITH_NO_ACK + +static uint8_t u8g_i2c_err_code; +static uint8_t u8g_i2c_opt; /* U8G_I2C_OPT_NO_ACK, SAM: U8G_I2C_OPT_DEV_1 */ +/* + 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 + + TWBR = 12; + TWSR = 0; + --> 400KHz + + F_CPU/(2*100000)-8 --> calculate TWBR value for 100KHz +*/ + u8g_i2c_opt = options; + TWSR = 0; + if ( options & U8G_I2C_OPT_FAST ) + { + TWBR = F_CPU/(2*400000)-8; + } + else + { + 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 ) + { + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) + { + return 1; /* all ok */ + } + else + { + 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; + + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) + { + /* do not check for ACK */ + } + else + { + 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; + + if ( u8g_i2c_opt & U8G_I2C_OPT_NO_ACK ) + { + /* do not check for ACK */ + } + else + { + 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(); +} +*/ + +#elif defined(ARDUINO) && defined(__SAM3X8E__) +/* Arduino Due */ +#include "Arduino.h" +#include "sam.h" + +/* + +Controller + +TWI0 TWCK0 PA18 A DUE PCB: SCL1 +TWI0 TWD0 PA17 A DUE PCB: SDA1 +TWI1 TWCK1 PB13 A DUE PCB: SCL 21 +TWI1 TWD1 PB12 A DUE PCB: SDA 20 + +Arduino definitions + +#define PIN_WIRE_SDA (20u) +#define PIN_WIRE_SCL (21u) +#define WIRE_INTERFACE TWI1 +#define WIRE_INTERFACE_ID ID_TWI1 +#define WIRE_ISR_HANDLER TWI1_Handler + +#define PIN_WIRE1_SDA (70u) +#define PIN_WIRE1_SCL (71u) +#define WIRE1_INTERFACE TWI0 +#define WIRE1_INTERFACE_ID ID_TWI0 +#define WIRE1_ISR_HANDLER TWI0_Handler + + +*/ + +static void i2c_400KHz_delay(void) +{ + /* should be at least 4 */ + /* should be 5 for 100KHz transfer speed */ + + + /* + Arduino Due + 0x NOP: 470KHz + 4x NOP: 450KHz + 8x NOP: 430KHz + 16x NOP: 400KHz + */ + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); + + __NOP(); + __NOP(); + __NOP(); + __NOP(); +} + +static void i2c_100KHz_delay(void) +{ + /* + 1x u8g_MicroDelay() ca. 130KHz + 2x u8g_MicroDelay() ca. 80KHz + */ + u8g_MicroDelay(); + u8g_MicroDelay(); +} + + +uint32_t i2c_started = 0; +uint32_t i2c_scl_pin = 0; +uint32_t i2c_sda_pin = 0; +void (*i2c_delay)(void) = i2c_100KHz_delay; + +const PinDescription *i2c_scl_pin_desc; +const PinDescription *i2c_sda_pin_desc; + + +/* maybe this can be optimized */ +static void i2c_init(void) +{ + i2c_sda_pin_desc = &(g_APinDescription[i2c_sda_pin]); + i2c_scl_pin_desc = &(g_APinDescription[i2c_scl_pin]); + pinMode(i2c_sda_pin, OUTPUT); + digitalWrite(i2c_sda_pin, HIGH); + pinMode(i2c_scl_pin, OUTPUT); + digitalWrite(i2c_scl_pin, HIGH); + PIO_Configure( i2c_sda_pin_desc->pPort, PIO_OUTPUT_0, i2c_sda_pin_desc->ulPin, PIO_OPENDRAIN ); + PIO_Configure( i2c_scl_pin_desc->pPort, PIO_OUTPUT_0, i2c_scl_pin_desc->ulPin, PIO_OPENDRAIN ); + PIO_Clear( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin) ; + PIO_Clear( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin) ; + PIO_Configure( i2c_sda_pin_desc->pPort, PIO_INPUT, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + PIO_Configure( i2c_scl_pin_desc->pPort, PIO_INPUT, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + i2c_delay(); +} + +/* actually, the scl line is not observed, so this procedure does not return a value */ +static void i2c_read_scl_and_delay(void) +{ + uint32_t dwMask = i2c_scl_pin_desc->ulPin; + //PIO_Configure( i2c_scl_pin_desc->pPort, PIO_INPUT, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + //PIO_SetInput( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin, PIO_DEFAULT ) ; + + /* set as input */ + i2c_scl_pin_desc->pPort->PIO_ODR = dwMask ; + i2c_scl_pin_desc->pPort->PIO_PER = dwMask ; + + i2c_delay(); +} + +static void i2c_clear_scl(void) +{ + uint32_t dwMask = i2c_scl_pin_desc->ulPin; + + /* set open collector and drive low */ + //PIO_Configure( i2c_scl_pin_desc->pPort, PIO_OUTPUT_0, i2c_scl_pin_desc->ulPin, PIO_OPENDRAIN ); + //PIO_SetOutput( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin, 0, 1, 0); + + /* open drain, zero default output */ + i2c_scl_pin_desc->pPort->PIO_MDER = dwMask; + i2c_scl_pin_desc->pPort->PIO_CODR = dwMask; + i2c_scl_pin_desc->pPort->PIO_OER = dwMask; + i2c_scl_pin_desc->pPort->PIO_PER = dwMask; + + //PIO_Clear( i2c_scl_pin_desc->pPort, i2c_scl_pin_desc->ulPin) ; +} + +static uint8_t i2c_read_sda(void) +{ + uint32_t dwMask = i2c_sda_pin_desc->ulPin; + //PIO_Configure( i2c_sda_pin_desc->pPort, PIO_INPUT, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + //PIO_SetInput( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin, PIO_DEFAULT ) ; + + /* set as input */ + i2c_sda_pin_desc->pPort->PIO_ODR = dwMask ; + i2c_sda_pin_desc->pPort->PIO_PER = dwMask ; + + + return 1; +} + +static void i2c_clear_sda(void) +{ + uint32_t dwMask = i2c_sda_pin_desc->ulPin; + + /* set open collector and drive low */ + //PIO_Configure( i2c_sda_pin_desc->pPort, PIO_OUTPUT_0, i2c_sda_pin_desc->ulPin, PIO_OPENDRAIN ); + //PIO_SetOutput( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin, 0, 1, 0); + + /* open drain, zero default output */ + i2c_sda_pin_desc->pPort->PIO_MDER = dwMask ; + i2c_sda_pin_desc->pPort->PIO_CODR = dwMask ; + i2c_sda_pin_desc->pPort->PIO_OER = dwMask ; + i2c_sda_pin_desc->pPort->PIO_PER = dwMask ; + + //PIO_Clear( i2c_sda_pin_desc->pPort, i2c_sda_pin_desc->ulPin) ; +} + +static void i2c_start(void) +{ + if ( i2c_started != 0 ) + { + /* if already started: do restart */ + i2c_read_sda(); /* SDA = 1 */ + i2c_delay(); + i2c_read_scl_and_delay(); + } + i2c_read_sda(); + /* + if (i2c_read_sda() == 0) + { + // do something because arbitration is lost + } + */ + /* send the start condition, both lines go from 1 to 0 */ + i2c_clear_sda(); + i2c_delay(); + i2c_clear_scl(); + i2c_started = 1; +} + + +static void i2c_stop(void) +{ + /* set SDA to 0 */ + i2c_clear_sda(); + i2c_delay(); + + /* now release all lines */ + i2c_read_scl_and_delay(); + + /* set SDA to 1 */ + i2c_read_sda(); + i2c_delay(); + i2c_started = 0; +} + +static void i2c_write_bit(uint8_t val) +{ + if (val) + i2c_read_sda(); + else + i2c_clear_sda(); + + i2c_delay(); + i2c_read_scl_and_delay(); + i2c_clear_scl(); +} + +static uint8_t i2c_read_bit(void) +{ + uint8_t val; + /* do not drive SDA */ + i2c_read_sda(); + i2c_delay(); + i2c_read_scl_and_delay(); + val = i2c_read_sda(); + i2c_delay(); + i2c_clear_scl(); + return val; +} + +static uint8_t i2c_write_byte(uint8_t b) +{ + i2c_write_bit(b & 128); + i2c_write_bit(b & 64); + i2c_write_bit(b & 32); + i2c_write_bit(b & 16); + i2c_write_bit(b & 8); + i2c_write_bit(b & 4); + i2c_write_bit(b & 2); + i2c_write_bit(b & 1); + + /* read ack from client */ + /* 0: ack was given by client */ + /* 1: nothing happend during ack cycle */ + return i2c_read_bit(); +} + + + +void u8g_i2c_init(uint8_t options) +{ + u8g_i2c_opt = options; + u8g_i2c_clear_error(); + + if ( u8g_i2c_opt & U8G_I2C_OPT_FAST ) + { + i2c_delay = i2c_400KHz_delay; + } + else + { + i2c_delay = i2c_100KHz_delay; + } + + + if ( u8g_i2c_opt & U8G_I2C_OPT_DEV_1 ) + { + i2c_scl_pin = PIN_WIRE1_SCL; + i2c_sda_pin = PIN_WIRE1_SDA; + + //REG_PIOA_PDR = PIO_PB12A_TWD1 | PIO_PB13A_TWCK1; + } + else + { + + i2c_scl_pin = PIN_WIRE_SCL; + i2c_sda_pin = PIN_WIRE_SDA; + + //REG_PIOA_PDR = PIO_PA17A_TWD0 | PIO_PA18A_TWCK0; + } + + i2c_init(); + +} + +/* sla includes also the r/w bit */ +uint8_t u8g_i2c_start(uint8_t sla) +{ + i2c_start(); + i2c_write_byte(sla); + return 1; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) +{ + return i2c_write_byte(data); +} + +void u8g_i2c_stop(void) +{ + i2c_stop(); +} + + +#elif defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +#define I2C_SLA 0x3c + +static int fd=-1; +static uint8_t i2cMode = 0; + +void u8g_i2c_init(uint8_t options) { + u8g_i2c_clear_error(); + u8g_i2c_opt = options; + + if (wiringPiSetup() == -1) { + printf("wiringPi-Error\n"); + exit(1); + } + + fd = wiringPiI2CSetup(I2C_SLA); + if (fd < 0) { + printf ("Unable to open I2C device 0: %s\n", strerror (errno)) ; + exit (1) ; + } + //u8g_SetPIOutput(u8g, U8G_PI_RESET); + //u8g_SetPIOutput(u8g, U8G_PI_A0); +} +uint8_t u8g_i2c_start(uint8_t sla) { + u8g_i2c_send_mode(0); + + return 1; +} + +void u8g_i2c_stop(void) { +} + +uint8_t u8g_i2c_send_mode(uint8_t mode) { + i2cMode = mode; +} + +uint8_t u8g_i2c_send_byte(uint8_t data) { + wiringPiI2CWriteReg8(fd, i2cMode, data); + + return 1; +} + +uint8_t u8g_i2c_wait(uint8_t mask, uint8_t pos) +{ + return 1; +} + +#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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c new file mode 100644 index 000000000..38a88a0fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_io.c @@ -0,0 +1,273 @@ +/* + + 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. + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START(); + U8G_ATOMIC_END(); + + uint8_t u8g_Pin(uint8_t port, uint8_t bitpos) Convert to internal number: AVR: port*8+bitpos, ARM: port*16+bitpos + 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) + + +*/ + +#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 ) + { + U8G_ATOMIC_AND(tmp, ~_BV(internal_pin_number&7)); + // *tmp &= ~_BV(internal_pin_number&7); + } + else + { + U8G_ATOMIC_OR(tmp, _BV(internal_pin_number&7)); + //*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; +} + +#elif defined(U8G_RASPBERRY_PI) + +#include +//#include "/usr/local/include/wiringPi.h" + +void u8g_SetPinOutput(uint8_t internal_pin_number) { + pinMode(internal_pin_number, OUTPUT); +} + +void u8g_SetPinInput(uint8_t internal_pin_number) { + pinMode(internal_pin_number, INPUT); +} + +void u8g_SetPinLevel(uint8_t internal_pin_number, uint8_t level) { + digitalWrite(internal_pin_number, level); +} + +uint8_t u8g_GetPinLevel(uint8_t internal_pin_number) { + return digitalRead(internal_pin_number); +} + + +#else + +/* convert "port" and "bitpos" to internal pin number */ +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 + + +#if defined(U8G_WITH_PINLIST) + +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); +} + +#else /* defined(U8G_WITH_PINLIST) */ +void u8g_SetPIOutput(u8g_t *u8g, uint8_t pi) +{ +} + +void u8g_SetPILevel(u8g_t *u8g, uint8_t pi, uint8_t level) +{ +} + +#endif /* defined(U8G_WITH_PINLIST) */ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_null.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_null.c new file mode 100644 index 000000000..1d9deebff --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c new file mode 100644 index 000000000..611391f54 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_hw_spi.c @@ -0,0 +1,124 @@ +/* + + u8g_com_raspberrypi_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 + + Update for ATOMIC operation done (01 Jun 2013) + U8G_ATOMIC_OR(ptr, val) + U8G_ATOMIC_AND(ptr, val) + U8G_ATOMIC_START() + U8G_ATOMIC_END() + + + +*/ + +#include "u8g.h" + + + +#if defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +uint8_t u8g_com_raspberrypi_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_INIT: + // check wiringPi setup + if (wiringPiSetup() == -1) + { + printf("wiringPi-Error\n"); + exit(1); + } + + if (wiringPiSPISetup (0, 100000) < 0) + { + printf ("Unable to open SPI device 0: %s\n", strerror (errno)) ; + exit (1) ; + } + + u8g_SetPIOutput(u8g, U8G_PI_RESET); + u8g_SetPIOutput(u8g, U8G_PI_A0); + + 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: + /* Done by the SPI hardware */ + break; + + case U8G_COM_MSG_RESET: + u8g_SetPILevel(u8g, U8G_PI_RESET, arg_val); + break; + + case U8G_COM_MSG_WRITE_BYTE: + wiringPiSPIDataRW (0, &arg_val, 1) ; + break; + + case U8G_COM_MSG_WRITE_SEQ: + wiringPiSPIDataRW (0, arg_ptr, arg_val); + break; + + case U8G_COM_MSG_WRITE_SEQ_P: + wiringPiSPIDataRW (0, arg_ptr, arg_val); + break; + } + return 1; +} + +#else + +uint8_t u8g_com_raspberrypi_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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c new file mode 100644 index 000000000..88d85ded2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_com_raspberrypi_ssd_i2c.c @@ -0,0 +1,176 @@ +/* + 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" + +#if defined(U8G_RASPBERRY_PI) + +#include +#include +#include +#include +#include + +#define I2C_SLA 0x3c +#define I2C_CMD_MODE 0x000 +#define I2C_DATA_MODE 0x040 + +#if defined(U8G_WITH_PINLIST) + +uint8_t u8g_com_raspberrypi_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_mode(I2C_CMD_MODE) == 0 ) + return 0; + } + else + { + if ( u8g_i2c_send_mode(I2C_DATA_MODE) == 0 ) + return 0; + } + + + u8g->pin_list[U8G_PI_SET_A0] = 0; + return 1; +} + +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) +{ + switch(msg) + { + case U8G_COM_MSG_INIT: + u8g_i2c_init(u8g->pin_list[U8G_PI_I2C_OPTION]); + u8g_SetPIOutput(u8g, U8G_PI_RESET); + u8g_SetPIOutput(u8g, U8G_PI_A0); + break; + + case U8G_COM_MSG_STOP: + break; + + case U8G_COM_MSG_RESET: + 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_raspberrypi_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_raspberrypi_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = (uint8_t *)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_raspberrypi_ssd_start_sequence(u8g) == 0 ) + return u8g_i2c_stop(), 0; + { + register uint8_t *ptr = (uint8_t *)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_raspberrypi_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; +} + +#else /* defined(U8G_WITH_PINLIST) */ + +uint8_t u8g_com_raspberrypi_ssd_i2c_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) { + return 1; +} + +#endif /* defined(U8G_WITH_PINLIST) */ +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_cursor.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_cursor.c new file mode 100644 index 000000000..62075ba6e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c new file mode 100644 index 000000000..a1329da1d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_delay.c @@ -0,0 +1,262 @@ +/* + + 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. + + + void u8g_Delay(uint16_t val) Delay by "val" milliseconds + void u8g_MicroDelay(void) Delay be one microsecond + void u8g_10MicroDelay(void) Delay by 10 microseconds + + +*/ + + +#include "u8g.h" + +/*==== Part 1: Derive suitable delay procedure ====*/ + +#if defined(ARDUINO) + +# if ARDUINO < 100 +# include +# else +# include +# endif + +# if defined(__AVR__) +# define USE_AVR_DELAY +# elif defined(__PIC32MX) +# define USE_PIC32_DELAY +# elif defined(__arm__) /* Arduino Due & Teensy */ +# define USE_ARDUINO_DELAY +# else +# define USE_ARDUINO_DELAY +# endif +#elif defined(U8G_RASPBERRY_PI) +# define USE_RASPBERRYPI_DELAY +#elif defined(__AVR__) +# define USE_AVR_DELAY +#elif defined(__18CXX) +# define USE_PIC18_DELAY +#elif defined(__arm__) +/* do not define anything, all procedures are expected to be defined outside u8glib */ + +/* +void u8g_Delay(uint16_t val); +void u8g_MicroDelay(void); +void u8g_10MicroDelay(void); +*/ + +#else +# define USE_DUMMY_DELAY +#endif + + + +/*==== Part 2: Definition of the delay procedures ====*/ + +/*== Raspberry Pi Delay ==*/ +#if defined (USE_RASPBERRYPI_DELAY) +#include +//#include "/usr/local/include/wiringPi.h" +void u8g_Delay(uint16_t val) { + //delay(val); + //usleep((uint32_t)val*(uint32_t)1000); + delayMicroseconds((uint32_t)val*(uint32_t)1000); +} +void u8g_MicroDelay(void) +{ + usleep(1); +} +void u8g_10MicroDelay(void) +{ + usleep(10); +} +#endif + + +/*== 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) +{ +#if defined(__arm__) + delayMicroseconds((uint32_t)val*(uint32_t)1000); +#else + delay(val); +#endif +} +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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c new file mode 100644 index 000000000..8968a26da --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_a2_micro_printer.c @@ -0,0 +1,199 @@ +/* + + u8g_dev_a2_micro_printer_ds.c + + Use DC2 bitmap command of the A2 Micro panel termal printer + double stroke + + 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. + + +*/ + +#include "u8g.h" + +#define LINE_DELAY 40 + + +uint8_t u8g_dev_a2_micro_printer_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_SPI_CLK_CYCLE_NONE); + 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); + + y = pb->p.page_y0; + ptr = pb->buf; + + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + u8g_WriteByte(u8g, dev, 18); /* DC2 */ + u8g_WriteByte(u8g, dev, 42 ); /* * */ + u8g_WriteByte(u8g, dev, pb->p.page_height ); + u8g_WriteByte(u8g, dev, pb->width/8 ); + + for( i = 0; i < pb->p.page_height; i ++ ) + { + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, *ptr); + ptr++; + } + u8g_Delay(LINE_DELAY); + y++; + } + + /* set parameters back to their default values */ + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_expand4(uint8_t val) +{ + uint8_t a,b,c,d; + a = val&1; + b = (val&2)<<1; + c = (val&4)<<2; + d = (val&8)<<3; + a |=b; + a |=c; + a |=d; + a |= a<<1; + return a; +} + +uint8_t u8g_dev_a2_micro_printer_double_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_SPI_CLK_CYCLE_NONE); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + { + //u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + //u8g_WriteByte(u8g, dev, 18); /* DC2 */ + //u8g_WriteByte(u8g, dev, 42 ); /* * */ + //u8g_WriteByte(u8g, dev, pb->p.total_height*2 ); + //u8g_WriteByte(u8g, dev, pb->width/8*2 ); + } + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + uint8_t y, i, j; + uint8_t *ptr; + uint8_t *p2; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + + y = pb->p.page_y0; + ptr = pb->buf; + //u8g_WriteByte(u8g, dev, 18); /* DC2 */ + //u8g_WriteByte(u8g, dev, 35 ); /* # */ + //u8g_WriteByte(u8g, dev, 0x0ff ); /* max */ + + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 160); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 20); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + u8g_WriteByte(u8g, dev, 18); /* DC2 */ + u8g_WriteByte(u8g, dev, 42 ); /* * */ + u8g_WriteByte(u8g, dev, pb->p.page_height*2 ); + u8g_WriteByte(u8g, dev, pb->width/8*2 ); + + for( i = 0; i < pb->p.page_height; i ++ ) + { + p2 = ptr; + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4)); + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15)); + p2++; + } + u8g_Delay(LINE_DELAY); + p2 = ptr; + for( j = 0; j < pb->width/8; j++ ) + { + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 >> 4)); + u8g_WriteByte(u8g, dev, u8g_dev_expand4(*p2 & 15)); + p2++; + } + u8g_Delay(LINE_DELAY); + ptr += pb->width/8; + y++; + } + + /* set parameters back to their default values */ + u8g_WriteByte(u8g, dev, 27); /* ESC */ + u8g_WriteByte(u8g, dev, 55 ); /* parameter command */ + u8g_WriteByte(u8g, dev, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/ + u8g_WriteByte(u8g, dev, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */ + u8g_WriteByte(u8g, dev, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/ + + } + break; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +#if defined(U8G_16BIT) +U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 384, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 360, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 720, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +#else +U8G_PB_DEV(u8g_dev_a2_micro_printer_384x240, 240, 240, 8, u8g_dev_a2_micro_printer_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x360_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x720_ds, 192, 240, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); +#endif + +U8G_PB_DEV(u8g_dev_a2_micro_printer_192x120_ds, 192, 120, 8, u8g_dev_a2_micro_printer_double_fn, u8g_com_null_fn); diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_flipdisc_2x7.c new file mode 100644 index 000000000..d86d08e05 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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, (uint8_t *)(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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_gprof.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_gprof.c new file mode 100644 index 000000000..cb2342ac4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ht1632.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ht1632.c new file mode 100644 index 000000000..4977793f1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ht1632.c @@ -0,0 +1,281 @@ +/* + + u8g_dev_ht1632.c + + 1-Bit (BW) Driver for HT1632 controller + + 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. + + + + U8G_PIN_NONE can be used as argument + + 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) + { + ... + 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; + +mapping + +#define DATA_PIN --> U8G_PI_MOSI +#define WR_PIN --> U8G_PI_SCK +#define CS_PIN --> U8G_PI_CS + U8G_PI_A0 --> not used + U8G_PI_RESET --> not used + +Usage: + + u8g_InitSPI(&u8g, &u8g_dev_ht1632_24x16, WR_PIN, DATA_IN, CS_PIN, U8G_PIN_NONE, U8G_PIN_NONE) + +*/ + +#include "u8g.h" + +#define WIDTH 24 +#define HEIGHT 16 +#define PAGE_HEIGHT 16 + +/* http://forum.arduino.cc/index.php?topic=168537.0 */ + +#define HT1632_CMD_SYSDIS 0x00 // CMD= 0000-0000-x Turn off oscil +#define HT1632_CMD_SYSON 0x01 // CMD= 0000-0001-x Enable system oscil +#define HT1632_CMD_LEDOFF 0x02 // CMD= 0000-0010-x LED duty cycle gen off +#define HT1632_CMD_LEDON 0x03 // CMD= 0000-0011-x LEDs ON +#define HT1632_CMD_BLOFF 0x08 // CMD= 0000-1000-x Blink OFF +#define HT1632_CMD_BLON 0x09 // CMD= 0000-1001-x Blink On +#define HT1632_CMD_SLVMD 0x10 // CMD= 0001-00xx-x Slave Mode +#define HT1632_CMD_MSTMD 0x14 // CMD= 0001-01xx-x Master Mode +#define HT1632_CMD_RCCLK 0x18 // CMD= 0001-10xx-x Use on-chip clock +#define HT1632_CMD_EXTCLK 0x1C // CMD= 0001-11xx-x Use external clock +#define HT1632_CMD_COMS00 0x20 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS01 0x24 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS10 0x28 // CMD= 0010-ABxx-x commons options +#define HT1632_CMD_COMS11 0x2C // P-MOS OUTPUT AND 16COMMON OPTION +#define HT1632_CMD_PWM 0xA0 // CMD= 101x-PPPP-x PWM duty cycle + +#define HT1632_ID_CMD 4 /* ID = 100 - Commands */ +#define HT1632_ID_RD 6 /* ID = 110 - Read RAM */ +#define HT1632_ID_WR 5 /* ID = 101 - Write RAM */ + +#define HT1632_ID_LEN 3 // IDs are 3 bits +#define HT1632_CMD_LEN 8 // CMDs are 8 bits +#define HT1632_DATA_LEN 8 // Data are 4*2 bits +#define HT1632_ADDR_LEN 7 // Address are 7 bits + +#if defined(ARDUINO) + +#if ARDUINO < 100 +#include +#else +#include +#endif + +//#define WR_PIN 3 +//#define DATA_PIN 2 +//#define CS_PIN 4 + +void ht1632_write_data_MSB(u8g_t *u8g, uint8_t cnt, uint8_t data, uint8_t extra) +{ + int8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + + for(i = cnt - 1; i >= 0; i--) + { + if ((data >> i) & 1) + { + digitalWrite(data_pin, HIGH); + } + else + { + digitalWrite(data_pin, LOW); + } + + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } + + // Send an extra bit + if (extra) + { + digitalWrite(data_pin, HIGH); + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } +} + +void ht1632_write_data(u8g_t *u8g, uint8_t cnt, uint8_t data) +{ + uint8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + for (i = 0; i < cnt; i++) + { + + if ((data >> i) & 1) { + digitalWrite(data_pin, HIGH); + } + else { + digitalWrite(data_pin, LOW); + } + + digitalWrite(wr_pin, LOW); + u8g_MicroDelay(); + digitalWrite(wr_pin, HIGH); + u8g_MicroDelay(); + } +} + + +void ht1632_init(u8g_t *u8g) +{ + //uint8_t i; + uint8_t data_pin = u8g->pin_list[U8G_PI_MOSI]; + uint8_t wr_pin = u8g->pin_list[U8G_PI_SCK]; + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + pinMode(data_pin, OUTPUT); + pinMode(wr_pin, OUTPUT); + pinMode(cs_pin, OUTPUT); + + digitalWrite(data_pin, HIGH); + digitalWrite(wr_pin, HIGH); + digitalWrite(cs_pin, HIGH); + + digitalWrite(cs_pin, LOW); + /* init display once after startup */ + ht1632_write_data_MSB(u8g, 3, HT1632_ID_CMD, false); // IDs are 3 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_SYSDIS, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_SYSON, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_COMS11, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_LEDON, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_BLOFF, true); // 8 bits + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_PWM+15, true); // 8 bits + digitalWrite(cs_pin, HIGH); + + /* removed following (debug) code */ + /* + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_WR, false); // Send "write to display" command + ht1632_write_data_MSB(u8g, 7, 0, false); + for(i = 0; i<48; ++i) + { + ht1632_write_data(u8g, 8, 0xFF); + } + digitalWrite(cs_pin, HIGH); + */ +} + +/* + page: 0=data contain lines 0..16, 1=data contain lines 16..32 (a 24x16 display will only have page 0) + cnt: width of the display + data: pointer to a buffer with 2*cnt bytes. +*/ +void ht1632_transfer_data(u8g_t *u8g, uint8_t page, uint8_t cnt, uint8_t *data) +{ + uint8_t addr; + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + /* send data to the ht1632 */ + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_WR, false); // Send "write to display" command + ht1632_write_data_MSB(u8g, 7, page*2*cnt, false); + + // Operating in progressive addressing mode + for (addr = 0; addr < cnt; addr++) + { + ht1632_write_data(u8g, 8, data[addr]); + ht1632_write_data(u8g, 8, data[addr+cnt]); + } + digitalWrite(cs_pin, HIGH); +} + +/* value is between 0...15 */ +void ht1632_set_contrast(u8g_t *u8g, uint8_t value) +{ + uint8_t cs_pin = u8g->pin_list[U8G_PI_CS]; + digitalWrite(cs_pin, LOW); + ht1632_write_data_MSB(u8g, 3, HT1632_ID_CMD, false); + ht1632_write_data_MSB(u8g, 8, HT1632_CMD_PWM + value, false); + digitalWrite(cs_pin, HIGH); +} + +#else +void ht1632_init(u8g_t *u8g) +{ +} + +void ht1632_transfer_data(u8g_t *u8g, uint8_t page, uint8_t cnt, uint8_t *data) +{ +} + +void ht1632_set_contrast(u8g_t *u8g, uint8_t value) +{ +} + +#endif /* ARDUINO */ + + +uint8_t u8g_dev_ht1632_24x16_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) +{ + switch(msg) + { + case U8G_DEV_MSG_INIT: + ht1632_init(u8g); + 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 */ + ht1632_transfer_data(u8g, pb->p.page, WIDTH, pb->buf); + } + break; + case U8G_DEV_MSG_CONTRAST: + /* values passed to SetContrast() are between 0 and 255, scale down to 0...15 */ + ht1632_set_contrast(u8g, (*(uint8_t *)arg) >> 4); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ht1632_24x16_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ht1632_24x16_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ht1632_24x16_buf}; +u8g_dev_t u8g_dev_ht1632_24x16 = { u8g_dev_ht1632_24x16_fn, &u8g_dev_ht1632_24x16_pb, u8g_com_null_fn }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ili9325d_320x240.c new file mode 100644 index 000000000..35db466b2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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, U8G_SPI_CLK_CYCLE_50NS); + //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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ks0108_128x64.c new file mode 100644 index 000000000..f30f8a38c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_160x80.c new file mode 100644 index 000000000..e05fa03a9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x128.c new file mode 100644 index 000000000..f0b9c3148 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_240x64.c new file mode 100644 index 000000000..9464b52ae --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c new file mode 100644 index 000000000..fe28f942e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_lc7981_320x64.c @@ -0,0 +1,151 @@ +/* + + 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" + +#ifdef U8G_16BIT +#define WIDTH 320 +#else +#define WIDTH 240 +#endif + +#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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c new file mode 100644 index 000000000..596d95898 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ld7032_60x32.c @@ -0,0 +1,232 @@ +/* + + u8g_dev_ld7032_60x32.c + + 60x32 OLED 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 as 64, so that it is a multiple of 8 */ +#define WIDTH 64 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ld7032_60x32_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_DLY(1), /* delay 1 ms */ + U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */ + U8G_ESC_CS(1), /* enable chip */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0x002, /* Dot Matrix Display ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x014, /* Dot Matrix Display Stand-by ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x01a, /* Dot Matrix Frame Rate */ + U8G_ESC_ADR(1), /* data mode */ + 0x004, /* special value for this OLED from manual */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x01d, /* Graphics Memory Writing Direction */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* reset default (right down, horizontal) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x009, /* Display Direction */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* reset default (x,y: min --> max) */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x030, /* Display Size X */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Column Start Output */ + 0x03b, /* Column End Output */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x032, /* Display Size Y */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* Row Start Output */ + 0x01f, /* Row End Output */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x010, /* Peak Pulse Width Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x016, /* Peak Pulse Delay Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x012, /* Dot Matrix Current Level Set */ + U8G_ESC_ADR(1), /* data mode */ + 0x050, /* 0x050 * 1 uA = 80 uA */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x018, /* Pre-Charge Pulse Width */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, /* 3 SCLK */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x044, /* Pre-Charge Mode */ + U8G_ESC_ADR(1), /* data mode */ + 0x002, /* Every Time */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x048, /* Row overlap timing */ + U8G_ESC_ADR(1), /* data mode */ + 0x003, /* Pre-Charge + Peak Delay + Peak boot Timing */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x03f, /* VCC_R_SEL */ + U8G_ESC_ADR(1), /* data mode */ + 0x011, /* ??? */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x03d, /* VSS selection */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 2.8V */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x002, /* Dot Matrix Display ON/OFF */ + U8G_ESC_ADR(1), /* data mode */ + 0x001, /* ON */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x008, /* write data */ + + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +/* use box commands to set start adr */ +static const uint8_t u8g_dev_ld7032_60x32_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0x034, /* box x start */ + U8G_ESC_ADR(1), /* data mode */ + 0x000, /* 0 */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x035, /* box x end */ + U8G_ESC_ADR(1), /* data mode */ + 0x007, /* */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x037, /* box y end */ + U8G_ESC_ADR(1), /* data mode */ + 0x01f, /* */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x036, /* box y start */ + U8G_ESC_ADR(1), /* data mode */ + + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ld7032_60x32_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + /* ... */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_ld7032_60x32_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + /* ... */ + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_ld7032_60x32_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_SPI_CLK_CYCLE_400NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_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_ld7032_60x32_data_start); + u8g_WriteByte(u8g, dev, pb->p.page_y0); /* y start */ + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x008); + 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_ld7032_60x32_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ld7032_60x32_sleep_off); + return 1; + } + return u8g_dev_pb8h1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_ld7032_60x32_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ld7032_60x32_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ld7032_60x32_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_PARALLEL); +U8G_PB_DEV(u8g_dev_ld7032_60x32_hw_usart_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ld7032_60x32_fn, U8G_COM_HW_USART_SPI); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_null.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_null.c new file mode 100644 index 000000000..c41380e8c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + } + return 1; +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c new file mode 100644 index 000000000..dbebd7cd0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcd8544_84x48.c @@ -0,0 +1,141 @@ +/* + + 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 */ +}; + + +static const uint8_t u8g_dev_pcd8544_sleep_on[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x00c, /* display on, normal */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_pcd8544_sleep_off[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x020, /* activate chip (PD=0), horizontal increment (V=0), enter normal command set (H=0) */ + 0x008, /* display blank */ + 0x024, /* power down (PD=1), horizontal increment (V=0), enter normal command set (H=0) */ + + U8G_ESC_DLY(50), /* delay 50 ms */ + U8G_ESC_CS(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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; + case U8G_DEV_MSG_SLEEP_ON: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_pcd8544_sleep_off); + 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); +U8G_PB_DEV(u8g_dev_pcd8544_84x48_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcd8544_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c new file mode 100644 index 000000000..380128446 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_pcf8812_96x65.c @@ -0,0 +1,138 @@ +/* + + 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_SPI_CLK_CYCLE_400NS); + 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; + + /* mirrored output, not tested*/ + /* + { + uint8_t i = pb->width; + while( i > 0 ) + { + i--; + u8g_WriteByte(u8g, dev, ((unsigned char *)pb->buf)[i] ); + } + } + */ + + + 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); +U8G_PB_DEV(u8g_dev_pcf8812_96x65_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_pcf8812_fn, U8G_COM_HW_SPI); diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_sbn1661_122x32.c new file mode 100644 index 000000000..a8552cb40 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c new file mode 100644 index 000000000..3052d6bca --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x32.c @@ -0,0 +1,289 @@ +/* + + 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, 128x32 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, 128x32 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + 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); +} + +uint8_t u8g_dev_ssd1306_128x32_2x_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_SPI_CLK_CYCLE_300NS); + 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*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x32_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + +uint8_t u8g_dev_ssd1306_128x32_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1306_128x32_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1306_128x32_2x_buf}; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_sw_spi = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_hw_spi = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x32_2x_i2c = { u8g_dev_ssd1306_128x32_2x_fn, &u8g_dev_ssd1306_128x32_2x_pb, U8G_COM_SSD_I2C }; diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c new file mode 100644 index 000000000..bd55e90e8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1306_128x64.c @@ -0,0 +1,412 @@ +/* + + 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 +// 26. Apr 2014: in this thead: http://forum.arduino.cc/index.php?topic=234930.msg1696754;topicseen#msg1696754 +// it is mentiond, that adafruit2_init_seq works better --> this will be used by the ssd1306_adafruit device +//#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 0 */ + U8G_ESC_END /* end of sequence */ +}; + +/* the sh1106 is compatible to the ssd1306, but is 132x64. display seems to be centered */ +static const uint8_t u8g_dev_sh1106_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 */ + 0x002, /* set lower 4 bit of the col adr to 2 (centered display with sh1106) */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_adafruit2_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); +} + +uint8_t u8g_dev_ssd1306_adafruit_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_SPI_CLK_CYCLE_300NS); + 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); +} + +uint8_t u8g_dev_sh1106_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_SPI_CLK_CYCLE_300NS); + 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_sh1106_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); +} + + +uint8_t u8g_dev_ssd1306_128x64_2x_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_SPI_CLK_CYCLE_300NS); + 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*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1306_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_sh1106_128x64_2x_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_SPI_CLK_CYCLE_300NS); + 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_sh1106_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_sh1106_128x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (pb->p.page*2+1)); /* select current page (SSD1306) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1306_adafruit_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1306_adafruit_128x64_fn, U8G_COM_SSD_I2C); + + +uint8_t u8g_dev_ssd1306_128x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_ssd1306_128x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1306_128x64_2x_buf}; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_sw_spi = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_hw_spi = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1306_128x64_2x_i2c = { u8g_dev_ssd1306_128x64_2x_fn, &u8g_dev_ssd1306_128x64_2x_pb, U8G_COM_SSD_I2C }; + + +U8G_PB_DEV(u8g_dev_sh1106_128x64_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_sh1106_128x64_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_sh1106_128x64_i2c, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_sh1106_128x64_fn, U8G_COM_SSD_I2C); + +uint8_t u8g_dev_sh1106_128x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_sh1106_128x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_sh1106_128x64_2x_buf}; +u8g_dev_t u8g_dev_sh1106_128x64_2x_sw_spi = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_sh1106_128x64_2x_hw_spi = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_sh1106_128x64_2x_i2c = { u8g_dev_sh1106_128x64_2x_fn, &u8g_dev_sh1106_128x64_2x_pb, U8G_COM_SSD_I2C }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1309_128x64.c new file mode 100644 index 000000000..a3aa77ac3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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(0), /* 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(0), /* 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c new file mode 100644 index 000000000..4db96270d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_bw.c @@ -0,0 +1,338 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + 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_MicroDelay(); // for DUE? + 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_MicroDelay(); // for DUE? + 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_SPI_CLK_CYCLE_300NS); + 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_MicroDelay(); // for DUE? + 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, 0x0c1); /* 21 May 2013, fixed contrast command */ + 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); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_bw_parallel , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1322_nhd31oled_bw_fn, U8G_COM_FAST_PARALLEL); + +#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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c new file mode 100644 index 000000000..61f0b1922 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1322_nhd31oled_gr.c @@ -0,0 +1,338 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + 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_MicroDelay(); // for DUE? + 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_MicroDelay(); // for DUE? + 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_SPI_CLK_CYCLE_300NS); + 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; /* 23 Oct 2013, changed to 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_MicroDelay(); // for DUE? + 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, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_hw_spi , WIDTH, HEIGHT, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_HW_SPI); +U8G_PB_DEV(u8g_dev_ssd1322_nhd31oled_gr_parallel , WIDTH, HEIGHT, 4, u8g_dev_ssd1322_nhd31oled_gr_fn, U8G_COM_FAST_PARALLEL); + + +#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 = { {8, 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw.c new file mode 100644 index 000000000..d8895391e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_bw_new.c new file mode 100644 index 000000000..7d26b2fee --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr.c new file mode 100644 index 000000000..6ab48135f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1325_nhd27oled_gr_new.c new file mode 100644 index 000000000..9ac51f2ff --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1327_96x96_gr.c new file mode 100644 index 000000000..3a11e2942 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c new file mode 100644 index 000000000..406e736aa --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_ssd1351_128x128.c @@ -0,0 +1,787 @@ +/* + + u8g_dev_ssd1351_128x128.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, jamjardavies@gmail.com + 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. + + History: + Initial version 20 May 2013 jamjardavies@gmail.com + indexed device 22 May 2013 olikraus@gmail.com + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + +static const uint8_t u8g_dev_ssd1351_128x128_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), + 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(50), + + 0xfd, /* Command Lock */ + U8G_ESC_ADR(1), + 0x12, + + U8G_ESC_ADR(0), /* instruction mode */ + 0xfd, + U8G_ESC_ADR(1), + 0xb1, /* Command Lock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xae, /* Set Display Off */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb3, + U8G_ESC_ADR(1), + 0xf1, /* Front Clock Div */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xca, + U8G_ESC_ADR(1), + 0x7f, /* Set Multiplex Ratio */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa0, + U8G_ESC_ADR(1), + 0xb4, /* Set Colour Depth */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x15, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Column Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x75, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Row Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa1, + U8G_ESC_ADR(1), + 0x00, /* Set Display Start Line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa2, + U8G_ESC_ADR(1), + 0x00, /* Set Display Offset */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb5, + U8G_ESC_ADR(1), + 0x00, /* Set GPIO */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xab, + U8G_ESC_ADR(1), + 0x01, /* Set Function Selection */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb1, + U8G_ESC_ADR(1), + 0x32, /* Set Phase Length */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb4, + U8G_ESC_ADR(1), + 0xa0, 0xb5, 0x55, /* Set Segment Low Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbb, + U8G_ESC_ADR(1), + 0x17, /* Set Precharge Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbe, + U8G_ESC_ADR(1), + 0x05, /* Set VComH Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc1, + U8G_ESC_ADR(1), + 0xc8, 0x80, 0xc8, /* Set Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc7, + U8G_ESC_ADR(1), + 0x0f, /* Set Master Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb6, + U8G_ESC_ADR(1), + 0x01, /* Set Second Precharge Period */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa6, /* Set Display Mode Reset */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb8, /* Set CMD Grayscale Lookup */ + U8G_ESC_ADR(1), + 0x05, + 0x06, + 0x07, + 0x08, + 0x09, + 0x0a, + 0x0b, + 0x0c, + 0x0D, + 0x0E, + 0x0F, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x18, + 0x1a, + 0x1b, + 0x1C, + 0x1D, + 0x1F, + 0x21, + 0x23, + 0x25, + 0x27, + 0x2A, + 0x2D, + 0x30, + 0x33, + 0x36, + 0x39, + 0x3C, + 0x3F, + 0x42, + 0x45, + 0x48, + 0x4C, + 0x50, + 0x54, + 0x58, + 0x5C, + 0x60, + 0x64, + 0x68, + 0x6C, + 0x70, + 0x74, + 0x78, + 0x7D, + 0x82, + 0x87, + 0x8C, + 0x91, + 0x96, + 0x9B, + 0xA0, + 0xA5, + 0xAA, + 0xAF, + 0xB4, + + U8G_ESC_ADR(0), + 0xaf, /* Set Display On */ + 0x5c, + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + + +/* set gpio to high */ +static const uint8_t u8g_dev_ssd1351_128x128gh_init_seq[] PROGMEM = { + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_DLY(50), + 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(50), + + 0xfd, /* Command Lock */ + U8G_ESC_ADR(1), + 0x12, + + U8G_ESC_ADR(0), /* instruction mode */ + 0xfd, + U8G_ESC_ADR(1), + 0xb1, /* Command Lock */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xae, /* Set Display Off */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb3, + U8G_ESC_ADR(1), + 0xf1, /* Front Clock Div */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xca, + U8G_ESC_ADR(1), + 0x7f, /* Set Multiplex Ratio */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa0, + U8G_ESC_ADR(1), + 0xb4, /* Set Colour Depth */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x15, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Column Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0x75, + U8G_ESC_ADR(1), + 0x00, 0x7f, /* Set Row Address */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa1, + U8G_ESC_ADR(1), + 0x00, /* Set Display Start Line */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa2, + U8G_ESC_ADR(1), + 0x00, /* Set Display Offset */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb5, + U8G_ESC_ADR(1), + 0x03, /* Set GPIO to High Level */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xab, + U8G_ESC_ADR(1), + 0x01, /* Set Function Selection */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb1, + U8G_ESC_ADR(1), + 0x32, /* Set Phase Length */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb4, + U8G_ESC_ADR(1), + 0xa0, 0xb5, 0x55, /* Set Segment Low Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbb, + U8G_ESC_ADR(1), + 0x17, /* Set Precharge Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xbe, + U8G_ESC_ADR(1), + 0x05, /* Set VComH Voltage */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc1, + U8G_ESC_ADR(1), + 0xc8, 0x80, 0xc8, /* Set Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xc7, + U8G_ESC_ADR(1), + 0x0f, /* Set Master Contrast */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb6, + U8G_ESC_ADR(1), + 0x01, /* Set Second Precharge Period */ + + U8G_ESC_ADR(0), /* instruction mode */ + 0xa6, /* Set Display Mode Reset */ + + + U8G_ESC_ADR(0), /* instruction mode */ + 0xb8, /* Set CMD Grayscale Lookup */ + U8G_ESC_ADR(1), + 0x05, + 0x06, + 0x07, + 0x08, + 0x09, + 0x0a, + 0x0b, + 0x0c, + 0x0D, + 0x0E, + 0x0F, + 0x10, + 0x11, + 0x12, + 0x13, + 0x14, + 0x15, + 0x16, + 0x18, + 0x1a, + 0x1b, + 0x1C, + 0x1D, + 0x1F, + 0x21, + 0x23, + 0x25, + 0x27, + 0x2A, + 0x2D, + 0x30, + 0x33, + 0x36, + 0x39, + 0x3C, + 0x3F, + 0x42, + 0x45, + 0x48, + 0x4C, + 0x50, + 0x54, + 0x58, + 0x5C, + 0x60, + 0x64, + 0x68, + 0x6C, + 0x70, + 0x74, + 0x78, + 0x7D, + 0x82, + 0x87, + 0x8C, + 0x91, + 0x96, + 0x9B, + 0xA0, + 0xA5, + 0xAA, + 0xAF, + 0xB4, + + U8G_ESC_ADR(0), + 0xaf, /* Set Display On */ + 0x5c, + U8G_ESC_DLY(50), + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_ADR(1), + U8G_ESC_END /* end of sequence */ +}; + +#define u8g_dev_ssd1351_128x128_init_seq u8g_dev_ssd1351_128x128_init_seq + +static const uint8_t u8g_dev_ssd1351_128x128_column_seq[] PROGMEM = { + U8G_ESC_CS(1), + U8G_ESC_ADR(0), 0x15, + U8G_ESC_ADR(1), 0x00, 0x7f, + U8G_ESC_ADR(0), 0x75, + U8G_ESC_ADR(1), 0x00, 0x7f, + U8G_ESC_ADR(0), 0x5c, + U8G_ESC_ADR(1), + U8G_ESC_CS(0), + U8G_ESC_END +}; + +#define RGB332_STREAM_BYTES 8 +static uint8_t u8g_ssd1351_stream_bytes[RGB332_STREAM_BYTES*3]; + +void u8g_ssd1351_to_stream(uint8_t *ptr) +{ + uint8_t cnt = RGB332_STREAM_BYTES; + uint8_t val; + uint8_t *dest = u8g_ssd1351_stream_bytes; + for( cnt = 0; cnt < RGB332_STREAM_BYTES; cnt++ ) + { + val = *ptr++; + *dest++ = ((val & 0xe0) >> 2); + *dest++ = ((val & 0x1c) << 1); + *dest++ = ((val & 0x03) << 4); + } +} + + +#ifdef OBSOLETE +// Convert the internal RGB 332 to R +static uint8_t u8g_ssd1351_get_r(uint8_t colour) +{ + //return ((colour & 0xe0) >> 5) * 9; + //return ((colour & 0xe0) >> 5) * 8; + return ((colour & 0xe0) >> 2) ; +} + +// Convert the internal RGB 332 to G +static uint8_t u8g_ssd1351_get_g(uint8_t colour) +{ + //return ((colour & 0x1c) >> 2) * 9; + //return ((colour & 0x1c) >> 2) * 8; + return ((colour & 0x1c) << 1); +} + +// Convert the internal RGB 332 to B +static uint8_t u8g_ssd1351_get_b(uint8_t colour) +{ + //return (colour & 0x03) * 21; + return (colour & 0x03) * 16; +} +#endif + + +uint8_t u8g_dev_ssd1351_128x128_332_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: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_uint_t x; + uint8_t page_height; + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( i = 0; i < page_height; i++ ) + { + + for (x = 0; x < pb->width; x+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES; + } + } + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1351_128x128gh_332_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: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128gh_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_uint_t x; + uint8_t page_height; + uint8_t i; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( i = 0; i < page_height; i++ ) + { + + for (x = 0; x < pb->width; x+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES; + } + } + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_R3G3B2; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +static uint8_t u8g_dev_ssd1351_128x128_r[256]; +static uint8_t u8g_dev_ssd1351_128x128_g[256]; +static uint8_t u8g_dev_ssd1351_128x128_b[256]; + +uint8_t u8g_dev_ssd1351_128x128_idx_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: + u8g_InitCom(u8g, dev, U8G_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + + case U8G_DEV_MSG_STOP: + break; + + case U8G_DEV_MSG_SET_COLOR_ENTRY: + u8g_dev_ssd1351_128x128_r[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->r; + u8g_dev_ssd1351_128x128_g[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->g; + u8g_dev_ssd1351_128x128_b[ ((u8g_dev_arg_irgb_t *)arg)->idx ] = ((u8g_dev_arg_irgb_t *)arg)->b; + break; + + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + + case U8G_DEV_MSG_PAGE_NEXT: + { + int x; + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + for (x = 0; x < pb->width; x++) + { + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_r[(*ptr)>>2]); + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_g[(*ptr)>>2]); + u8g_WriteByte(u8g, dev, u8g_dev_ssd1351_128x128_b[(*ptr)>>2]); + + ptr++; + } + + u8g_SetChipSelect(u8g, dev, 0); + } + + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_INDEX; + } + + return u8g_dev_pb8h8_base_fn(u8g, dev, msg, arg); +} + +void u8g_ssd1351_hicolor_to_stream(uint8_t *ptr) +{ + register uint8_t cnt = RGB332_STREAM_BYTES; + register uint8_t low, high, r, g, b; + uint8_t *dest = u8g_ssd1351_stream_bytes; + for( cnt = 0; cnt < RGB332_STREAM_BYTES; cnt++ ) + { + low = *ptr++; + high = *ptr++; + + r = high & ~7; + r >>= 2; + b = low & 31; + b <<= 1; + g = high & 7; + g <<= 3; + g |= (low>>5)&7; + + *dest++ = r; + *dest++ = g; + *dest++ = b; + } +} + + +uint8_t u8g_dev_ssd1351_128x128_hicolor_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_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t i, j; + uint8_t page_height; + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + for (i = 0; i < pb->width; i+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_hicolor_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES*2; + } + + } + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; /* continue to base fn */ + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return u8g_dev_pbxh16_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_ssd1351_128x128gh_hicolor_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_SPI_CLK_CYCLE_50NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128gh_init_seq); + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_ssd1351_128x128_column_seq); + break; + case U8G_DEV_MSG_PAGE_NEXT: + { + u8g_pb_t *pb = (u8g_pb_t *)(dev->dev_mem); + uint8_t i, j; + uint8_t page_height; + uint8_t *ptr = pb->buf; + + u8g_SetChipSelect(u8g, dev, 1); + + page_height = pb->p.page_y1; + page_height -= pb->p.page_y0; + page_height++; + for( j = 0; j < page_height; j++ ) + { + for (i = 0; i < pb->width; i+=RGB332_STREAM_BYTES) + { + u8g_ssd1351_hicolor_to_stream(ptr); + u8g_WriteSequence(u8g, dev, RGB332_STREAM_BYTES*3, u8g_ssd1351_stream_bytes); + ptr += RGB332_STREAM_BYTES*2; + } + + } + + u8g_SetChipSelect(u8g, dev, 0); + + } + break; /* continue to base fn */ + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return u8g_dev_pbxh16_base_fn(u8g, dev, msg, arg); +} + + +uint8_t u8g_dev_ssd1351_128x128_byte_buf[WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; + +u8g_pb_t u8g_dev_ssd1351_128x128_byte_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_332_sw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_332_hw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_332_sw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_332_hw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; + +//u8g_dev_t u8g_dev_ssd1351_128x128_idx_sw_spi = { u8g_dev_ssd1351_128x128_idx_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_SW_SPI }; +//u8g_dev_t u8g_dev_ssd1351_128x128_idx_hw_spi = { u8g_dev_ssd1351_128x128_idx_fn, &u8g_dev_ssd1351_128x128_byte_pb, U8G_COM_HW_SPI }; + + +/* only half of the height, because two bytes are needed for one pixel */ +u8g_pb_t u8g_dev_ssd1351_128x128_hicolor_byte_pb = { {PAGE_HEIGHT/2, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_sw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_hicolor_hw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_sw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_hicolor_hw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_hicolor_byte_pb, U8G_COM_HW_SPI }; + + +uint8_t u8g_dev_ssd1351_128x128_4x_byte_buf[WIDTH*PAGE_HEIGHT*4] U8G_NOCOMMON ; + +u8g_pb_t u8g_dev_ssd1351_128x128_4x_332_byte_pb = { {PAGE_HEIGHT*4, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_4x_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_sw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_332_hw_spi = { u8g_dev_ssd1351_128x128_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_sw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_332_hw_spi = { u8g_dev_ssd1351_128x128gh_332_fn, &u8g_dev_ssd1351_128x128_4x_332_byte_pb, U8G_COM_HW_SPI }; + +u8g_pb_t u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb = { {PAGE_HEIGHT/2*4, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_ssd1351_128x128_4x_byte_buf}; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_sw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128_4x_hicolor_hw_spi = { u8g_dev_ssd1351_128x128_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_sw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_ssd1351_128x128gh_4x_hicolor_hw_spi = { u8g_dev_ssd1351_128x128gh_hicolor_fn, &u8g_dev_ssd1351_128x128_4x_hicolor_byte_pb, U8G_COM_HW_SPI }; + + +/* +U8G_PB_DEV(u8g_dev_ssd1351_128x128_332_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_332_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1351_128x128_332_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_332_fn, U8G_COM_HW_SPI); + +U8G_PB_DEV(u8g_dev_ssd1351_128x128_idx_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_idx_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_ssd1351_128x128_idx_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_ssd1351_128x128_idx_fn, U8G_COM_HW_SPI); +*/ + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c new file mode 100644 index 000000000..ff909c5e9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_64128n.c @@ -0,0 +1,203 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +} + +uint8_t u8g_dev_st7565_64128n_2x_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_SPI_CLK_CYCLE_400NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_64128n_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); +U8G_PB_DEV(u8g_dev_st7565_64128n_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_64128n_fn, U8G_COM_PARALLEL); + +uint8_t u8g_dev_st7565_64128n_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_64128n_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_64128n_2x_buf}; +u8g_dev_t u8g_dev_st7565_64128n_2x_sw_spi = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_64128n_2x_hw_spi = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_st7565_64128n_2x_hw_parallel = { u8g_dev_st7565_64128n_2x_fn, &u8g_dev_st7565_64128n_2x_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c new file mode 100644 index 000000000..e73f06153 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm128.c @@ -0,0 +1,190 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +} + +uint8_t u8g_dev_st7565_dogm128_2x_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_SPI_CLK_CYCLE_400NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_dogm128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); +U8G_PB_DEV(u8g_dev_st7565_dogm128_parallel, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_dogm128_fn, U8G_COM_PARALLEL); + + +uint8_t u8g_dev_st7565_dogm128_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_dogm128_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_dogm128_2x_buf}; +u8g_dev_t u8g_dev_st7565_dogm128_2x_sw_spi = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_dogm128_2x_hw_spi = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_HW_SPI }; +u8g_dev_t u8g_dev_st7565_dogm128_2x_parallel = { u8g_dev_st7565_dogm128_2x_fn, &u8g_dev_st7565_dogm128_2x_pb, U8G_COM_PARALLEL }; diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_dogm132.c new file mode 100644 index 000000000..26de53924 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c new file mode 100644 index 000000000..165c39097 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6059.c @@ -0,0 +1,205 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +} + +uint8_t u8g_dev_st7565_lm6059_2x_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_SPI_CLK_CYCLE_400NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6059_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + + +uint8_t u8g_dev_st7565_lm6059_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_lm6059_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_lm6059_2x_buf}; +u8g_dev_t u8g_dev_st7565_lm6059_2x_sw_spi = { u8g_dev_st7565_lm6059_2x_fn, &u8g_dev_st7565_lm6059_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_lm6059_2x_hw_spi = { u8g_dev_st7565_lm6059_2x_fn, &u8g_dev_st7565_lm6059_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c new file mode 100644 index 000000000..d0b8c816d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_lm6063.c @@ -0,0 +1,236 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +} + +uint8_t u8g_dev_st7565_lm6063_2x_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_SPI_CLK_CYCLE_400NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_lm6063_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + +uint8_t u8g_dev_st7565_lm6063_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_lm6063_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_lm6063_2x_buf}; +u8g_dev_t u8g_dev_st7565_lm6063_2x_sw_spi = { u8g_dev_st7565_lm6063_2x_fn, &u8g_dev_st7565_lm6063_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_lm6063_2x_hw_spi = { u8g_dev_st7565_lm6063_2x_fn, &u8g_dev_st7565_lm6063_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c new file mode 100644 index 000000000..ed8dca2e0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12832.c @@ -0,0 +1,145 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +U8G_PB_DEV(u8g_dev_st7565_nhd_c12832_hw_usart_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7565_c12832_fn, U8G_COM_HW_USART_SPI); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c new file mode 100644 index 000000000..eeb5c0987 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7565_nhd_c12864.c @@ -0,0 +1,194 @@ +/* + + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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(0), /* disable chip, bugfix 12 nov 2014 */ + 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_SPI_CLK_CYCLE_400NS); + 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); +} + +uint8_t u8g_dev_st7565_nhd_c12864_2x_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_SPI_CLK_CYCLE_400NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_st7565_nhd_c12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + + +uint8_t u8g_dev_st7565_nhd_c12864_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_st7565_nhd_c12864_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_st7565_nhd_c12864_2x_buf}; +u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_sw_spi = { u8g_dev_st7565_nhd_c12864_2x_fn, &u8g_dev_st7565_nhd_c12864_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_st7565_nhd_c12864_2x_hw_spi = { u8g_dev_st7565_nhd_c12864_2x_fn, &u8g_dev_st7565_nhd_c12864_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7687_c144mvgd.c new file mode 100644 index 000000000..a11d3bc7d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_400NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c new file mode 100644 index 000000000..29e63134c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_128x64.c @@ -0,0 +1,175 @@ +/* + + u8g_dev_st7920_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_SPI_CLK_CYCLE_400NS); + 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_SPI_CLK_CYCLE_400NS); + 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); +U8G_PB_DEV(u8g_dev_st7920_128x64_custom, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_st7920_128x64_fn, u8g_com_arduino_st7920_custom_fn); + + + +#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 }; +u8g_dev_t u8g_dev_st7920_128x64_4x_custom = { u8g_dev_st7920_128x64_4x_fn, &u8g_dev_st7920_128x64_4x_pb, u8g_com_arduino_st7920_custom_fn }; + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_192x32.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_192x32.c new file mode 100644 index 000000000..736b08289 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_400NS); + 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_SPI_CLK_CYCLE_400NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_202x32.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_st7920_202x32.c new file mode 100644 index 000000000..b36b7abca --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_400NS); + 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_SPI_CLK_CYCLE_400NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x128.c new file mode 100644 index 000000000..15f618c5f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x128.c @@ -0,0 +1,193 @@ +/* + + u8g_dev_t6963_128x128.c + + 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 128x128 + 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 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_128x128_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_128x128_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_SPI_CLK_CYCLE_NONE); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_t6963_128x128_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_128x128_8bit, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_t6963_128x128_fn, U8G_COM_T6963); + +uint8_t u8g_dev_t6963_128x128_2x_bw_buf[WIDTH/8*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_t6963_128x128_2x_bw_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_t6963_128x128_2x_bw_buf}; +u8g_dev_t u8g_dev_t6963_128x128_8bit = { u8g_dev_t6963_128x128_fn, &u8g_dev_t6963_128x128_2x_bw_pb, U8G_COM_T6963 }; + + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_128x64.c new file mode 100644 index 000000000..97e158332 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x128.c new file mode 100644 index 000000000..7373f3888 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_t6963_240x64.c new file mode 100644 index 000000000..d0c4fd230 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_NONE); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_tls8204_84x48.c new file mode 100644 index 000000000..d8f423666 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_400NS); + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c new file mode 100644 index 000000000..015156676 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1601_c128032.c @@ -0,0 +1,201 @@ +/* + + u8g_dev_uc1601_c128032.c + + LCD-AG-C128032R-DIW W/KK E6 PBF from http://www.artronic.pl/o_produkcie.php?id=1343 + + 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. + + +*/ + +#include "u8g.h" + +#define WIDTH 128 +#define HEIGHT 32 +#define PAGE_HEIGHT 8 + +/* init sequence */ +static const uint8_t u8g_dev_uc1601_c128032_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, /* 0x0a3: LCD bias 1/7 , 0x0a2: LCD bias 1/9 */ + 0x0a0, /* 0x0a0: ADC set to normal, 0x0a1 ADC set to inverted */ + 0x0c8, /* common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1 */ + 0x0c2, /* 22 May 2013: mirror x */ + + 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(10), /* delay 10 ms */ + + 0x020| 0x06, /* set V0 voltage resistor ratio to 6 */ + + 0x0af, /* display on */ + + //0x081, /* set contrast */ + //0x018, /* contrast value*/ + + 0x0a6, /* display normal, bit val 0: LCD pixel off. */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_CS(0), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1601_c128032_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 */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1601_c128032_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_uc1601_c128032_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_uc1601_c128032_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_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_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1601) */ + 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_uc1601_c128032_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_off); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1601_c128032_2x_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_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_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (UC1601) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (UC1601) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_uc1601_c128032_sleep_on); + return 1; + case U8G_DEV_MSG_SLEEP_OFF: + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1601_c128032_sleep_off); + return 1; + } + return u8g_dev_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1601_c128032_sw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1601_c128032_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1601_c128032_hw_spi, WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1601_c128032_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1601_c128032_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1601_c128032_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1601_c128032_2x_buf}; +u8g_dev_t u8g_dev_uc1601_c128032_2x_sw_spi = { u8g_dev_uc1601_c128032_2x_fn, &u8g_dev_uc1601_c128032_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1601_c128032_2x_hw_spi = { u8g_dev_uc1601_c128032_2x_fn, &u8g_dev_uc1601_c128032_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c new file mode 100644 index 000000000..650b6b96f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x128.c @@ -0,0 +1,200 @@ +/* + + + + u8g_dev_uc1608_240x128.c + + Universal 8bit Graphics Library + + Copyright (c) 2013, olikraus@gmail.com (original 240x64 library) + Modified by thieringpeti@gmail.com for Raystar rx240128 family displays + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +*/ + +/* +Display: http://www.tme.eu/en/details/rx240128a-ghw/lcd-graphic-displays/raystar-optronics/ +Connection: HW / SW SPI. +To get this display working, You need some extra capacitors: + +connect 4.7uF caps between: + PIN1 & PIN2 VB1 +- + PIN3 & PIN4 VB0 -+ +connect 0.1uF caps between: + VLCD and VSS + VBIAS and VSS +You can find some schematics with a 10M resistor parallellized with the VLCD capacitor. + +Select 4-bit SPI mode. + +Connect D7 (PIN9) To VDD (+3.3V) +Connect D1, D2, D4, D5, D6 to GND (PINS 10,11,12,14,15) +Connect WR0, WR1, BM0, BM1 to GND (PINS 17,18,22,23) + +D0: (PIN16) AVR's SCK pin (HW SPI) +D3: (PIN13) AVR's MOSI pin (HW SPI) +CD: (PIN19) used as A0 in the library +CS: (PIN21) Connect to the defined CS pin, and You can re-use the HW SPI in different routines. +RST: (PIN20) optional reset, can be defined in the function, resets on initialization. + +Adjust contrast if necessary. Default: 0x072. + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 128 +#define PAGE_HEIGHT 8 + +/* see also ERC24064-1 for init sequence example */ +static const uint8_t u8g_dev_uc1608_240x128_init_seq[] PROGMEM = { + U8G_ESC_CS(1), /* disable chip (UC1608 has positive logic for CS) */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (15*16)+2 milliseconds */ + + + U8G_ESC_CS(0), /* enable chip */ + 0x0e2, /* soft reset */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x026, /* MUX rate and temperature compensation */ + + 0x0c8, /* Map control, Bit 3: MY=1, Bit 2: MX=0, Bit 0: MSF =0 */ + + 0x0eb, /* LCD bias Bits 0/1: 00=10.7 01=10.3, 10=12.0, 11=12.7*/ + /* default 0x0ea for 240x128 */ + 0x081, /* set contrast (bits 0..5) and gain (bits 6/7) */ + 0x072, /* default for 240x128 displays: 0x072*/ + + 0x02f, /* power on, Bit 2 PC2=1 (internal charge pump), Bits 0/1: cap of panel */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x040, /* set display start line to 0 */ + 0x090, /* no fixed lines */ + 0x089, /* RAM access control */ + + 0x0af, /* disable sleep mode */ + 0x0a4, /* normal display */ + 0x0a5, /* display all points, ST7565, UC1610 */ + // 0x0a7, /* inverse display */ + 0x0a6, /* normal display */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1608_240x128_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(0), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 (UC1608) */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1608_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_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_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1608) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1608_240x128_2x_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_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_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x128_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1608_240x128_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x128_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1608_240x128_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x128_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1608_240x128_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1608_240x128_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1608_240x128_2x_buf}; +u8g_dev_t u8g_dev_uc1608_240x128_2x_sw_spi = { u8g_dev_uc1608_240x128_2x_fn, &u8g_dev_uc1608_240x128_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1608_240x128_2x_hw_spi = { u8g_dev_uc1608_240x128_2x_fn, &u8g_dev_uc1608_240x128_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c new file mode 100644 index 000000000..6a99c6ba8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1608_240x64.c @@ -0,0 +1,168 @@ +/* + + u8g_dev_uc1608_240x64.c + + 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. + + +*/ + +#include "u8g.h" + +#define WIDTH 240 +#define HEIGHT 64 +#define PAGE_HEIGHT 8 + +/* see also ERC24064-1 for init sequence example */ +static const uint8_t u8g_dev_uc1608_240x64_init_seq[] PROGMEM = { + U8G_ESC_CS(1), /* disable chip (UC1608 has positive logic for CS) */ + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_RST(1), /* do reset low pulse with (15*16)+2 milliseconds */ + + + U8G_ESC_CS(0), /* enable chip */ + 0x0e2, /* soft reset */ + + U8G_ESC_DLY(100), /* delay 100 ms */ + U8G_ESC_DLY(100), /* delay 100 ms */ +#if HEIGHT <= 96 + 0x023, /* Bit 0/1: Temp compenstation, Bit 2: Multiplex Rate 0=96, 1=128 */ +#else + /* 30 Nov 2013: not tested */ + 0x027, /* Bit 0/1: Temp compenstation, Bit 2: Multiplex Rate 0=96, 1=128 */ +#endif + 0x0c8, /* Map control, Bit 3: MY=1, Bit 2: MX=0, Bit 0: MSF =0 */ + 0x0e8, /* LCD bias Bits 0/1: 00=10.7 01=10.3, 10=12.0, 11=12.7*/ + + 0x081, /* set contrast (bits 0..5) and gain (bits 6/7) */ + 0x014, /* ECR24064-1 default: 0x040*/ + + 0x02f, /* power on, Bit 2 PC2=1 (internal charge pump), Bits 0/1: cap of panel */ + U8G_ESC_DLY(50), /* delay 50 ms */ + + 0x040, /* set display start line to 0 */ + 0x090, /* no fixed lines */ + 0x089, /* RAM access control */ + + 0x0af, /* disable sleep mode */ + 0x0a4, /* normal display */ + 0x0a5, /* display all points, ST7565, UC1610 */ + U8G_ESC_DLY(100), /* delay 100 ms */ + 0x0a4, /* normal display */ + U8G_ESC_CS(1), /* disable chip */ + U8G_ESC_END /* end of sequence */ +}; + +static const uint8_t u8g_dev_uc1608_240x64_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(0), /* enable chip */ + 0x010, /* set upper 4 bit of the col adr to 0 (UC1608) */ + 0x000, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1608_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_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_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | pb->p.page); /* select current page (UC1608) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x081); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +uint8_t u8g_dev_uc1608_240x64_2x_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_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_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1608_240x64_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1608_240x64_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x64_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1608_240x64_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1608_240x64_fn, U8G_COM_HW_SPI); + +uint8_t u8g_dev_uc1608_240x64_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1608_240x64_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1608_240x64_2x_buf}; +u8g_dev_t u8g_dev_uc1608_240x64_2x_sw_spi = { u8g_dev_uc1608_240x64_2x_fn, &u8g_dev_uc1608_240x64_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1608_240x64_2x_hw_spi = { u8g_dev_uc1608_240x64_2x_fn, &u8g_dev_uc1608_240x64_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1610_dogxl160.c new file mode 100644 index 000000000..4f361664d --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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_SPI_CLK_CYCLE_300NS); + 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 *)((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 *)((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_SPI_CLK_CYCLE_300NS); + 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, (uint8_t *)(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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c new file mode 100644 index 000000000..52bf451d9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogm240.c @@ -0,0 +1,116 @@ +/* + + u8g_dev_uc1611_dogm240.c + + Universal 8bit Graphics Library + + Copyright (c) 2014, dev.menges.jonas@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (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 + + +static const uint8_t u8g_dev_uc1611_dogm240_init_seq[] PROGMEM = { + U8G_ESC_CS(1), // enable chip + U8G_ESC_ADR(0), // instruction mode + 0xF1, // set last COM electrode + 0x3F, // 64-1=63 + 0xF2, // set display start line + 0x00, // 0 + 0xF3, // set display end line + 0x3F, // 64-1=63 + 0x81, // set contrast (0-255) + 0xB7, // 183 + 0xC0, // set view + //0x04, // topview + 0x02, // bottomview + 0xA3, // set line rate (9.4k) + 0xE9, // set bias ratio (10) + 0xA9, // enable display + 0xD1, // set black and white mode + U8G_ESC_CS(0), // disable chip + U8G_ESC_END // end of sequence +}; + +static void setPage(u8g_t *u8g, u8g_dev_t *dev, unsigned char page) +{ + u8g_WriteByte(u8g, dev, 0x70); + u8g_WriteByte(u8g, dev, 0x60 + (page&0x0F)); +} + +static const uint8_t u8g_dev_uc1611_dogm240_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x10, /* set upper 4 bit of the col adr to 0 */ + 0x00, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +uint8_t u8g_dev_uc1611_dogm240_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogm240_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_uc1611_dogm240_data_start); + setPage(u8g, dev, pb->p.page); /* select current page (uc1611) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x81); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1611_dogm240_i2c , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_UC_I2C); +U8G_PB_DEV(u8g_dev_uc1611_dogm240_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1611_dogm240_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogm240_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c new file mode 100644 index 000000000..44242ecdf --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1611_dogxl240.c @@ -0,0 +1,116 @@ +/* + + u8g_dev_uc1611_dogxl240.c + + Universal 8bit Graphics Library + + Copyright (c) 2014, dev.menges.jonas@gmail.com, olikraus@gmail.com + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list + of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or other + materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + STRICT LIABILITY, OR TORT (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 + + +static const uint8_t u8g_dev_uc1611_dogxl240_init_seq[] PROGMEM = { + U8G_ESC_CS(1), // enable chip + U8G_ESC_ADR(0), // instruction mode + 0xF1, // set last COM electrode + 0x7F, // DOGXL240 + 0xF2, // set display start line + 0x00, // 0 + 0xF3, // set display end line + 0x7F, // DOGXL240 + 0x81, // set contrast (0-255) + 0xAA, // DOGXL240 + 0xC0, // set view + //0x04, // topview + 0x02, // bottomview + 0xA3, // set line rate (9.4k) + 0xE9, // set bias ratio (10) + 0xA9, // enable display + 0xD1, // set black and white mode + U8G_ESC_CS(0), // disable chip + U8G_ESC_END // end of sequence +}; + +static void u8g_dev_dogxl240_set_page(u8g_t *u8g, u8g_dev_t *dev, unsigned char page) +{ + u8g_WriteByte(u8g, dev, 0x70); + u8g_WriteByte(u8g, dev, 0x60 + (page&0x0F)); +} + +static const uint8_t u8g_dev_uc1611_dogxl240_data_start[] PROGMEM = { + U8G_ESC_ADR(0), /* instruction mode */ + U8G_ESC_CS(1), /* enable chip */ + 0x10, /* set upper 4 bit of the col adr to 0 */ + 0x00, /* set lower 4 bit of the col adr to 0 */ + U8G_ESC_END /* end of sequence */ +}; + +static uint8_t u8g_dev_uc1611_dogxl240_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_SPI_CLK_CYCLE_300NS); + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1611_dogxl240_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_uc1611_dogxl240_data_start); + u8g_dev_dogxl240_set_page(u8g, dev, pb->p.page); /* select current page (uc1611) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + if ( u8g_pb_WriteBuffer(pb, u8g, dev) == 0 ) + return 0; + u8g_SetChipSelect(u8g, dev, 1); + } + break; + case U8G_DEV_MSG_CONTRAST: + u8g_SetChipSelect(u8g, dev, 0); + u8g_SetAddress(u8g, dev, 0); /* instruction mode */ + u8g_WriteByte(u8g, dev, 0x81); + u8g_WriteByte(u8g, dev, (*(uint8_t *)arg) >> 2); /* set contrast from, keep gain at 0 */ + u8g_SetChipSelect(u8g, dev, 1); + return 1; + } + return u8g_dev_pb8v1_base_fn(u8g, dev, msg, arg); +} + +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_i2c , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_UC_I2C); +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_sw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_SW_SPI); +U8G_PB_DEV(u8g_dev_uc1611_dogxl240_hw_spi , WIDTH, HEIGHT, PAGE_HEIGHT, u8g_dev_uc1611_dogxl240_fn, U8G_COM_HW_SPI); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c new file mode 100644 index 000000000..5161ef95f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_dogs102.c @@ -0,0 +1,157 @@ +/* + + 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 */ + + 0x0e2, /* soft reset */ + 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_SPI_CLK_CYCLE_300NS); + 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); +} + +uint8_t u8g_dev_uc1701_dogs102_2x_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_SPI_CLK_CYCLE_300NS); + 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 | (2*pb->p.page)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_dogs102_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page (ST7565R) */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + +uint8_t u8g_dev_uc1701_dogs102_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1701_dogs102_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1701_dogs102_2x_buf}; +u8g_dev_t u8g_dev_uc1701_dogs102_2x_sw_spi = { u8g_dev_uc1701_dogs102_2x_fn, &u8g_dev_uc1701_dogs102_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1701_dogs102_2x_hw_spi = { u8g_dev_uc1701_dogs102_2x_fn, &u8g_dev_uc1701_dogs102_2x_pb, U8G_COM_HW_SPI }; + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c new file mode 100644 index 000000000..209a7b930 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_dev_uc1701_mini12864.c @@ -0,0 +1,158 @@ +/* + + 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 */ + + 0x0e2, /* soft reset */ + 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_SPI_CLK_CYCLE_300NS); + 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); +} + +uint8_t u8g_dev_uc1701_mini12864_2x_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_SPI_CLK_CYCLE_300NS); + 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 | (2*pb->p.page)); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, pb->buf); + u8g_SetChipSelect(u8g, dev, 0); + + u8g_WriteEscSeqP(u8g, dev, u8g_dev_uc1701_mini12864_data_start); + u8g_WriteByte(u8g, dev, 0x0b0 | (2*pb->p.page+1)); /* select current page */ + u8g_SetAddress(u8g, dev, 1); /* data mode */ + u8g_WriteSequence(u8g, dev, pb->width, (uint8_t *)(pb->buf)+pb->width); + 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_pb16v1_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); + +uint8_t u8g_dev_uc1701_mini12864_2x_buf[WIDTH*2] U8G_NOCOMMON ; +u8g_pb_t u8g_dev_uc1701_mini12864_2x_pb = { {16, HEIGHT, 0, 0, 0}, WIDTH, u8g_dev_uc1701_mini12864_2x_buf}; +u8g_dev_t u8g_dev_uc1701_mini12864_2x_sw_spi = { u8g_dev_uc1701_mini12864_2x_fn, &u8g_dev_uc1701_mini12864_2x_pb, U8G_COM_SW_SPI }; +u8g_dev_t u8g_dev_uc1701_mini12864_2x_hw_spi = { u8g_dev_uc1701_mini12864_2x_fn, &u8g_dev_uc1701_mini12864_2x_pb, U8G_COM_HW_SPI }; diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c new file mode 100644 index 000000000..57ff4675b --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ellipse.c @@ -0,0 +1,393 @@ +/* + + 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 + +#if defined(U8G_16BIT) +typedef int32_t u8g_long_t; +#else +typedef int16_t u8g_long_t; +#endif + + +/* + Source: + ftp://pc.fk0.name/pub/books/programming/bezier-ellipse.pdf + Foley, Computer Graphics, p 90 +*/ +static void u8g_draw_ellipse_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_ellipse_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); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 - y); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawPixel(u8g, x0 + x, y0 + y); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawPixel(u8g, x0 - x, y0 + y); + } +} + +void u8g_draw_ellipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + u8g_uint_t x, y; + u8g_long_t xchg, ychg; + u8g_long_t err; + u8g_long_t rxrx2; + u8g_long_t ryry2; + u8g_long_t stopx, stopy; + + rxrx2 = rx; + rxrx2 *= rx; + rxrx2 *= 2; + + ryry2 = ry; + ryry2 *= ry; + ryry2 *= 2; + + x = rx; + y = 0; + + xchg = 1; + xchg -= rx; + xchg -= rx; + xchg *= ry; + xchg *= ry; + + ychg = rx; + ychg *= rx; + + err = 0; + + stopx = ryry2; + stopx *= rx; + stopy = 0; + + while( stopx >= stopy ) + { + u8g_draw_ellipse_section(u8g, x, y, x0, y0, option); + y++; + stopy += rxrx2; + err += ychg; + ychg += rxrx2; + if ( 2*err+xchg > 0 ) + { + x--; + stopx -= ryry2; + err += xchg; + xchg += ryry2; + } + } + + x = 0; + y = ry; + + xchg = ry; + xchg *= ry; + + ychg = 1; + ychg -= ry; + ychg -= ry; + ychg *= rx; + ychg *= rx; + + err = 0; + + stopx = 0; + + stopy = rxrx2; + stopy *= ry; + + + while( stopx <= stopy ) + { + u8g_draw_ellipse_section(u8g, x, y, x0, y0, option); + x++; + stopx += ryry2; + err += xchg; + xchg += ryry2; + if ( 2*err+ychg > 0 ) + { + y--; + stopy -= rxrx2; + err += ychg; + ychg += rxrx2; + } + } + +} + +void u8g_DrawEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t rxp, rxp2; + u8g_uint_t ryp, ryp2; + + rxp = rx; + rxp++; + rxp2 = rxp; + rxp2 *= 2; + + ryp = ry; + ryp++; + ryp2 = ryp; + ryp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-rxp, y0-ryp, rxp2, ryp2) == 0) + return; + } + + u8g_draw_ellipse(u8g, x0, y0, rx, ry, option); +} + +static void u8g_draw_filled_ellipse_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_filled_ellipse_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); + } + + /* upper left */ + if ( option & U8G_DRAW_UPPER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0-y, y+1); + } + + /* lower right */ + if ( option & U8G_DRAW_LOWER_RIGHT ) + { + u8g_DrawVLine(u8g, x0+x, y0, y+1); + } + + /* lower left */ + if ( option & U8G_DRAW_LOWER_LEFT ) + { + u8g_DrawVLine(u8g, x0-x, y0, y+1); + } +} + +void u8g_draw_filled_ellipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + u8g_uint_t x, y; + u8g_long_t xchg, ychg; + u8g_long_t err; + u8g_long_t rxrx2; + u8g_long_t ryry2; + u8g_long_t stopx, stopy; + + rxrx2 = rx; + rxrx2 *= rx; + rxrx2 *= 2; + + ryry2 = ry; + ryry2 *= ry; + ryry2 *= 2; + + x = rx; + y = 0; + + xchg = 1; + xchg -= rx; + xchg -= rx; + xchg *= ry; + xchg *= ry; + + ychg = rx; + ychg *= rx; + + err = 0; + + stopx = ryry2; + stopx *= rx; + stopy = 0; + + while( stopx >= stopy ) + { + u8g_draw_filled_ellipse_section(u8g, x, y, x0, y0, option); + y++; + stopy += rxrx2; + err += ychg; + ychg += rxrx2; + if ( 2*err+xchg > 0 ) + { + x--; + stopx -= ryry2; + err += xchg; + xchg += ryry2; + } + } + + x = 0; + y = ry; + + xchg = ry; + xchg *= ry; + + ychg = 1; + ychg -= ry; + ychg -= ry; + ychg *= rx; + ychg *= rx; + + err = 0; + + stopx = 0; + + stopy = rxrx2; + stopy *= ry; + + + while( stopx <= stopy ) + { + u8g_draw_filled_ellipse_section(u8g, x, y, x0, y0, option); + x++; + stopx += ryry2; + err += xchg; + xchg += ryry2; + if ( 2*err+ychg > 0 ) + { + y--; + stopy -= rxrx2; + err += ychg; + ychg += rxrx2; + } + } + +} + +void u8g_DrawFilledEllipse(u8g_t *u8g, u8g_uint_t x0, u8g_uint_t y0, u8g_uint_t rx, u8g_uint_t ry, uint8_t option) +{ + /* check for bounding box */ + { + u8g_uint_t rxp, rxp2; + u8g_uint_t ryp, ryp2; + + rxp = rx; + rxp++; + rxp2 = rxp; + rxp2 *= 2; + + ryp = ry; + ryp++; + ryp2 = ryp; + ryp2 *= 2; + + if ( u8g_IsBBXIntersection(u8g, x0-rxp, y0-ryp, rxp2, ryp2) == 0) + return; + } + + u8g_draw_filled_ellipse(u8g, x0, y0, rx, ry, option); +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c new file mode 100644 index 000000000..f3c1eda4c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font.c @@ -0,0 +1,1500 @@ +/* + + 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; + case 2: return 6; + } + 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: + case 2: + /* + 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); + return 0; +} + + +/*========================================================================*/ +/* 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); + } +} + +/*========================================================================*/ +/* anti aliasing fonts */ + +int8_t u8g_draw_aa_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 += 3; + w /= 4; + + iy = y; + iy -= h; + iy++; + + for( j = 0; j < h; j++ ) + { + ix = x; + for( i = 0; i < w; i++ ) + { + u8g_Draw4TPixel(u8g, ix, iy, 0, u8g_pgm_read(data)); + data++; + ix+=4; + } + iy++; + } + return u8g->glyph_dx; +} + +int8_t u8g_DrawAAGlyph(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t encoding) +{ + y += u8g->font_calc_vref(u8g); + return u8g_draw_aa_glyph(u8g, x, y, encoding); +} + +u8g_uint_t u8g_DrawAAStr(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, const char *s) +{ + u8g_uint_t t = 0; + int8_t d; + + if ( u8g_font_GetFormat(u8g->font) != 2 ) + return 0; + //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_aa_glyph(u8g, x, y, *s); + x += d; + t += d; + s++; + } + return t; +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c new file mode 100644 index 000000000..091080897 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_font_data.c @@ -0,0 +1,88464 @@ +/* + 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_FONT_SECTION("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[136] U8G_FONT_SECTION("u8g_font_04b_03bn") = { + 1,5,6,0,255,5,0,0,0,0,42,58,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,3,19,35,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[136] U8G_FONT_SECTION("u8g_font_04b_03n") = { + 1,5,7,0,254,5,0,0,0,0,42,58,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,3,19,35,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[136] U8G_FONT_SECTION("u8g_font_04b_24n") = { + 1,5,6,0,255,5,0,0,0,0,42,58,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,3,19,35,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[189] U8G_FONT_SECTION("u8g_font_babyn") = { + 0,10,10,255,254,5,0,0,0,0,42,58,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,1,3,3,3,1,0,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[169] U8G_FONT_SECTION("u8g_font_blipfest_07n") = { + 0,5,6,0,255,5,0,0,0,0,42,58,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, + 1,3,3,2,0,0,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[189] U8G_FONT_SECTION("u8g_font_chikitan") = { + 0,9,10,0,254,5,0,0,0,0,42,58,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,1,3,3,2,0,1,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[707] U8G_FONT_SECTION("u8g_font_courB24n") = { + 0,30,44,249,245,21,0,0,0,0,42,58,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,5,15, + 15,20,7,0,112,248,248,112,0,0,0,0,0,0,0,112, + 248,248,112}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[658] U8G_FONT_SECTION("u8g_font_courR24n") = { + 0,28,42,250,246,20,0,0,0,0,42,58,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,5,14, + 14,20,7,0,112,248,248,112,0,0,0,0,0,0,112,248, + 248,112}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[167] U8G_FONT_SECTION("u8g_font_fixed_v0n") = { + 1,7,9,0,254,7,0,0,0,0,42,58,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,18, + 21,101,128,128,0,128,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[280] U8G_FONT_SECTION("u8g_font_fub11n") = { + 0,24,21,255,252,11,0,0,0,0,42,58,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,2,8,8,5,2,0, + 192,192,0,0,0,0,192,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[452] U8G_FONT_SECTION("u8g_font_fub14n") = { + 0,31,26,254,251,14,0,0,0,0,42,58,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,3,10,10,7,3,0,224,224,224,0,0,0, + 0,224,224,224}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[530] U8G_FONT_SECTION("u8g_font_fub17n") = { + 0,34,31,254,250,17,0,0,0,0,42,58,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, + 3,12,12,7,3,0,224,224,224,0,0,0,0,0,0,224, + 224,224}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[603] U8G_FONT_SECTION("u8g_font_fub20n") = { + 0,40,36,254,249,20,0,0,0,0,42,58,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,4,14,14,9,4,0,240,240,240, + 240,0,0,0,0,0,0,240,240,240,240}; +/* + 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_FONT_SECTION("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--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=14 h=20 x= 4 y= 0 dx=15 dy= 0 ascent=20 len=40 + Font Bounding box w=40 h=36 x=-2 y=-7 + Calculated Min Values x= 0 y= 0 dx= 0 dy= 0 + Pure Font ascent =20 descent= 0 + X Font ascent =20 descent= 0 + Max Font ascent =20 descent= 0 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_fub20t[477] U8G_SECTION(".progmem.u8g_font_fub20t") = { + 0,40,36,254,249,20,0,0,0,0,48,58,0,20,0,20, + 0,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}; +/* + 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_FONT_SECTION("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[981] U8G_FONT_SECTION("u8g_font_fub25n") = { + 0,50,46,254,247,25,0,0,0,0,42,58,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,5,18,18, + 11,5,0,248,248,248,248,248,0,0,0,0,0,0,0,0, + 248,248,248,248,248}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[1205] U8G_FONT_SECTION("u8g_font_fub30n") = { + 0,59,54,253,245,30,0,0,0,0,42,58,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,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}; +/* + 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_FONT_SECTION("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[1697] U8G_FONT_SECTION("u8g_font_fub35n") = { + 0,72,65,252,243,35,0,0,0,0,42,58,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,7,24,24,16,7,0,254,254,254,254,254,254,0, + 0,0,0,0,0,0,0,0,0,0,0,254,254,254,254,254, + 254}; +/* + 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[2270] U8G_FONT_SECTION("u8g_font_fub42n") = { + 0,87,77,251,241,42,0,0,0,0,42,58,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,8,29,29,19,8, + 0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0, + 0,0,0,0,0,0,255,255,255,255,255,255,255,255}; +/* + 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[3148] U8G_FONT_SECTION("u8g_font_fub49n") = { + 0,100,91,251,238,49,0,0,0,0,42,58,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,9,34,68,21,9,0,255,128,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,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,255,128,255,128,255,128, + 255,128,255,128,255,128,255,128,255,128,255,128}; +/* + 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_FONT_SECTION("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[279] U8G_FONT_SECTION("u8g_font_fur11n") = { + 0,20,20,255,252,11,0,0,0,0,42,58,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,1,8,8,4,2,0,128, + 128,0,0,0,0,128,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[421] U8G_FONT_SECTION("u8g_font_fur14n") = { + 0,26,26,255,251,14,0,0,0,0,42,58,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,2,10,10,5,2,0,192,192,0,0,0, + 0,0,0,192,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[528] U8G_FONT_SECTION("u8g_font_fur17n") = { + 0,31,30,254,250,17,0,0,0,0,42,58,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,2,12, + 12,6,2,0,192,192,192,0,0,0,0,0,0,192,192,192 + }; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[616] U8G_FONT_SECTION("u8g_font_fur20n") = { + 0,38,35,254,249,20,0,0,0,0,42,58,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,3,14,14,8,3,0,224,224,224,0,0,0, + 0,0,0,0,0,224,224,224}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[798] U8G_FONT_SECTION("u8g_font_fur25n") = { + 0,46,45,254,247,25,0,0,0,0,42,58,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,3,18,18,9,3,0,224,224,224,224, + 0,0,0,0,0,0,0,0,0,0,224,224,224,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_FONT_SECTION("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_FONT_SECTION("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[1201] U8G_FONT_SECTION("u8g_font_fur30n") = { + 0,54,54,253,245,30,0,0,0,0,42,58,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,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}; +/* + 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_FONT_SECTION("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[1447] U8G_FONT_SECTION("u8g_font_fur35n") = { + 0,65,64,252,243,35,0,0,0,0,42,58,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,5,24,24,13,5,0,248, + 248,248,248,248,248,0,0,0,0,0,0,0,0,0,0,0, + 0,248,248,248,248,248,248}; +/* + 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[2194] U8G_FONT_SECTION("u8g_font_fur42n") = { + 0,78,76,252,241,42,0,0,0,0,42,58,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, + 43,172,32,3,0,0,255,224,0,3,255,240,0,7,255,252, + 0,15,255,254,0,31,255,254,0,31,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,7,192,124,0,15,192,124,0,15, + 192,124,0,15,192,126,0,15,128,126,0,31,128,62,0,31, + 128,63,0,63,0,31,128,127,0,31,224,254,0,15,255,254, + 0,7,255,252,0,3,255,248,0,1,255,224,0,0,63,128, + 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,43,172,32,3,0,1, + 255,192,0,7,255,240,0,15,255,252,0,31,255,254,0,31, + 255,255,0,63,128,127,0,63,0,63,128,127,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,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,192,0,0,15,192,0, + 0,7,192,0,0,7,192,0,0,7,192,252,0,7,192,252, + 0,7,192,252,0,7,192,254,0,15,192,254,0,31,192,127, + 0,63,128,127,192,255,0,63,255,255,0,31,255,254,0,15, + 255,248,0,3,255,240,0,0,255,128,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,43,172,32,3,255,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,252,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,15,192,0,0,7,192,0, + 0,7,192,0,0,15,192,0,0,15,192,0,0,15,192,252, + 0,15,128,252,0,31,128,254,0,31,128,126,0,63,0,127, + 0,127,0,127,192,254,0,63,255,252,0,31,255,248,0,15, + 255,240,0,3,255,224,0,0,127,0,0,27,43,172,32,3, + 0,0,127,240,0,1,255,252,0,3,255,254,0,7,255,255, + 0,15,240,63,0,31,192,31,128,31,128,15,128,63,0,15, + 192,63,0,15,192,126,0,7,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,63,0,15, + 192,63,192,31,128,31,224,127,128,15,255,255,0,7,255,254, + 0,3,255,252,0,0,255,240,0,0,63,192,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,43,172,32,2, + 0,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,128,126,0,7,192,124,0,7,224,124,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,126,0,15, + 224,127,0,31,192,63,192,127,192,63,255,255,128,31,255,255, + 0,7,255,254,0,1,255,248,0,0,63,192,0,27,43,172, + 32,3,0,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,124,0,15,192,252,0,15,224,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,124,0,15,224,124,0,15,224,126, + 0,31,224,63,0,63,224,63,192,251,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,192,0,0,7,192,0,0,7,192,0, + 0,15,192,124,0,15,192,124,0,15,128,62,0,31,128,62, + 0,63,128,63,0,127,0,31,193,254,0,31,255,254,0,15, + 255,252,0,7,255,248,0,3,255,224,0,0,127,128,0,6, + 29,29,16,6,0,252,252,252,252,252,252,252,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,252,252,252,252,252, + 252,252}; +/* + 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[2683] U8G_FONT_SECTION("u8g_font_fur49n") = { + 0,92,89,251,238,49,0,0,0,0,42,58,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,7,34,34,19,7,0,254,254,254,254,254,254,254, + 254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,254,254,254,254,254,254,254,254}; +/* + 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_FONT_SECTION("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[278] U8G_FONT_SECTION("u8g_font_gdb11n") = { + 0,27,26,247,250,11,0,0,0,0,42,58,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,3,9,9,5,1,255,224,224,192, + 0,0,0,224,224,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[301] U8G_FONT_SECTION("u8g_font_gdb12n") = { + 0,29,28,246,249,12,0,0,0,0,42,58,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,3,9, + 9,5,1,0,224,224,192,0,0,0,224,224,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[464] U8G_FONT_SECTION("u8g_font_gdb14n") = { + 0,36,33,244,248,14,0,0,0,0,42,58,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, + 4,10,10,6,1,0,224,240,96,0,0,0,0,96,240,224 + }; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[561] U8G_FONT_SECTION("u8g_font_gdb17n") = { + 0,42,39,242,246,16,0,0,0,0,42,58,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,4,13, + 13,7,2,255,112,240,240,224,0,0,0,0,0,112,240,240, + 224}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[646] U8G_FONT_SECTION("u8g_font_gdb20n") = { + 0,49,47,240,244,19,0,0,0,0,42,58,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, + 5,16,16,9,2,255,112,248,248,248,112,0,0,0,0,0, + 0,112,248,248,248,112}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[985] U8G_FONT_SECTION("u8g_font_gdb25n") = { + 0,61,57,236,242,24,0,0,0,0,42,58,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, + 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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[1304] U8G_FONT_SECTION("u8g_font_gdb30n") = { + 0,74,69,232,239,29,0,0,0,0,42,58,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,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[263] U8G_FONT_SECTION("u8g_font_gdr10n") = { + 0,25,24,247,250,10,0,0,0,0,42,58,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,1,8,8,4,2,0,128, + 128,0,0,0,0,128,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[276] U8G_FONT_SECTION("u8g_font_gdr11n") = { + 0,26,25,247,250,11,0,0,0,0,42,58,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,2,8,8,4,1,0,192,128,0,0, + 0,0,192,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[286] U8G_FONT_SECTION("u8g_font_gdr12n") = { + 0,28,28,246,249,12,0,0,0,0,42,58,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,2,10, + 10,4,1,255,128,192,128,0,0,0,0,192,192,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[462] U8G_FONT_SECTION("u8g_font_gdr14n") = { + 0,35,33,244,248,14,0,0,0,0,42,58,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,2,11,11, + 5,2,0,192,192,192,0,0,0,0,0,192,192,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[559] U8G_FONT_SECTION("u8g_font_gdr17n") = { + 0,40,38,242,247,16,0,0,0,0,42,58,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,3,14,14,6,2, + 255,64,224,224,224,0,0,0,0,0,0,96,224,224,192}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[640] U8G_FONT_SECTION("u8g_font_gdr20n") = { + 0,47,44,240,246,19,0,0,0,0,42,58,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,4,15,15,7,2, + 0,112,240,240,96,0,0,0,0,0,0,0,112,240,240,224 + }; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[835] U8G_FONT_SECTION("u8g_font_gdr25n") = { + 0,59,57,236,242,24,0,0,0,0,42,58,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,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[1281] U8G_FONT_SECTION("u8g_font_gdr30n") = { + 0,71,68,232,239,29,0,0,0,0,42,58,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,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[248] U8G_FONT_SECTION("u8g_font_gdr9n") = { + 0,23,21,248,251,9,0,0,0,0,42,58,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,1,7,7,3,1, + 0,128,128,0,0,0,128,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 8 + Calculated Max Values w= 6 h= 8 x= 1 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 + Font Bounding box w=12 h=19 x=-1 y=-5 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB08n[228] U8G_FONT_SECTION("u8g_font_helvB08n") = { + 0,12,19,255,251,8,0,0,0,0,42,58,0,8,254,8, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 11 + Calculated Max Values w= 8 h=11 x= 2 y= 7 dx= 9 dy= 0 ascent=11 len=11 + Font Bounding box w=17 h=23 x=-1 y=-6 + Calculated Min Values x= 0 y=-1 dx= 0 dy= 0 + Pure Font ascent =11 descent= 0 + X Font ascent =11 descent= 0 + Max Font ascent =11 descent=-1 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB10n[265] U8G_FONT_SECTION("u8g_font_helvB10n") = { + 0,17,23,255,250,11,0,0,0,0,42,58,0,11,255,11, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 12 + Calculated Max Values w= 8 h=12 x= 2 y= 7 dx=10 dy= 0 ascent=12 len=12 + Font Bounding box w=20 h=27 x=-2 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 =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB12n[281] U8G_FONT_SECTION("u8g_font_helvB12n") = { + 0,20,27,254,249,12,0,0,0,0,42,58,0,12,253,12, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 13 + Calculated Max Values w= 9 h=14 x= 1 y= 8 dx=11 dy= 0 ascent=14 len=26 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =13 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB14n[416] U8G_FONT_SECTION("u8g_font_helvB14n") = { + 0,22,29,254,249,13,0,0,0,0,42,58,0,14,253,13, + 0,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 + }; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 18 + Calculated Max Values w=12 h=19 x= 2 y=12 dx=15 dy= 0 ascent=19 len=36 + Font Bounding box w=28 h=37 x=-2 y=-8 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =19 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvB18n[537] U8G_FONT_SECTION("u8g_font_helvB18n") = { + 0,28,37,254,248,18,0,0,0,0,42,58,0,19,253,18, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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= 3 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[743] U8G_FONT_SECTION("u8g_font_helvB24n") = { + 0,40,49,250,244,23,0,0,0,0,42,58,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, + 5,17,17,11,3,0,248,248,248,248,248,0,0,0,0,0, + 0,0,248,248,248,248,248}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 8 + Calculated Max Values w= 5 h= 8 x= 1 y= 5 dx= 6 dy= 0 ascent= 8 len= 8 + Font Bounding box w=13 h=18 x=-2 y=-4 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent = 8 descent= 0 + X Font ascent = 8 descent= 0 + Max Font ascent = 8 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR08n[226] U8G_FONT_SECTION("u8g_font_helvR08n") = { + 0,13,18,254,252,8,0,0,0,0,42,58,0,8,254,8, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 11 + Calculated Max Values w= 7 h=11 x= 2 y= 6 dx= 9 dy= 0 ascent=11 len=11 + Font Bounding box w=17 h=22 x=-2 y=-5 + 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_helvR10n[267] U8G_FONT_SECTION("u8g_font_helvR10n") = { + 0,17,22,254,251,11,0,0,0,0,42,58,0,11,254,11, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 12 + Calculated Max Values w= 9 h=12 x= 3 y= 7 dx=10 dy= 0 ascent=12 len=18 + Font Bounding box w=20 h=26 x=-2 y=-6 + Calculated Min Values x= 0 y=-2 dx= 0 dy= 0 + Pure Font ascent =12 descent= 0 + X Font ascent =12 descent= 0 + Max Font ascent =12 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR12n[290] U8G_FONT_SECTION("u8g_font_helvR12n") = { + 0,20,26,254,250,12,0,0,0,0,42,58,0,12,254,12, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 13 + Calculated Max Values w= 9 h=14 x= 2 y= 7 dx=10 dy= 0 ascent=14 len=26 + Font Bounding box w=22 h=29 x=-2 y=-7 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =13 descent= 0 + X Font ascent =13 descent= 0 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR14n[311] U8G_FONT_SECTION("u8g_font_helvR14n") = { + 0,22,29,254,249,13,0,0,0,0,42,58,0,14,253,13, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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: 0, '1' Height: 18 + Calculated Max Values w=12 h=19 x= 2 y=12 dx=14 dy= 0 ascent=19 len=36 + Font Bounding box w=28 h=37 x=-3 y=-8 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =18 descent= 0 + X Font ascent =18 descent= 0 + Max Font ascent =19 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_helvR18n[536] U8G_FONT_SECTION("u8g_font_helvR18n") = { + 0,28,37,253,248,18,0,0,0,0,42,58,0,19,253,18, + 0,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}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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= 4 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[726] U8G_FONT_SECTION("u8g_font_helvR24n") = { + 0,39,48,251,245,24,0,0,0,0,42,58,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,3,18, + 18,9,4,0,224,224,224,224,0,0,0,0,0,0,0,0, + 0,0,224,224,224,224}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[216] U8G_FONT_SECTION("u8g_font_lucasfont_alternaten") = { + 0,9,11,0,255,7,0,0,0,0,42,58,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,1,4, + 4,2,0,1,128,0,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[868] U8G_FONT_SECTION("u8g_font_ncenB24n") = { + 0,39,53,252,243,24,0,0,0,0,42,58,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,6,16, + 16,9,2,0,120,252,252,252,252,120,0,0,0,0,120,252, + 252,252,252,120}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[744] U8G_FONT_SECTION("u8g_font_ncenR24n") = { + 0,39,50,250,245,24,0,0,0,0,42,58,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,4,16,16,9,3,0,96,240,240,96,0,0,0,0, + 0,0,0,0,96,240,240,96}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[137] U8G_FONT_SECTION("u8g_font_orgv01n") = { + 1,11,11,0,254,5,0,0,0,0,42,58,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,2,20,36,128,0,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[618] U8G_FONT_SECTION("u8g_font_osb18n") = { + 0,70,31,234,249,18,0,0,0,0,42,58,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,4,12,12,8,2,0,96,240, + 240,96,0,0,0,0,96,240,240,96}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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,248,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[723] U8G_FONT_SECTION("u8g_font_osb21n") = { + 0,77,36,232,248,21,0,0,0,0,42,58,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,4, + 14,14,8,2,0,96,240,240,240,96,0,0,0,0,0,96, + 240,240,96}; +/* + 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_FONT_SECTION("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,248,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_FONT_SECTION("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[903] U8G_FONT_SECTION("u8g_font_osb26n") = { + 0,95,44,227,246,25,0,0,0,0,42,58,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, + 5,17,17,9,2,0,112,248,248,248,112,0,0,0,0,0, + 0,0,112,248,248,248,112}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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,120,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[1257] U8G_FONT_SECTION("u8g_font_osb29n") = { + 0,107,49,223,245,28,0,0,0,0,42,58,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,120, + 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}; +/* + 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_FONT_SECTION("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,120,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[22097] U8G_FONT_SECTION("u8g_font_osb35") = { + 0,133,60,215,242,35,12,220,29,224,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,32,64,13, + 2,247,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,60,0,127,0,255,0,255,128,255,128,255,128,57,128, + 1,128,1,128,3,0,3,0,6,0,12,0,56,0,240,0, + 64,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,129,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,124,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[1567] U8G_FONT_SECTION("u8g_font_osb35n") = { + 0,133,60,215,242,34,0,0,0,0,42,58,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,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}; +/* + 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[10247] U8G_FONT_SECTION("u8g_font_osb35r") = { + 0,133,60,215,242,35,12,220,29,224,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,32,64,13, + 2,247,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,60,0,127,0,255,0,255,128,255,128,255,128,57,128, + 1,128,1,128,3,0,3,0,6,0,12,0,56,0,240,0, + 64,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,129,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_FONT_SECTION("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,43,0,28,0,123,128,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,240,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,158,56,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[613] U8G_FONT_SECTION("u8g_font_osr18n") = { + 0,68,33,235,248,18,0,0,0,0,42,58,0,18,250,18, + 0,10,10,20,14,2,8,12,0,12,0,204,192,201,192,43, + 0,28,0,123,128,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}; +/* + 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_FONT_SECTION("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,43,0,28,0,123,128,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,240,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-153-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_FONT_SECTION("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,117,192,14,0, + 30,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,95, + 0,96,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,48,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,48,36,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,28,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-153-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[722] U8G_FONT_SECTION("u8g_font_osr21n") = { + 0,76,38,232,247,21,0,0,0,0,42,58,0,22,250,21, + 0,10,12,24,14,2,9,12,0,14,0,204,64,228,192,117, + 192,14,0,30,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,95,0,96,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}; +/* + Fontname: -FreeType-Old Standard TT-Medium-R-Normal--29-290-72-72-P-153-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_FONT_SECTION("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,117,192,14,0, + 30,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,95, + 0,96,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,48,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,48,36,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_FONT_SECTION("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,242,120,58,224,7,0,7,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,248,248,120,24,24,24,16,48,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,26,14, + 17,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,231,224,71,195,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[955] U8G_FONT_SECTION("u8g_font_osr26n") = { + 0,94,46,227,245,25,0,0,0,0,42,58,0,27,249,25, + 0,13,15,30,18,3,10,7,0,7,0,7,0,195,24,226, + 56,242,120,58,224,7,0,7,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}; +/* + 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_FONT_SECTION("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,242,120,58,224,7,0,7,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,248,248,120,24,24,24,16,48,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,26,14, + 17,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_FONT_SECTION("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,192,3,192,29,120,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,6,26,26,12,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,248,252,124, + 12,12,12,8,24,48,32,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,57,248,79,241,248,67,224,112,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[1226] U8G_FONT_SECTION("u8g_font_osr29n") = { + 0,107,51,223,244,28,0,0,0,0,42,58,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,192,3,192,29,120,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}; +/* + 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_FONT_SECTION("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,192,3,192,29,120,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,6,26,26,12,3,249,112,248, + 248,248,112,0,0,0,0,0,0,0,0,0,112,248,252,124, + 12,12,12,8,24,48,32,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_FONT_SECTION("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,224,195,128,240, + 135,192,248,143,192,60,159,128,3,248,0,1,224,0,3,240, + 0,30,190,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,96,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[1588] U8G_FONT_SECTION("u8g_font_osr35n") = { + 0,128,62,216,241,34,0,0,0,0,42,58,0,36,246,34, + 0,18,20,60,25,4,14,0,224,0,1,224,0,1,224,0, + 1,224,0,224,195,128,240,135,192,248,143,192,60,159,128,3, + 248,0,1,224,0,3,240,0,30,190,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}; +/* + 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_FONT_SECTION("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,224,195,128,240, + 135,192,248,143,192,60,159,128,3,248,0,1,224,0,3,240, + 0,30,190,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,96,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_FONT_SECTION("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[186] U8G_FONT_SECTION("u8g_font_p01typen") = { + 0,5,6,0,254,5,0,0,0,0,42,58,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,1,3,3,2,0,0,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[189] U8G_FONT_SECTION("u8g_font_pixelle_micron") = { + 0,6,8,255,254,5,0,0,0,0,42,58,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,1,3,3,2,0,0,128,0,128}; +/* + 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_FONT_SECTION("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: ProFont10 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 8 len= 9 + 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 = 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_profont10[2560] U8G_FONT_SECTION("u8g_font_profont10") = { + 0,5,9,0,254,6,1,126,2,248,32,255,254,8,254,7, + 254,0,0,0,5,0,0,1,6,6,5,2,0,128,128,128, + 128,0,128,3,2,2,5,1,5,160,160,5,5,5,5,0, + 1,80,248,80,248,80,5,8,8,5,0,255,32,120,160,112, + 40,168,112,32,5,6,6,5,0,0,120,168,176,104,168,144, + 4,6,6,5,0,0,64,160,64,80,160,80,1,2,2,5, + 2,4,128,128,3,8,8,5,1,255,32,64,128,128,128,128, + 64,32,3,8,8,5,0,255,128,64,32,32,32,32,64,128, + 4,5,5,5,0,1,64,144,96,144,32,3,3,3,5,0, + 1,64,224,64,2,3,3,5,0,254,64,64,128,2,1,1, + 5,1,2,192,1,1,1,5,2,0,128,4,8,8,5,0, + 254,16,16,32,32,64,64,128,128,4,6,6,5,0,0,96, + 144,176,208,144,96,3,6,6,5,1,0,64,192,64,64,64, + 224,4,6,6,5,0,0,96,144,16,32,64,240,4,6,6, + 5,0,0,96,144,32,16,144,96,4,6,6,5,0,0,32, + 96,160,240,32,112,4,6,6,5,0,0,240,128,224,16,144, + 96,4,6,6,5,0,0,96,128,224,144,144,96,4,6,6, + 5,0,0,240,16,32,64,64,64,4,6,6,5,0,0,96, + 144,96,144,144,96,4,6,6,5,0,0,96,144,144,112,16, + 96,1,4,4,5,2,0,128,0,0,128,2,6,6,5,0, + 254,64,0,0,64,64,128,3,5,5,5,1,0,32,64,128, + 64,32,4,3,3,5,0,1,240,0,240,3,5,5,5,1, + 0,128,64,32,64,128,4,6,6,5,0,0,96,144,32,64, + 0,64,4,6,6,5,0,0,96,144,176,176,128,112,4,6, + 6,5,0,0,96,144,144,240,144,144,4,6,6,5,0,0, + 224,144,224,144,144,224,4,6,6,5,0,0,96,144,128,128, + 144,96,4,6,6,5,0,0,224,144,144,144,144,224,4,6, + 6,5,0,0,240,128,224,128,128,240,4,6,6,5,0,0, + 240,128,224,128,128,128,4,6,6,5,0,0,96,144,128,176, + 144,96,4,6,6,5,0,0,144,144,240,144,144,144,3,6, + 6,5,1,0,224,64,64,64,64,224,4,6,6,5,0,0, + 16,16,16,16,144,96,4,6,6,5,0,0,144,160,192,192, + 160,144,4,6,6,5,0,0,128,128,128,128,128,240,4,6, + 6,5,0,0,144,240,240,144,144,144,4,6,6,5,0,0, + 144,208,176,144,144,144,4,6,6,5,0,0,96,144,144,144, + 144,96,4,6,6,5,0,0,224,144,144,224,128,128,4,7, + 7,5,0,255,96,144,144,144,176,96,16,4,6,6,5,0, + 0,224,144,144,224,144,144,4,6,6,5,0,0,96,144,96, + 16,144,96,3,6,6,5,1,0,224,64,64,64,64,64,4, + 6,6,5,0,0,144,144,144,144,144,96,4,6,6,5,0, + 0,144,144,144,144,160,64,4,6,6,5,0,0,144,144,144, + 240,240,144,4,6,6,5,0,0,144,144,96,96,144,144,4, + 6,6,5,0,0,144,144,160,64,64,64,4,6,6,5,0, + 0,240,16,32,64,128,240,2,8,8,5,2,255,192,128,128, + 128,128,128,128,192,4,8,8,5,1,254,128,128,64,64,32, + 32,16,16,2,8,8,5,1,255,192,64,64,64,64,64,64, + 192,3,2,2,5,1,4,64,160,5,1,1,5,0,254,248, + 2,2,2,5,1,5,128,64,4,4,4,5,0,0,112,144, + 176,80,4,6,6,5,0,0,128,128,224,144,144,224,4,4, + 4,5,0,0,96,144,128,112,4,6,6,5,0,0,16,16, + 112,144,144,112,4,4,4,5,0,0,96,240,128,112,3,6, + 6,5,1,0,32,64,224,64,64,64,4,6,6,5,0,254, + 112,144,144,112,16,96,4,6,6,5,0,0,128,128,224,144, + 144,144,3,6,6,5,1,0,64,0,192,64,64,224,2,8, + 8,5,1,254,64,0,192,64,64,64,64,128,4,6,6,5, + 0,0,128,128,160,192,160,144,3,6,6,5,1,0,192,64, + 64,64,64,224,5,4,4,5,0,0,240,168,168,168,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, + 160,208,128,128,4,4,4,5,0,0,112,224,16,224,3,6, + 6,5,1,0,64,64,224,64,64,32,4,4,4,5,0,0, + 144,144,176,80,4,4,4,5,0,0,144,144,160,64,5,4, + 4,5,0,0,168,168,168,80,4,4,4,5,0,0,144,96, + 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,9,9,5,1,254,32,64, + 64,64,128,64,64,64,32,1,8,8,5,2,255,128,128,128, + 128,128,128,128,128,3,9,9,5,1,254,128,64,64,64,32, + 64,64,64,128,4,2,2,5,0,2,80,160,0,0,0,5, + 0,0,0,0,0,5,0,0,0,0,0,5,0,0,2,3, + 3,5,0,255,64,64,128,3,9,9,5,1,254,32,64,64, + 224,64,64,64,64,128,4,3,3,5,0,255,80,80,160,5, + 1,1,5,0,0,168,3,5,5,5,1,1,64,224,64,64, + 64,3,5,5,5,1,1,64,224,64,224,64,3,2,2,5, + 1,5,64,160,5,6,6,5,0,0,120,208,224,112,248,112, + 4,8,8,5,0,0,80,32,112,128,96,16,144,96,2,3, + 3,5,0,0,64,128,64,4,6,6,5,0,0,112,160,176, + 160,160,112,0,0,0,5,0,0,0,0,0,5,0,0,0, + 0,0,5,0,0,0,0,0,5,0,0,2,3,3,5,2, + 3,64,128,128,2,3,3,5,1,3,64,64,128,4,3,3, + 5,0,3,80,160,160,4,3,3,5,0,3,80,80,160,4, + 4,4,5,0,1,96,240,240,96,2,1,1,5,1,2,192, + 5,1,1,5,0,2,248,4,2,2,5,0,5,80,160,5, + 3,3,5,0,3,248,88,88,4,7,7,5,0,0,80,32, + 0,112,224,16,224,2,3,3,5,0,0,128,64,128,4,4, + 4,5,0,0,112,176,160,80,0,0,0,5,0,0,0,0, + 0,5,0,0,4,8,8,5,0,0,80,0,144,144,160,64, + 64,64,0,0,0,5,0,0,1,6,6,5,2,0,128,0, + 128,128,128,128,4,6,6,5,0,255,32,96,176,192,112,64, + 4,6,6,5,0,0,96,128,192,128,144,224,4,4,4,5, + 0,0,144,96,96,144,3,6,6,5,1,0,160,64,224,64, + 224,64,1,8,8,5,2,255,128,128,128,0,0,128,128,128, + 4,8,8,5,0,255,96,144,64,160,80,32,144,96,2,1, + 1,5,1,5,192,4,6,6,5,0,0,192,32,208,208,32, + 192,3,5,5,5,1,2,96,160,96,0,224,5,3,3,5, + 0,0,72,144,72,4,2,2,5,0,1,240,16,3,1,1, + 5,0,2,224,4,5,5,5,0,1,192,32,208,208,176,2, + 1,1,5,1,5,192,3,3,3,5,1,3,64,160,64,3, + 4,4,5,0,0,64,224,64,224,2,3,3,5,1,4,128, + 64,192,2,3,3,5,1,4,192,64,192,2,1,1,5,2, + 5,192,4,5,5,5,0,255,160,160,160,208,128,4,6,6, + 5,0,0,112,176,176,112,48,48,1,1,1,5,2,2,128, + 2,2,2,5,1,254,192,192,2,3,3,5,1,4,192,64, + 64,3,5,5,5,1,2,64,160,64,0,224,5,3,3,5, + 0,0,144,72,144,5,7,7,5,0,0,192,72,80,32,72, + 152,8,5,7,7,5,0,0,192,72,80,32,80,136,24,5, + 7,7,5,0,0,192,72,208,32,72,152,8,4,6,6,5, + 0,0,32,0,32,64,144,96,4,8,8,5,0,0,64,32, + 96,144,144,240,144,144,4,8,8,5,0,0,32,64,96,144, + 144,240,144,144,4,8,8,5,0,0,32,80,0,96,144,240, + 144,144,4,8,8,5,0,0,80,160,0,96,144,240,144,144, + 4,8,8,5,0,0,80,0,96,144,144,240,144,144,4,8, + 8,5,0,0,32,80,32,96,144,240,144,144,4,6,6,5, + 0,0,112,160,240,160,160,176,4,8,8,5,0,254,96,144, + 128,128,144,96,32,64,4,8,8,5,0,0,64,32,240,128, + 224,128,128,240,4,8,8,5,0,0,32,64,240,128,224,128, + 128,240,4,8,8,5,0,0,32,80,240,128,224,128,128,240, + 4,8,8,5,0,0,80,0,240,128,224,128,128,240,3,8, + 8,5,1,0,128,64,224,64,64,64,64,224,3,8,8,5, + 1,0,32,64,224,64,64,64,64,224,3,8,8,5,1,0, + 64,160,0,224,64,64,64,224,3,8,8,5,1,0,160,0, + 224,64,64,64,64,224,4,6,6,5,0,0,96,80,208,80, + 80,96,4,8,8,5,0,0,80,160,144,208,176,144,144,144, + 4,8,8,5,0,0,64,32,96,144,144,144,144,96,4,8, + 8,5,0,0,32,64,96,144,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,8,8,5,0,0,80,0, + 96,144,144,144,144,96,3,3,3,5,0,1,160,64,160,4, + 6,6,5,0,0,96,144,176,208,144,96,4,8,8,5,0, + 0,64,32,144,144,144,144,144,96,4,8,8,5,0,0,32, + 64,144,144,144,144,144,96,4,8,8,5,0,0,32,80,0, + 144,144,144,144,96,4,8,8,5,0,0,80,0,144,144,144, + 144,144,96,4,8,8,5,0,0,32,64,0,144,144,160,64, + 64,4,6,6,5,0,0,128,224,144,224,128,128,4,7,7, + 5,0,255,96,144,160,160,144,160,128,4,7,7,5,0,0, + 64,32,0,112,144,176,80,4,7,7,5,0,0,32,64,0, + 112,144,176,80,4,7,7,5,0,0,32,80,0,112,144,176, + 80,4,7,7,5,0,0,80,160,0,112,144,176,80,4,6, + 6,5,0,0,80,0,112,144,176,80,4,7,7,5,0,0, + 32,80,32,112,144,176,80,4,4,4,5,0,0,112,176,160, + 112,4,6,6,5,0,254,96,144,128,112,32,64,4,7,7, + 5,0,0,64,32,0,96,240,128,112,4,7,7,5,0,0, + 32,64,0,96,240,128,112,4,7,7,5,0,0,32,80,0, + 96,240,128,112,4,6,6,5,0,0,80,0,96,240,128,112, + 3,7,7,5,1,0,128,64,0,192,64,64,224,3,7,7, + 5,1,0,64,128,0,192,64,64,224,3,7,7,5,1,0, + 64,160,0,192,64,64,224,3,6,6,5,1,0,160,0,192, + 64,64,224,4,7,7,5,0,0,192,192,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,32,80,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,3,5,5, + 5,0,0,64,0,224,0,64,4,4,4,5,0,0,96,176, + 208,96,4,7,7,5,0,0,64,32,0,144,144,176,80,4, + 7,7,5,0,0,32,64,0,144,144,176,80,4,7,7,5, + 0,0,32,80,0,144,144,176,80,4,6,6,5,0,0,80, + 0,144,144,176,80,4,9,9,5,0,254,16,32,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: ProFont10 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 6, '1' Height: 6 + Calculated Max Values w= 5 h= 9 x= 2 y= 5 dx= 5 dy= 0 ascent= 7 len= 9 + 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 = 6 descent=-2 + X Font ascent = 7 descent=-2 + Max Font ascent = 7 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont10r[1106] U8G_FONT_SECTION("u8g_font_profont10r") = { + 0,5,9,0,254,6,1,126,2,248,32,127,254,7,254,7, + 254,0,0,0,5,0,0,1,6,6,5,2,0,128,128,128, + 128,0,128,3,2,2,5,1,5,160,160,5,5,5,5,0, + 1,80,248,80,248,80,5,8,8,5,0,255,32,120,160,112, + 40,168,112,32,5,6,6,5,0,0,120,168,176,104,168,144, + 4,6,6,5,0,0,64,160,64,80,160,80,1,2,2,5, + 2,4,128,128,3,8,8,5,1,255,32,64,128,128,128,128, + 64,32,3,8,8,5,0,255,128,64,32,32,32,32,64,128, + 4,5,5,5,0,1,64,144,96,144,32,3,3,3,5,0, + 1,64,224,64,2,3,3,5,0,254,64,64,128,2,1,1, + 5,1,2,192,1,1,1,5,2,0,128,4,8,8,5,0, + 254,16,16,32,32,64,64,128,128,4,6,6,5,0,0,96, + 144,176,208,144,96,3,6,6,5,1,0,64,192,64,64,64, + 224,4,6,6,5,0,0,96,144,16,32,64,240,4,6,6, + 5,0,0,96,144,32,16,144,96,4,6,6,5,0,0,32, + 96,160,240,32,112,4,6,6,5,0,0,240,128,224,16,144, + 96,4,6,6,5,0,0,96,128,224,144,144,96,4,6,6, + 5,0,0,240,16,32,64,64,64,4,6,6,5,0,0,96, + 144,96,144,144,96,4,6,6,5,0,0,96,144,144,112,16, + 96,1,4,4,5,2,0,128,0,0,128,2,6,6,5,0, + 254,64,0,0,64,64,128,3,5,5,5,1,0,32,64,128, + 64,32,4,3,3,5,0,1,240,0,240,3,5,5,5,1, + 0,128,64,32,64,128,4,6,6,5,0,0,96,144,32,64, + 0,64,4,6,6,5,0,0,96,144,176,176,128,112,4,6, + 6,5,0,0,96,144,144,240,144,144,4,6,6,5,0,0, + 224,144,224,144,144,224,4,6,6,5,0,0,96,144,128,128, + 144,96,4,6,6,5,0,0,224,144,144,144,144,224,4,6, + 6,5,0,0,240,128,224,128,128,240,4,6,6,5,0,0, + 240,128,224,128,128,128,4,6,6,5,0,0,96,144,128,176, + 144,96,4,6,6,5,0,0,144,144,240,144,144,144,3,6, + 6,5,1,0,224,64,64,64,64,224,4,6,6,5,0,0, + 16,16,16,16,144,96,4,6,6,5,0,0,144,160,192,192, + 160,144,4,6,6,5,0,0,128,128,128,128,128,240,4,6, + 6,5,0,0,144,240,240,144,144,144,4,6,6,5,0,0, + 144,208,176,144,144,144,4,6,6,5,0,0,96,144,144,144, + 144,96,4,6,6,5,0,0,224,144,144,224,128,128,4,7, + 7,5,0,255,96,144,144,144,176,96,16,4,6,6,5,0, + 0,224,144,144,224,144,144,4,6,6,5,0,0,96,144,96, + 16,144,96,3,6,6,5,1,0,224,64,64,64,64,64,4, + 6,6,5,0,0,144,144,144,144,144,96,4,6,6,5,0, + 0,144,144,144,144,160,64,4,6,6,5,0,0,144,144,144, + 240,240,144,4,6,6,5,0,0,144,144,96,96,144,144,4, + 6,6,5,0,0,144,144,160,64,64,64,4,6,6,5,0, + 0,240,16,32,64,128,240,2,8,8,5,2,255,192,128,128, + 128,128,128,128,192,4,8,8,5,1,254,128,128,64,64,32, + 32,16,16,2,8,8,5,1,255,192,64,64,64,64,64,64, + 192,3,2,2,5,1,4,64,160,5,1,1,5,0,254,248, + 2,2,2,5,1,5,128,64,4,4,4,5,0,0,112,144, + 176,80,4,6,6,5,0,0,128,128,224,144,144,224,4,4, + 4,5,0,0,96,144,128,112,4,6,6,5,0,0,16,16, + 112,144,144,112,4,4,4,5,0,0,96,240,128,112,3,6, + 6,5,1,0,32,64,224,64,64,64,4,6,6,5,0,254, + 112,144,144,112,16,96,4,6,6,5,0,0,128,128,224,144, + 144,144,3,6,6,5,1,0,64,0,192,64,64,224,2,8, + 8,5,1,254,64,0,192,64,64,64,64,128,4,6,6,5, + 0,0,128,128,160,192,160,144,3,6,6,5,1,0,192,64, + 64,64,64,224,5,4,4,5,0,0,240,168,168,168,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, + 160,208,128,128,4,4,4,5,0,0,112,224,16,224,3,6, + 6,5,1,0,64,64,224,64,64,32,4,4,4,5,0,0, + 144,144,176,80,4,4,4,5,0,0,144,144,160,64,5,4, + 4,5,0,0,168,168,168,80,4,4,4,5,0,0,144,96, + 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,9,9,5,1,254,32,64, + 64,64,128,64,64,64,32,1,8,8,5,2,255,128,128,128, + 128,128,128,128,128,3,9,9,5,1,254,128,64,64,64,32, + 64,64,64,128,4,2,2,5,0,2,80,160,0,0,0,5, + 0,0}; +/* + Fontname: ProFont11 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=11 x= 3 y= 6 dx= 6 dy= 0 ascent= 9 len=11 + 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 = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont11[2768] U8G_FONT_SECTION("u8g_font_profont11") = { + 0,6,10,0,254,7,1,158,3,55,32,255,254,9,254,8, + 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,5,160,160,160,5,5,5, + 6,0,2,80,248,80,248,80,5,9,9,6,0,255,32,112, + 168,160,112,40,168,112,32,5,7,7,6,0,0,120,168,176, + 80,104,168,144,5,7,7,6,0,0,96,144,160,64,168,144, + 104,1,3,3,6,2,5,128,128,128,3,9,9,6,1,255, + 32,64,128,128,128,128,128,64,32,3,9,9,6,1,255,128, + 64,32,32,32,32,32,64,128,5,5,5,6,0,2,32,168, + 112,168,32,5,5,5,6,0,1,32,32,248,32,32,2,4, + 4,6,1,254,192,192,64,128,3,1,1,6,1,3,224,2, + 2,2,6,2,0,192,192,5,10,10,6,0,254,8,8,16, + 16,32,32,64,64,128,128,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,7,7,6,0,0,32,224,32,32,32,32, + 248,5,7,7,6,0,0,112,136,8,16,32,64,248,5,7, + 7,6,0,0,112,136,8,48,8,136,112,5,7,7,6,0, + 0,16,48,80,144,248,16,56,5,7,7,6,0,0,248,128, + 240,8,8,136,112,5,7,7,6,0,0,112,128,240,136,136, + 136,112,5,7,7,6,0,0,248,8,8,16,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,136,120,8,112,2,5,5,6,2,0,192, + 192,0,192,192,2,7,7,6,1,254,192,192,0,192,192,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,8,16,32,0, + 32,5,7,7,6,0,0,112,136,184,168,184,128,120,5,7, + 7,6,0,0,32,80,80,136,248,136,136,5,7,7,6,0, + 0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,136, + 128,128,128,136,112,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,152,136,136,112,5,7,7,6,0,0,136, + 136,136,248,136,136,136,5,7,7,6,0,0,248,32,32,32, + 32,32,248,5,7,7,6,0,0,8,8,8,8,136,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,5,7,7,6,0,0, + 136,216,168,168,136,136,136,5,7,7,6,0,0,136,200,168, + 152,136,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,136,136,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,32,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,136, + 80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128, + 248,2,9,9,6,2,255,192,128,128,128,128,128,128,128,192, + 5,10,10,6,1,254,128,128,64,64,32,32,16,16,8,8, + 2,9,9,6,1,255,192,64,64,64,64,64,64,64,192,5, + 3,3,6,0,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,120,136,136, + 152,104,5,7,7,6,0,0,128,128,240,136,136,136,240,5, + 5,5,6,0,0,112,136,128,128,120,5,7,7,6,0,0, + 8,8,120,136,136,136,120,5,5,5,6,0,0,112,136,248, + 128,120,4,7,7,6,1,0,48,64,224,64,64,64,64,5, + 7,7,6,0,254,120,136,136,136,120,8,112,5,7,7,6, + 0,0,128,128,240,136,136,136,136,3,7,7,6,1,0,64, + 0,192,64,64,64,224,3,9,9,6,0,254,32,0,96,32, + 32,32,32,32,192,5,7,7,6,0,0,128,128,144,160,224, + 144,136,3,7,7,6,1,0,192,64,64,64,64,64,224,5, + 5,5,6,0,0,240,168,168,168,168,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,240,136,136,136,240,128,128,5,7,7, + 6,0,254,120,136,136,136,120,8,8,5,5,5,6,0,0, + 176,200,128,128,128,5,5,5,6,0,0,120,128,112,8,240, + 4,7,7,6,1,0,64,64,224,64,64,64,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,168,168,168,168,80,5,5, + 5,6,0,0,136,80,32,80,136,5,7,7,6,0,254,136, + 136,136,136,120,8,112,5,5,5,6,0,0,248,16,32,64, + 248,3,11,11,6,1,254,32,64,64,64,64,128,64,64,64, + 64,32,1,9,9,6,2,255,128,128,128,128,128,128,128,128, + 128,3,11,11,6,1,254,128,64,64,64,64,32,64,64,64, + 64,128,5,2,2,6,0,3,104,176,0,0,0,6,0,0, + 0,0,0,6,0,0,0,0,0,6,0,0,2,3,3,6, + 0,255,64,64,128,5,11,11,6,0,254,24,32,32,32,112, + 32,32,32,32,32,192,4,3,3,6,0,255,80,80,160,5, + 1,1,6,0,0,168,3,5,5,6,1,2,64,224,64,64, + 64,3,5,5,6,1,2,64,224,64,224,64,3,2,2,6, + 1,6,64,160,6,8,8,6,0,0,124,168,176,96,104,212, + 84,40,5,9,9,6,0,0,80,32,112,136,128,112,8,136, + 112,2,4,4,6,0,0,64,128,128,64,5,7,7,6,0, + 0,120,160,160,176,160,160,120,0,0,0,6,0,0,0,0, + 0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0, + 2,3,3,6,2,4,64,128,128,2,3,3,6,2,4,64, + 64,128,4,3,3,6,1,4,80,160,160,4,3,3,6,1, + 4,80,80,160,5,5,5,6,0,1,112,248,248,248,112,3, + 1,1,6,1,3,224,6,1,1,6,0,3,252,5,2,2, + 6,0,6,104,176,6,3,3,6,0,4,244,92,92,5,8, + 8,6,0,0,80,32,0,120,128,112,8,240,2,4,4,6, + 0,0,128,64,64,128,5,5,5,6,0,0,80,168,184,160, + 88,0,0,0,6,0,0,0,0,0,6,0,0,5,9,9, + 6,0,0,80,0,136,136,136,80,32,32,32,0,0,0,6, + 0,0,1,7,7,6,3,0,128,0,128,128,128,128,128,5, + 7,7,6,0,255,32,112,168,160,160,120,32,5,8,8,6, + 0,0,96,144,128,224,128,128,136,240,5,5,5,6,0,0, + 136,112,80,112,136,5,7,7,6,0,0,136,80,248,32,248, + 32,32,1,9,9,6,2,255,128,128,128,128,0,128,128,128, + 128,5,10,10,6,0,255,112,136,72,160,144,72,40,144,136, + 112,3,1,1,6,1,6,160,5,7,7,6,0,0,224,16, + 104,136,104,16,224,4,6,6,6,1,3,112,144,144,112,0, + 240,5,4,4,6,0,0,72,144,144,72,5,3,3,6,0, + 1,248,8,8,5,1,1,6,0,3,248,5,6,6,6,0, + 1,224,16,200,168,200,176,3,1,1,6,1,6,224,4,4, + 4,6,1,4,96,144,144,96,5,6,6,6,0,0,32,32, + 248,32,32,248,3,4,4,6,1,5,192,32,64,224,3,5, + 5,6,1,4,192,32,96,32,192,3,2,2,6,2,6,96, + 192,5,7,7,6,0,254,144,144,144,144,232,128,128,5,8, + 8,6,0,0,120,168,168,168,120,40,40,40,2,2,2,6, + 2,2,192,192,3,3,3,6,1,254,224,96,192,3,4,4, + 6,1,5,192,64,64,224,4,6,6,6,1,3,96,144,144, + 96,0,240,5,4,4,6,0,0,144,72,72,144,6,9,9, + 6,0,0,192,64,68,232,16,40,88,184,8,6,9,9,6, + 0,0,192,64,68,232,16,56,68,136,28,6,9,9,6,0, + 0,192,32,100,40,208,40,88,184,8,5,7,7,6,0,0, + 32,0,32,64,128,136,112,5,9,9,6,0,0,64,32,32, + 80,80,136,248,136,136,5,9,9,6,0,0,16,32,32,80, + 80,136,248,136,136,5,9,9,6,0,0,32,80,0,32,80, + 136,248,136,136,5,9,9,6,0,0,104,176,32,80,80,136, + 248,136,136,5,9,9,6,0,0,80,0,32,80,80,136,248, + 136,136,5,9,9,6,0,0,32,80,32,80,136,136,248,136, + 136,5,7,7,6,0,0,120,160,160,240,160,160,184,5,9, + 9,6,0,254,112,136,128,128,128,136,112,32,64,5,9,9, + 6,0,0,64,32,248,128,128,240,128,128,248,5,9,9,6, + 0,0,16,32,248,128,128,240,128,128,248,5,9,9,6,0, + 0,32,80,248,128,128,240,128,128,248,5,9,9,6,0,0, + 80,0,248,128,128,240,128,128,248,5,9,9,6,0,0,64, + 32,248,32,32,32,32,32,248,5,9,9,6,0,0,16,32, + 248,32,32,32,32,32,248,5,9,9,6,0,0,32,80,0, + 248,32,32,32,32,248,5,9,9,6,0,0,80,0,248,32, + 32,32,32,32,248,5,7,7,6,0,0,112,72,72,232,72, + 72,112,5,9,9,6,0,0,104,176,136,200,168,152,136,136, + 136,5,9,9,6,0,0,64,32,112,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,112,136,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,104,176,112,136,136,136,136,136,112,5,9,9, + 6,0,0,80,0,112,136,136,136,136,136,112,5,5,5,6, + 0,1,136,80,32,80,136,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,9,9,6,0,0,64,32,136,136,136,136, + 136,136,112,5,9,9,6,0,0,16,32,136,136,136,136,136, + 136,112,5,9,9,6,0,0,32,80,0,136,136,136,136,136, + 112,5,9,9,6,0,0,80,0,136,136,136,136,136,136,112, + 5,9,9,6,0,0,16,32,136,136,136,80,32,32,32,5, + 7,7,6,0,0,128,240,136,136,240,128,128,5,9,9,6, + 0,255,48,72,136,144,144,136,136,176,128,5,8,8,6,0, + 0,32,16,0,120,136,136,152,104,5,8,8,6,0,0,16, + 32,0,120,136,136,152,104,5,8,8,6,0,0,32,80,0, + 120,136,136,152,104,5,8,8,6,0,0,104,176,0,120,136, + 136,152,104,5,7,7,6,0,0,80,0,120,136,136,152,104, + 5,8,8,6,0,0,32,80,32,120,136,136,152,104,5,5, + 5,6,0,0,112,168,184,160,120,5,7,7,6,0,254,112, + 136,128,128,120,32,64,5,8,8,6,0,0,64,32,0,112, + 136,248,128,120,5,8,8,6,0,0,16,32,0,112,136,248, + 128,120,5,8,8,6,0,0,32,80,0,112,136,248,128,120, + 5,7,7,6,0,0,80,0,112,136,248,128,120,3,8,8, + 6,1,0,128,64,0,192,64,64,64,224,3,8,8,6,1, + 0,32,64,0,192,64,64,64,224,3,8,8,6,1,0,64, + 160,0,192,64,64,64,224,3,7,7,6,1,0,160,0,192, + 64,64,64,224,5,8,8,6,0,0,96,96,16,120,136,136, + 136,112,5,8,8,6,0,0,104,176,0,176,200,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,176,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, + 5,5,5,6,0,0,112,152,168,200,112,5,8,8,6,0, + 0,64,32,0,136,136,136,152,104,5,8,8,6,0,0,16, + 32,0,136,136,136,152,104,5,8,8,6,0,0,32,80,0, + 136,136,136,152,104,5,7,7,6,0,0,80,0,136,136,136, + 152,104,5,10,10,6,0,254,16,32,0,136,136,136,136,120, + 8,112,5,9,9,6,0,254,128,128,240,136,136,136,240,128, + 128,5,9,9,6,0,254,80,0,136,136,136,136,120,8,112 + }; +/* + Fontname: ProFont11 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 7, '1' Height: 7 + Calculated Max Values w= 6 h=11 x= 2 y= 6 dx= 6 dy= 0 ascent= 9 len=11 + 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 = 8 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont11r[1200] U8G_FONT_SECTION("u8g_font_profont11r") = { + 0,6,10,0,254,7,1,158,3,55,32,127,254,9,254,8, + 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,5,160,160,160,5,5,5, + 6,0,2,80,248,80,248,80,5,9,9,6,0,255,32,112, + 168,160,112,40,168,112,32,5,7,7,6,0,0,120,168,176, + 80,104,168,144,5,7,7,6,0,0,96,144,160,64,168,144, + 104,1,3,3,6,2,5,128,128,128,3,9,9,6,1,255, + 32,64,128,128,128,128,128,64,32,3,9,9,6,1,255,128, + 64,32,32,32,32,32,64,128,5,5,5,6,0,2,32,168, + 112,168,32,5,5,5,6,0,1,32,32,248,32,32,2,4, + 4,6,1,254,192,192,64,128,3,1,1,6,1,3,224,2, + 2,2,6,2,0,192,192,5,10,10,6,0,254,8,8,16, + 16,32,32,64,64,128,128,5,7,7,6,0,0,112,136,152, + 168,200,136,112,5,7,7,6,0,0,32,224,32,32,32,32, + 248,5,7,7,6,0,0,112,136,8,16,32,64,248,5,7, + 7,6,0,0,112,136,8,48,8,136,112,5,7,7,6,0, + 0,16,48,80,144,248,16,56,5,7,7,6,0,0,248,128, + 240,8,8,136,112,5,7,7,6,0,0,112,128,240,136,136, + 136,112,5,7,7,6,0,0,248,8,8,16,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,136,120,8,112,2,5,5,6,2,0,192, + 192,0,192,192,2,7,7,6,1,254,192,192,0,192,192,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,8,16,32,0, + 32,5,7,7,6,0,0,112,136,184,168,184,128,120,5,7, + 7,6,0,0,32,80,80,136,248,136,136,5,7,7,6,0, + 0,240,136,136,240,136,136,240,5,7,7,6,0,0,112,136, + 128,128,128,136,112,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,152,136,136,112,5,7,7,6,0,0,136, + 136,136,248,136,136,136,5,7,7,6,0,0,248,32,32,32, + 32,32,248,5,7,7,6,0,0,8,8,8,8,136,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,5,7,7,6,0,0, + 136,216,168,168,136,136,136,5,7,7,6,0,0,136,200,168, + 152,136,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,136,136,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,32,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,136, + 80,32,32,32,5,7,7,6,0,0,248,8,16,32,64,128, + 248,2,9,9,6,2,255,192,128,128,128,128,128,128,128,192, + 5,10,10,6,1,254,128,128,64,64,32,32,16,16,8,8, + 2,9,9,6,1,255,192,64,64,64,64,64,64,64,192,5, + 3,3,6,0,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,120,136,136, + 152,104,5,7,7,6,0,0,128,128,240,136,136,136,240,5, + 5,5,6,0,0,112,136,128,128,120,5,7,7,6,0,0, + 8,8,120,136,136,136,120,5,5,5,6,0,0,112,136,248, + 128,120,4,7,7,6,1,0,48,64,224,64,64,64,64,5, + 7,7,6,0,254,120,136,136,136,120,8,112,5,7,7,6, + 0,0,128,128,240,136,136,136,136,3,7,7,6,1,0,64, + 0,192,64,64,64,224,3,9,9,6,0,254,32,0,96,32, + 32,32,32,32,192,5,7,7,6,0,0,128,128,144,160,224, + 144,136,3,7,7,6,1,0,192,64,64,64,64,64,224,5, + 5,5,6,0,0,240,168,168,168,168,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,240,136,136,136,240,128,128,5,7,7, + 6,0,254,120,136,136,136,120,8,8,5,5,5,6,0,0, + 176,200,128,128,128,5,5,5,6,0,0,120,128,112,8,240, + 4,7,7,6,1,0,64,64,224,64,64,64,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,168,168,168,168,80,5,5, + 5,6,0,0,136,80,32,80,136,5,7,7,6,0,254,136, + 136,136,136,120,8,112,5,5,5,6,0,0,248,16,32,64, + 248,3,11,11,6,1,254,32,64,64,64,64,128,64,64,64, + 64,32,1,9,9,6,2,255,128,128,128,128,128,128,128,128, + 128,3,11,11,6,1,254,128,64,64,64,64,32,64,64,64, + 64,128,5,2,2,6,0,3,104,176,0,0,0,6,0,0 + }; +/* + Fontname: ProFont12 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w= 6 h=12 x= 3 y= 7 dx= 6 dy= 0 ascent=10 len=12 + Font Bounding box w= 6 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 = 9 descent=-2 + Max Font ascent =10 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont12[2907] U8G_FONT_SECTION("u8g_font_profont12") = { + 0,6,11,0,254,8,1,178,3,103,32,255,254,10,254,9, + 254,0,0,0,6,0,0,1,8,8,6,2,0,128,128,128, + 128,128,128,0,128,3,3,3,6,1,6,160,160,160,5,5, + 5,6,0,3,80,248,80,248,80,5,10,10,6,0,255,32, + 112,168,160,112,40,40,168,112,32,5,8,8,6,0,0,120, + 168,168,80,48,104,168,144,5,8,8,6,0,0,96,144,160, + 64,160,168,144,104,1,3,3,6,2,6,128,128,128,3,10, + 10,6,1,255,32,64,128,128,128,128,128,128,64,32,3,10, + 10,6,1,255,128,64,32,32,32,32,32,32,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,6,1,254,192,192,64,128,3,1, + 1,6,1,3,224,2,2,2,6,2,0,192,192,5,10,10, + 6,0,254,8,8,16,16,32,32,64,64,128,128,5,8,8, + 6,0,0,112,136,152,168,200,136,136,112,5,8,8,6,0, + 0,32,224,32,32,32,32,32,248,5,8,8,6,0,0,112, + 136,8,16,32,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,144,248, + 16,16,56,5,8,8,6,0,0,248,128,128,240,8,8,136, + 112,5,8,8,6,0,0,112,128,128,240,136,136,136,112,5, + 8,8,6,0,0,248,8,8,16,32,32,32,32,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,8,112,2,6,6,6,2,0,192, + 192,0,0,192,192,2,8,8,6,1,254,192,192,0,0,192, + 192,64,128,4,7,7,6,1,1,16,32,64,128,64,32,16, + 5,3,3,6,0,3,248,0,248,4,7,7,6,1,1,128, + 64,32,16,32,64,128,5,8,8,6,0,0,112,136,8,8, + 16,32,0,32,5,8,8,6,0,0,112,136,184,168,184,128, + 128,120,5,8,8,6,0,0,32,80,80,136,136,248,136,136, + 5,8,8,6,0,0,240,136,136,240,136,136,136,240,5,8, + 8,6,0,0,112,136,128,128,128,128,136,112,5,8,8,6, + 0,0,240,136,136,136,136,136,136,240,5,8,8,6,0,0, + 248,128,128,240,128,128,128,248,5,8,8,6,0,0,248,128, + 128,240,128,128,128,128,5,8,8,6,0,0,112,136,128,128, + 152,136,136,112,5,8,8,6,0,0,136,136,136,248,136,136, + 136,136,5,8,8,6,0,0,248,32,32,32,32,32,32,248, + 5,8,8,6,0,0,8,8,8,8,8,136,136,112,5,8, + 8,6,0,0,136,144,160,192,192,160,144,136,5,8,8,6, + 0,0,128,128,128,128,128,128,128,248,5,8,8,6,0,0, + 136,216,168,168,136,136,136,136,5,8,8,6,0,0,136,200, + 168,152,136,136,136,136,5,8,8,6,0,0,112,136,136,136, + 136,136,136,112,5,8,8,6,0,0,240,136,136,240,128,128, + 128,128,5,9,9,6,0,255,112,136,136,136,136,136,168,112, + 8,5,8,8,6,0,0,240,136,136,240,136,136,136,136,5, + 8,8,6,0,0,112,136,128,112,8,8,136,112,5,8,8, + 6,0,0,248,32,32,32,32,32,32,32,5,8,8,6,0, + 0,136,136,136,136,136,136,136,112,5,8,8,6,0,0,136, + 136,136,136,80,80,32,32,5,8,8,6,0,0,136,136,136, + 136,168,168,216,136,5,8,8,6,0,0,136,136,136,80,32, + 80,136,136,5,8,8,6,0,0,136,136,136,136,80,32,32, + 32,5,8,8,6,0,0,248,8,16,32,64,128,128,248,2, + 10,10,6,2,255,192,128,128,128,128,128,128,128,128,192,5, + 10,10,6,1,254,128,128,64,64,32,32,16,16,8,8,2, + 10,10,6,1,255,192,64,64,64,64,64,64,64,64,192,5, + 3,3,6,0,5,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,7,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,8,8,6,0,0,128,128,128,240,136,136,136,240, + 5,5,5,6,0,0,112,136,128,128,120,5,8,8,6,0, + 0,8,8,8,120,136,136,136,120,5,5,5,6,0,0,112, + 136,248,128,120,4,8,8,6,1,0,48,64,224,64,64,64, + 64,64,5,7,7,6,0,254,120,136,136,136,120,8,112,5, + 8,8,6,0,0,128,128,128,240,136,136,136,136,3,8,8, + 6,1,0,64,0,0,192,64,64,64,224,3,10,10,6,0, + 254,32,0,0,96,32,32,32,32,32,192,5,8,8,6,0, + 0,128,128,128,144,160,224,144,136,3,8,8,6,1,0,192, + 64,64,64,64,64,64,224,5,5,5,6,0,0,240,168,168, + 168,168,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,240,136, + 136,136,240,128,128,5,7,7,6,0,254,120,136,136,136,120, + 8,8,5,5,5,6,0,0,176,200,128,128,128,5,5,5, + 6,0,0,120,128,112,8,240,4,8,8,6,1,0,64,64, + 64,224,64,64,64,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,168,168,168,168,80,5,5,5,6,0,0,136,80,32, + 80,136,5,7,7,6,0,254,136,136,136,136,120,8,112,5, + 5,5,6,0,0,248,16,32,64,248,3,11,11,6,1,254, + 32,64,64,64,64,128,64,64,64,64,32,1,10,10,6,2, + 255,128,128,128,128,128,128,128,128,128,128,3,11,11,6,1, + 254,128,64,64,64,64,32,64,64,64,64,128,5,2,2,6, + 0,4,104,176,0,0,0,6,0,0,0,0,0,6,0,0, + 0,0,0,6,0,0,2,3,3,6,0,255,64,64,128,5, + 12,12,6,0,254,24,32,32,32,32,112,32,32,32,32,32, + 192,4,3,3,6,0,255,80,80,160,5,1,1,6,0,0, + 168,3,6,6,6,1,2,64,224,64,64,64,64,3,6,6, + 6,1,2,64,224,64,64,224,64,3,2,2,6,1,7,64, + 160,6,9,9,6,0,0,124,164,168,80,32,104,212,84,40, + 5,10,10,6,0,0,80,32,112,136,128,112,8,8,136,112, + 2,4,4,6,0,0,64,128,128,64,5,8,8,6,0,0, + 120,160,160,176,160,160,160,120,0,0,0,6,0,0,0,0, + 0,6,0,0,0,0,0,6,0,0,0,0,0,6,0,0, + 2,3,3,6,2,5,64,128,128,2,3,3,6,2,5,64, + 64,128,4,3,3,6,1,5,80,160,160,4,3,3,6,1, + 5,80,80,160,5,5,5,6,0,2,112,248,248,248,112,3, + 1,1,6,1,3,224,6,1,1,6,0,3,252,5,2,2, + 6,0,7,104,176,6,3,3,6,0,5,244,92,92,5,9, + 9,6,0,0,80,32,0,0,120,128,112,8,240,2,4,4, + 6,0,0,128,64,64,128,5,5,5,6,0,0,80,168,184, + 160,88,0,0,0,6,0,0,0,0,0,6,0,0,5,10, + 10,6,0,0,80,0,0,136,136,136,80,32,32,32,0,0, + 0,6,0,0,1,8,8,6,3,0,128,0,128,128,128,128, + 128,128,5,7,7,6,0,255,32,112,168,160,160,120,32,5, + 9,9,6,0,0,96,144,128,224,128,128,128,136,240,5,5, + 5,6,0,1,136,112,80,112,136,5,8,8,6,0,0,136, + 80,248,32,248,32,32,32,1,10,10,6,2,255,128,128,128, + 128,0,0,128,128,128,128,5,11,11,6,0,255,112,136,72, + 160,144,136,72,40,144,136,112,3,1,1,6,1,7,160,5, + 8,8,6,0,0,224,16,104,136,136,104,16,224,4,7,7, + 6,1,3,112,144,144,112,0,0,240,5,4,4,6,0,0, + 72,144,144,72,5,3,3,6,0,2,248,8,8,5,1,1, + 6,0,3,248,5,7,7,6,0,1,224,16,200,168,168,200, + 176,3,1,1,6,1,7,224,4,4,4,6,1,5,96,144, + 144,96,5,6,6,6,0,1,32,32,248,32,32,248,3,4, + 4,6,1,6,192,32,64,224,3,5,5,6,1,5,192,32, + 96,32,192,4,2,2,6,2,7,112,224,5,7,7,6,0, + 254,144,144,144,144,232,128,128,5,9,9,6,0,0,120,168, + 168,168,120,40,40,40,40,2,2,2,6,2,3,192,192,4, + 3,3,6,1,254,240,112,224,3,4,4,6,1,6,192,64, + 64,224,4,7,7,6,1,3,96,144,144,96,0,0,240,5, + 4,4,6,0,0,144,72,72,144,6,10,10,6,0,0,192, + 64,68,232,16,32,72,152,56,8,6,10,10,6,0,0,192, + 64,68,232,16,32,88,132,8,28,6,10,10,6,0,0,192, + 32,100,40,208,32,72,152,56,8,5,8,8,6,0,0,32, + 0,32,64,128,128,136,112,5,10,10,6,0,0,64,32,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,16,32,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,32,80,0, + 32,80,80,136,248,136,136,5,10,10,6,0,0,104,176,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,80,0,32, + 80,80,136,136,248,136,136,5,10,10,6,0,0,32,80,32, + 80,80,136,136,248,136,136,5,8,8,6,0,0,120,160,160, + 240,160,160,160,184,5,10,10,6,0,254,112,136,128,128,128, + 128,136,112,32,64,5,10,10,6,0,0,64,32,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,16,32,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,32,80,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,80,0,248,128,128, + 240,128,128,128,248,5,10,10,6,0,0,64,32,248,32,32, + 32,32,32,32,248,5,10,10,6,0,0,16,32,248,32,32, + 32,32,32,32,248,5,10,10,6,0,0,32,80,0,248,32, + 32,32,32,32,248,5,10,10,6,0,0,80,0,248,32,32, + 32,32,32,32,248,6,8,8,6,0,0,120,68,68,228,68, + 68,68,120,5,10,10,6,0,0,104,176,136,200,168,152,136, + 136,136,136,5,10,10,6,0,0,64,32,112,136,136,136,136, + 136,136,112,5,10,10,6,0,0,16,32,112,136,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,176,112,136,136,136,136, + 136,136,112,5,10,10,6,0,0,80,0,112,136,136,136,136, + 136,136,112,5,5,5,6,0,2,136,80,32,80,136,5,8, + 8,6,0,0,112,136,152,168,200,136,136,112,5,10,10,6, + 0,0,64,32,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,16,32,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,32,80,0,136,136,136,136,136,136,112,5,10,10,6, + 0,0,80,0,136,136,136,136,136,136,136,112,5,10,10,6, + 0,0,16,32,136,136,136,136,80,32,32,32,5,8,8,6, + 0,0,128,240,136,136,136,240,128,128,5,10,10,6,0,255, + 48,72,136,144,144,136,136,136,176,128,5,9,9,6,0,0, + 32,16,0,0,120,136,136,152,104,5,9,9,6,0,0,16, + 32,0,0,120,136,136,152,104,5,9,9,6,0,0,32,80, + 0,0,120,136,136,152,104,5,9,9,6,0,0,104,176,0, + 0,120,136,136,152,104,5,8,8,6,0,0,80,0,0,120, + 136,136,152,104,5,9,9,6,0,0,32,80,32,0,120,136, + 136,152,104,5,5,5,6,0,0,112,168,184,160,120,5,7, + 7,6,0,254,112,136,128,128,120,32,64,5,9,9,6,0, + 0,64,32,0,0,112,136,248,128,120,5,9,9,6,0,0, + 16,32,0,0,112,136,248,128,120,5,9,9,6,0,0,32, + 80,0,0,112,136,248,128,120,5,8,8,6,0,0,80,0, + 0,112,136,248,128,120,3,9,9,6,1,0,128,64,0,0, + 192,64,64,64,224,3,9,9,6,1,0,32,64,0,0,192, + 64,64,64,224,3,9,9,6,1,0,64,160,0,0,192,64, + 64,64,224,3,8,8,6,1,0,160,0,0,192,64,64,64, + 224,5,9,9,6,0,0,96,96,16,8,120,136,136,136,112, + 5,9,9,6,0,0,104,176,0,0,176,200,136,136,136,5, + 9,9,6,0,0,64,32,0,0,112,136,136,136,112,5,9, + 9,6,0,0,16,32,0,0,112,136,136,136,112,5,9,9, + 6,0,0,32,80,0,0,112,136,136,136,112,5,9,9,6, + 0,0,104,176,0,0,112,136,136,136,112,5,8,8,6,0, + 0,80,0,0,112,136,136,136,112,5,5,5,6,0,1,32, + 0,248,0,32,5,5,5,6,0,0,112,152,168,200,112,5, + 9,9,6,0,0,64,32,0,0,136,136,136,152,104,5,9, + 9,6,0,0,16,32,0,0,136,136,136,152,104,5,9,9, + 6,0,0,32,80,0,0,136,136,136,152,104,5,8,8,6, + 0,0,80,0,0,136,136,136,152,104,5,11,11,6,0,254, + 16,32,0,0,136,136,136,136,120,8,112,5,10,10,6,0, + 254,128,128,128,240,136,136,136,240,128,128,5,10,10,6,0, + 254,80,0,0,136,136,136,136,120,8,112}; +/* + Fontname: ProFont12 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 8, '1' Height: 8 + Calculated Max Values w= 6 h=11 x= 2 y= 7 dx= 6 dy= 0 ascent= 9 len=11 + Font Bounding box w= 6 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 = 9 descent=-2 + Max Font ascent = 9 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont12r[1258] U8G_FONT_SECTION("u8g_font_profont12r") = { + 0,6,11,0,254,8,1,178,3,103,32,127,254,9,254,9, + 254,0,0,0,6,0,0,1,8,8,6,2,0,128,128,128, + 128,128,128,0,128,3,3,3,6,1,6,160,160,160,5,5, + 5,6,0,3,80,248,80,248,80,5,10,10,6,0,255,32, + 112,168,160,112,40,40,168,112,32,5,8,8,6,0,0,120, + 168,168,80,48,104,168,144,5,8,8,6,0,0,96,144,160, + 64,160,168,144,104,1,3,3,6,2,6,128,128,128,3,10, + 10,6,1,255,32,64,128,128,128,128,128,128,64,32,3,10, + 10,6,1,255,128,64,32,32,32,32,32,32,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,6,1,254,192,192,64,128,3,1, + 1,6,1,3,224,2,2,2,6,2,0,192,192,5,10,10, + 6,0,254,8,8,16,16,32,32,64,64,128,128,5,8,8, + 6,0,0,112,136,152,168,200,136,136,112,5,8,8,6,0, + 0,32,224,32,32,32,32,32,248,5,8,8,6,0,0,112, + 136,8,16,32,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,144,248, + 16,16,56,5,8,8,6,0,0,248,128,128,240,8,8,136, + 112,5,8,8,6,0,0,112,128,128,240,136,136,136,112,5, + 8,8,6,0,0,248,8,8,16,32,32,32,32,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,8,112,2,6,6,6,2,0,192, + 192,0,0,192,192,2,8,8,6,1,254,192,192,0,0,192, + 192,64,128,4,7,7,6,1,1,16,32,64,128,64,32,16, + 5,3,3,6,0,3,248,0,248,4,7,7,6,1,1,128, + 64,32,16,32,64,128,5,8,8,6,0,0,112,136,8,8, + 16,32,0,32,5,8,8,6,0,0,112,136,184,168,184,128, + 128,120,5,8,8,6,0,0,32,80,80,136,136,248,136,136, + 5,8,8,6,0,0,240,136,136,240,136,136,136,240,5,8, + 8,6,0,0,112,136,128,128,128,128,136,112,5,8,8,6, + 0,0,240,136,136,136,136,136,136,240,5,8,8,6,0,0, + 248,128,128,240,128,128,128,248,5,8,8,6,0,0,248,128, + 128,240,128,128,128,128,5,8,8,6,0,0,112,136,128,128, + 152,136,136,112,5,8,8,6,0,0,136,136,136,248,136,136, + 136,136,5,8,8,6,0,0,248,32,32,32,32,32,32,248, + 5,8,8,6,0,0,8,8,8,8,8,136,136,112,5,8, + 8,6,0,0,136,144,160,192,192,160,144,136,5,8,8,6, + 0,0,128,128,128,128,128,128,128,248,5,8,8,6,0,0, + 136,216,168,168,136,136,136,136,5,8,8,6,0,0,136,200, + 168,152,136,136,136,136,5,8,8,6,0,0,112,136,136,136, + 136,136,136,112,5,8,8,6,0,0,240,136,136,240,128,128, + 128,128,5,9,9,6,0,255,112,136,136,136,136,136,168,112, + 8,5,8,8,6,0,0,240,136,136,240,136,136,136,136,5, + 8,8,6,0,0,112,136,128,112,8,8,136,112,5,8,8, + 6,0,0,248,32,32,32,32,32,32,32,5,8,8,6,0, + 0,136,136,136,136,136,136,136,112,5,8,8,6,0,0,136, + 136,136,136,80,80,32,32,5,8,8,6,0,0,136,136,136, + 136,168,168,216,136,5,8,8,6,0,0,136,136,136,80,32, + 80,136,136,5,8,8,6,0,0,136,136,136,136,80,32,32, + 32,5,8,8,6,0,0,248,8,16,32,64,128,128,248,2, + 10,10,6,2,255,192,128,128,128,128,128,128,128,128,192,5, + 10,10,6,1,254,128,128,64,64,32,32,16,16,8,8,2, + 10,10,6,1,255,192,64,64,64,64,64,64,64,64,192,5, + 3,3,6,0,5,32,80,136,6,1,1,6,0,254,252,2, + 2,2,6,1,7,128,64,5,5,5,6,0,0,120,136,136, + 152,104,5,8,8,6,0,0,128,128,128,240,136,136,136,240, + 5,5,5,6,0,0,112,136,128,128,120,5,8,8,6,0, + 0,8,8,8,120,136,136,136,120,5,5,5,6,0,0,112, + 136,248,128,120,4,8,8,6,1,0,48,64,224,64,64,64, + 64,64,5,7,7,6,0,254,120,136,136,136,120,8,112,5, + 8,8,6,0,0,128,128,128,240,136,136,136,136,3,8,8, + 6,1,0,64,0,0,192,64,64,64,224,3,10,10,6,0, + 254,32,0,0,96,32,32,32,32,32,192,5,8,8,6,0, + 0,128,128,128,144,160,224,144,136,3,8,8,6,1,0,192, + 64,64,64,64,64,64,224,5,5,5,6,0,0,240,168,168, + 168,168,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,240,136, + 136,136,240,128,128,5,7,7,6,0,254,120,136,136,136,120, + 8,8,5,5,5,6,0,0,176,200,128,128,128,5,5,5, + 6,0,0,120,128,112,8,240,4,8,8,6,1,0,64,64, + 64,224,64,64,64,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,168,168,168,168,80,5,5,5,6,0,0,136,80,32, + 80,136,5,7,7,6,0,254,136,136,136,136,120,8,112,5, + 5,5,6,0,0,248,16,32,64,248,3,11,11,6,1,254, + 32,64,64,64,64,128,64,64,64,64,32,1,10,10,6,2, + 255,128,128,128,128,128,128,128,128,128,128,3,11,11,6,1, + 254,128,64,64,64,64,32,64,64,64,64,128,5,2,2,6, + 0,4,104,176,0,0,0,6,0,0}; +/* + Fontname: ProFont15 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=15 x= 4 y= 8 dx= 7 dy= 0 ascent=12 len=15 + Font Bounding box w= 7 h=14 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont15[3186] U8G_FONT_SECTION("u8g_font_profont15") = { + 0,7,14,0,253,9,1,217,3,175,32,255,253,12,253,11, + 253,0,0,0,7,0,0,1,9,9,7,3,0,128,128,128, + 128,128,128,128,0,128,4,4,4,7,1,7,144,144,144,144, + 6,6,6,7,0,3,72,252,72,72,252,72,5,13,13,7, + 0,254,32,32,112,168,160,160,112,40,40,168,112,32,32,7, + 9,9,7,0,0,126,162,164,168,84,42,74,138,132,6,9, + 9,7,0,0,112,136,144,160,64,160,148,136,116,1,4,4, + 7,3,7,128,128,128,128,4,13,13,7,1,254,16,32,64, + 128,128,128,128,128,128,128,64,32,16,4,13,13,7,1,254, + 128,64,32,16,16,16,16,16,16,16,32,64,128,5,6,6, + 7,0,3,32,168,112,112,168,32,5,5,5,7,0,1,32, + 32,248,32,32,3,5,5,7,1,253,96,96,32,64,128,4, + 1,1,7,1,3,240,2,2,2,7,2,0,192,192,6,12, + 12,7,0,254,4,4,8,8,16,16,32,32,64,64,128,128, + 6,9,9,7,0,0,120,132,140,148,164,196,132,132,120,7, + 9,9,7,0,0,16,112,16,16,16,16,16,16,254,6,9, + 9,7,0,0,120,132,4,4,8,16,32,64,252,6,9,9, + 7,0,0,120,132,4,4,56,4,4,132,120,6,9,9,7, + 0,0,8,24,40,72,136,252,8,8,28,6,9,9,7,0, + 0,252,128,128,248,4,4,4,132,120,6,9,9,7,0,0, + 120,128,128,248,132,132,132,132,120,6,9,9,7,0,0,252, + 4,4,8,16,32,32,32,32,6,9,9,7,0,0,120,132, + 132,132,120,132,132,132,120,6,9,9,7,0,0,120,132,132, + 132,132,124,4,4,120,2,7,7,7,2,0,192,192,0,0, + 0,192,192,3,10,10,7,1,253,96,96,0,0,0,96,96, + 32,64,128,5,9,9,7,1,0,8,16,32,64,128,64,32, + 16,8,6,4,4,7,0,3,252,0,0,252,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,6,9,9,7,0, + 0,120,132,4,4,8,16,32,0,32,6,9,9,7,0,0, + 120,132,156,164,164,152,128,128,124,6,9,9,7,0,0,48, + 48,72,72,132,252,132,132,132,6,9,9,7,0,0,248,132, + 132,132,248,132,132,132,248,6,9,9,7,0,0,120,132,128, + 128,128,128,128,132,120,6,9,9,7,0,0,248,132,132,132, + 132,132,132,132,248,6,9,9,7,0,0,252,128,128,128,248, + 128,128,128,252,6,9,9,7,0,0,252,128,128,128,248,128, + 128,128,128,6,9,9,7,0,0,120,132,128,128,140,132,132, + 132,120,6,9,9,7,0,0,132,132,132,132,252,132,132,132, + 132,7,9,9,7,0,0,254,16,16,16,16,16,16,16,254, + 6,9,9,7,0,0,4,4,4,4,4,132,132,132,120,6, + 9,9,7,0,0,132,136,144,160,192,160,144,136,132,6,9, + 9,7,0,0,128,128,128,128,128,128,128,128,252,7,9,9, + 7,0,0,130,198,170,146,146,130,130,130,130,6,9,9,7, + 0,0,132,196,164,148,140,132,132,132,132,6,9,9,7,0, + 0,120,132,132,132,132,132,132,132,120,6,9,9,7,0,0, + 248,132,132,132,248,128,128,128,128,6,10,10,7,0,255,120, + 132,132,132,132,132,164,148,120,4,6,9,9,7,0,0,248, + 132,132,132,248,132,132,132,132,6,9,9,7,0,0,120,132, + 128,128,120,4,4,132,120,7,9,9,7,0,0,254,16,16, + 16,16,16,16,16,16,6,9,9,7,0,0,132,132,132,132, + 132,132,132,132,120,7,9,9,7,0,0,130,130,130,68,68, + 40,40,16,16,7,9,9,7,0,0,130,130,130,130,146,146, + 170,198,130,6,9,9,7,0,0,132,132,132,72,48,48,72, + 132,132,7,9,9,7,0,0,130,130,130,68,40,16,16,16, + 16,6,9,9,7,0,0,252,4,8,16,32,64,128,128,252, + 3,12,12,7,2,255,224,128,128,128,128,128,128,128,128,128, + 128,224,6,12,12,7,1,254,128,128,64,64,32,32,16,16, + 8,8,4,4,3,12,12,7,1,255,224,32,32,32,32,32, + 32,32,32,32,32,224,5,3,3,7,1,6,32,80,136,7, + 1,1,7,0,254,254,3,3,3,7,1,8,128,64,32,6, + 6,6,7,0,0,124,132,132,140,148,100,6,9,9,7,0, + 0,128,128,128,248,132,132,132,132,248,6,6,6,7,0,0, + 120,132,128,128,128,124,6,9,9,7,0,0,4,4,4,124, + 132,132,132,132,124,6,6,6,7,0,0,120,132,252,128,128, + 124,4,9,9,7,1,0,48,64,64,224,64,64,64,64,64, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,120,6, + 9,9,7,0,0,128,128,128,248,132,132,132,132,132,3,9, + 9,7,2,0,64,0,0,192,64,64,64,64,224,3,12,12, + 7,1,253,32,0,0,96,32,32,32,32,32,32,32,192,6, + 9,9,7,0,0,128,128,128,136,144,160,208,136,132,3,9, + 9,7,2,0,192,64,64,64,64,64,64,64,224,7,6,6, + 7,0,0,252,146,146,146,146,146,6,6,6,7,0,0,152, + 164,196,132,132,132,6,6,6,7,0,0,120,132,132,132,132, + 120,6,9,9,7,0,253,248,132,132,132,132,248,128,128,128, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,4,6, + 6,6,7,0,0,152,164,192,128,128,128,6,6,6,7,0, + 0,124,128,120,4,4,248,4,9,9,7,1,0,64,64,64, + 224,64,64,64,64,48,6,6,6,7,0,0,132,132,132,140, + 148,100,6,6,6,7,0,0,132,132,72,72,48,48,7,6, + 6,7,0,0,146,146,146,146,146,108,6,6,6,7,0,0, + 132,72,48,48,72,132,6,9,9,7,0,253,132,132,132,132, + 132,124,4,4,120,6,6,6,7,0,0,252,8,16,32,64, + 252,4,15,15,7,1,253,48,64,64,64,64,64,64,128,64, + 64,64,64,64,64,48,1,13,13,7,3,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,4,15,15,7,1,253,192, + 32,32,32,32,32,32,16,32,32,32,32,32,32,192,6,2, + 2,7,0,4,100,152,0,0,0,7,0,0,0,0,0,7, + 0,0,0,0,0,7,0,0,2,4,4,7,0,255,64,64, + 64,128,7,14,14,7,0,254,6,8,16,16,16,56,16,16, + 16,16,16,16,32,192,5,4,4,7,0,255,72,72,72,144, + 7,1,1,7,0,0,146,3,6,6,7,2,3,64,224,64, + 64,64,64,3,6,6,7,2,3,64,224,64,64,224,64,5, + 3,3,7,1,8,32,80,136,7,10,10,7,0,0,126,164, + 168,176,96,84,170,42,42,20,6,12,12,7,0,0,68,40, + 16,120,132,128,128,120,4,4,132,120,2,5,5,7,0,0, + 64,128,128,128,64,6,9,9,7,0,0,124,144,144,144,152, + 144,144,144,124,0,0,0,7,0,0,0,0,0,7,0,0, + 0,0,0,7,0,0,0,0,0,7,0,0,2,4,4,7, + 3,5,64,128,128,128,2,4,4,7,3,5,64,64,64,128, + 5,4,4,7,1,5,72,144,144,144,5,4,4,7,1,5, + 72,72,72,144,6,6,6,7,0,2,48,120,252,252,120,48, + 4,1,1,7,1,3,240,7,1,1,7,0,3,254,6,2, + 2,7,0,8,100,152,7,4,4,7,0,5,242,94,82,82, + 6,11,11,7,0,0,68,40,16,0,0,124,128,120,4,4, + 248,2,5,5,7,0,0,128,64,64,64,128,6,6,6,7, + 0,0,104,148,156,144,144,108,0,0,0,7,0,0,0,0, + 0,7,0,0,7,12,12,7,0,0,68,0,0,130,130,130, + 68,40,16,16,16,16,0,0,0,7,0,0,1,9,9,7, + 4,0,128,0,128,128,128,128,128,128,128,5,10,10,7,0, + 254,32,32,112,168,160,160,160,120,32,32,6,11,11,7,0, + 0,96,144,128,128,240,128,128,128,132,136,240,7,7,7,7, + 0,0,130,68,56,40,56,68,130,7,10,10,7,0,0,130, + 68,40,254,16,16,254,16,16,16,1,13,13,7,3,254,128, + 128,128,128,128,0,0,0,128,128,128,128,128,6,13,13,7, + 0,255,120,132,132,68,160,144,72,36,20,136,132,132,120,4, + 1,1,7,1,8,144,6,9,9,7,0,0,240,8,116,132, + 132,132,116,8,240,5,8,8,7,1,4,120,136,136,136,120, + 0,0,248,6,5,5,7,0,0,68,136,136,136,68,6,4, + 4,7,0,1,252,4,4,4,5,1,1,7,0,3,248,6, + 8,8,7,0,1,240,8,100,148,148,228,148,136,4,1,1, + 7,1,8,240,5,5,5,7,1,6,112,136,136,136,112,5, + 6,6,7,0,1,32,32,248,32,32,248,4,5,5,7,1, + 7,96,144,32,64,240,4,5,5,7,1,7,96,144,32,144, + 96,3,3,3,7,3,8,96,224,192,6,9,9,7,0,253, + 136,136,136,136,136,244,128,128,128,6,10,10,7,0,0,60, + 84,148,148,84,60,20,20,20,20,2,2,2,7,3,3,192, + 192,2,3,3,7,2,254,192,64,128,3,5,5,7,2,7, + 192,64,64,64,224,5,8,8,7,1,4,112,136,136,136,112, + 0,0,248,6,5,5,7,0,0,136,68,68,68,136,7,12, + 12,7,0,0,96,32,32,34,116,8,16,36,76,148,30,4, + 7,12,12,7,0,0,96,32,32,34,116,8,16,44,82,132, + 8,30,7,12,12,7,0,0,96,144,32,146,100,8,16,36, + 76,148,30,4,6,9,9,7,0,0,16,0,16,32,64,128, + 128,132,120,6,12,12,7,0,0,64,32,16,48,48,72,72, + 132,252,132,132,132,6,12,12,7,0,0,8,16,32,48,48, + 72,72,132,252,132,132,132,6,12,12,7,0,0,16,40,68, + 48,48,72,72,132,252,132,132,132,6,12,12,7,0,0,100, + 152,0,48,48,72,72,132,252,132,132,132,6,12,12,7,0, + 0,72,0,0,48,48,72,72,132,252,132,132,132,6,12,12, + 7,0,0,48,72,72,48,48,72,72,132,252,132,132,132,6, + 9,9,7,0,0,124,144,144,144,248,144,144,144,156,6,11, + 11,7,0,254,120,132,128,128,128,128,128,132,120,16,32,6, + 12,12,7,0,0,64,32,16,252,128,128,128,248,128,128,128, + 252,6,12,12,7,0,0,8,16,32,252,128,128,128,248,128, + 128,128,252,6,12,12,7,0,0,16,40,68,252,128,128,128, + 248,128,128,128,252,6,12,12,7,0,0,72,0,0,252,128, + 128,128,248,128,128,128,252,7,12,12,7,0,0,64,32,16, + 254,16,16,16,16,16,16,16,254,7,12,12,7,0,0,4, + 8,16,254,16,16,16,16,16,16,16,254,7,12,12,7,0, + 0,16,40,68,254,16,16,16,16,16,16,16,254,7,12,12, + 7,0,0,72,0,0,254,16,16,16,16,16,16,16,254,6, + 9,9,7,0,0,120,68,68,68,228,68,68,68,120,6,12, + 12,7,0,0,100,152,0,132,196,164,148,140,132,132,132,132, + 6,12,12,7,0,0,64,32,16,120,132,132,132,132,132,132, + 132,120,6,12,12,7,0,0,8,16,32,120,132,132,132,132, + 132,132,132,120,6,12,12,7,0,0,16,40,68,120,132,132, + 132,132,132,132,132,120,6,12,12,7,0,0,100,152,0,120, + 132,132,132,132,132,132,132,120,6,12,12,7,0,0,72,0, + 0,120,132,132,132,132,132,132,132,120,5,5,5,7,0,2, + 136,80,32,80,136,6,9,9,7,0,0,120,132,140,148,164, + 196,132,132,120,6,12,12,7,0,0,64,32,16,132,132,132, + 132,132,132,132,132,120,6,12,12,7,0,0,8,16,32,132, + 132,132,132,132,132,132,132,120,6,12,12,7,0,0,16,40, + 68,0,132,132,132,132,132,132,132,120,6,12,12,7,0,0, + 72,0,0,132,132,132,132,132,132,132,132,120,7,12,12,7, + 0,0,4,8,16,130,130,130,68,40,16,16,16,16,6,9, + 9,7,0,0,128,248,132,132,132,248,128,128,128,6,11,11, + 7,0,255,56,68,132,136,144,144,136,132,132,152,128,6,11, + 11,7,0,0,64,32,16,0,0,124,132,132,140,148,100,6, + 11,11,7,0,0,4,8,16,0,0,124,132,132,140,148,100, + 6,11,11,7,0,0,16,40,68,0,0,124,132,132,140,148, + 100,6,10,10,7,0,0,100,152,0,0,124,132,132,140,148, + 100,6,9,9,7,0,0,72,0,0,124,132,132,140,148,100, + 6,10,10,7,0,0,48,72,72,48,124,132,132,140,148,100, + 6,6,6,7,0,0,120,164,188,160,160,124,6,8,8,7, + 0,254,120,132,128,128,128,124,16,32,6,11,11,7,0,0, + 64,32,16,0,0,120,132,252,128,128,124,6,11,11,7,0, + 0,4,8,16,0,0,120,132,252,128,128,124,6,11,11,7, + 0,0,16,40,68,0,0,120,132,252,128,128,124,6,9,9, + 7,0,0,72,0,0,120,132,252,128,128,124,4,11,11,7, + 1,0,128,64,32,0,0,96,32,32,32,32,112,4,11,11, + 7,2,0,16,32,64,0,0,192,64,64,64,64,224,5,11, + 11,7,1,0,32,80,136,0,0,96,32,32,32,32,112,4, + 9,9,7,1,0,144,0,0,96,32,32,32,32,112,6,11, + 11,7,0,0,80,32,80,8,4,124,132,132,132,132,120,6, + 10,10,7,0,0,100,152,0,0,152,164,196,132,132,132,6, + 11,11,7,0,0,64,32,16,0,0,120,132,132,132,132,120, + 6,11,11,7,0,0,4,8,16,0,0,120,132,132,132,132, + 120,6,11,11,7,0,0,16,40,68,0,0,120,132,132,132, + 132,120,6,10,10,7,0,0,100,152,0,0,120,132,132,132, + 132,120,6,9,9,7,0,0,72,0,0,120,132,132,132,132, + 120,5,5,5,7,0,1,32,0,248,0,32,6,6,6,7, + 0,0,120,140,148,164,196,120,6,11,11,7,0,0,64,32, + 16,0,0,132,132,132,140,148,100,6,11,11,7,0,0,4, + 8,16,0,0,132,132,132,140,148,100,6,11,11,7,0,0, + 16,40,68,0,0,132,132,132,140,148,100,6,9,9,7,0, + 0,72,0,0,132,132,132,140,148,100,6,14,14,7,0,253, + 4,8,16,0,0,132,132,132,132,132,124,4,4,120,6,12, + 12,7,0,253,128,128,128,248,132,132,132,132,248,128,128,128, + 6,12,12,7,0,253,72,0,0,132,132,132,132,132,124,4, + 4,120}; +/* + Fontname: ProFont15 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 9, '1' Height: 9 + Calculated Max Values w= 7 h=15 x= 3 y= 8 dx= 7 dy= 0 ascent=12 len=15 + Font Bounding box w= 7 h=14 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent = 9 descent=-3 + X Font ascent =11 descent=-3 + Max Font ascent =12 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont15r[1372] U8G_FONT_SECTION("u8g_font_profont15r") = { + 0,7,14,0,253,9,1,217,3,175,32,127,253,12,253,11, + 253,0,0,0,7,0,0,1,9,9,7,3,0,128,128,128, + 128,128,128,128,0,128,4,4,4,7,1,7,144,144,144,144, + 6,6,6,7,0,3,72,252,72,72,252,72,5,13,13,7, + 0,254,32,32,112,168,160,160,112,40,40,168,112,32,32,7, + 9,9,7,0,0,126,162,164,168,84,42,74,138,132,6,9, + 9,7,0,0,112,136,144,160,64,160,148,136,116,1,4,4, + 7,3,7,128,128,128,128,4,13,13,7,1,254,16,32,64, + 128,128,128,128,128,128,128,64,32,16,4,13,13,7,1,254, + 128,64,32,16,16,16,16,16,16,16,32,64,128,5,6,6, + 7,0,3,32,168,112,112,168,32,5,5,5,7,0,1,32, + 32,248,32,32,3,5,5,7,1,253,96,96,32,64,128,4, + 1,1,7,1,3,240,2,2,2,7,2,0,192,192,6,12, + 12,7,0,254,4,4,8,8,16,16,32,32,64,64,128,128, + 6,9,9,7,0,0,120,132,140,148,164,196,132,132,120,7, + 9,9,7,0,0,16,112,16,16,16,16,16,16,254,6,9, + 9,7,0,0,120,132,4,4,8,16,32,64,252,6,9,9, + 7,0,0,120,132,4,4,56,4,4,132,120,6,9,9,7, + 0,0,8,24,40,72,136,252,8,8,28,6,9,9,7,0, + 0,252,128,128,248,4,4,4,132,120,6,9,9,7,0,0, + 120,128,128,248,132,132,132,132,120,6,9,9,7,0,0,252, + 4,4,8,16,32,32,32,32,6,9,9,7,0,0,120,132, + 132,132,120,132,132,132,120,6,9,9,7,0,0,120,132,132, + 132,132,124,4,4,120,2,7,7,7,2,0,192,192,0,0, + 0,192,192,3,10,10,7,1,253,96,96,0,0,0,96,96, + 32,64,128,5,9,9,7,1,0,8,16,32,64,128,64,32, + 16,8,6,4,4,7,0,3,252,0,0,252,5,9,9,7, + 1,0,128,64,32,16,8,16,32,64,128,6,9,9,7,0, + 0,120,132,4,4,8,16,32,0,32,6,9,9,7,0,0, + 120,132,156,164,164,152,128,128,124,6,9,9,7,0,0,48, + 48,72,72,132,252,132,132,132,6,9,9,7,0,0,248,132, + 132,132,248,132,132,132,248,6,9,9,7,0,0,120,132,128, + 128,128,128,128,132,120,6,9,9,7,0,0,248,132,132,132, + 132,132,132,132,248,6,9,9,7,0,0,252,128,128,128,248, + 128,128,128,252,6,9,9,7,0,0,252,128,128,128,248,128, + 128,128,128,6,9,9,7,0,0,120,132,128,128,140,132,132, + 132,120,6,9,9,7,0,0,132,132,132,132,252,132,132,132, + 132,7,9,9,7,0,0,254,16,16,16,16,16,16,16,254, + 6,9,9,7,0,0,4,4,4,4,4,132,132,132,120,6, + 9,9,7,0,0,132,136,144,160,192,160,144,136,132,6,9, + 9,7,0,0,128,128,128,128,128,128,128,128,252,7,9,9, + 7,0,0,130,198,170,146,146,130,130,130,130,6,9,9,7, + 0,0,132,196,164,148,140,132,132,132,132,6,9,9,7,0, + 0,120,132,132,132,132,132,132,132,120,6,9,9,7,0,0, + 248,132,132,132,248,128,128,128,128,6,10,10,7,0,255,120, + 132,132,132,132,132,164,148,120,4,6,9,9,7,0,0,248, + 132,132,132,248,132,132,132,132,6,9,9,7,0,0,120,132, + 128,128,120,4,4,132,120,7,9,9,7,0,0,254,16,16, + 16,16,16,16,16,16,6,9,9,7,0,0,132,132,132,132, + 132,132,132,132,120,7,9,9,7,0,0,130,130,130,68,68, + 40,40,16,16,7,9,9,7,0,0,130,130,130,130,146,146, + 170,198,130,6,9,9,7,0,0,132,132,132,72,48,48,72, + 132,132,7,9,9,7,0,0,130,130,130,68,40,16,16,16, + 16,6,9,9,7,0,0,252,4,8,16,32,64,128,128,252, + 3,12,12,7,2,255,224,128,128,128,128,128,128,128,128,128, + 128,224,6,12,12,7,1,254,128,128,64,64,32,32,16,16, + 8,8,4,4,3,12,12,7,1,255,224,32,32,32,32,32, + 32,32,32,32,32,224,5,3,3,7,1,6,32,80,136,7, + 1,1,7,0,254,254,3,3,3,7,1,8,128,64,32,6, + 6,6,7,0,0,124,132,132,140,148,100,6,9,9,7,0, + 0,128,128,128,248,132,132,132,132,248,6,6,6,7,0,0, + 120,132,128,128,128,124,6,9,9,7,0,0,4,4,4,124, + 132,132,132,132,124,6,6,6,7,0,0,120,132,252,128,128, + 124,4,9,9,7,1,0,48,64,64,224,64,64,64,64,64, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,120,6, + 9,9,7,0,0,128,128,128,248,132,132,132,132,132,3,9, + 9,7,2,0,64,0,0,192,64,64,64,64,224,3,12,12, + 7,1,253,32,0,0,96,32,32,32,32,32,32,32,192,6, + 9,9,7,0,0,128,128,128,136,144,160,208,136,132,3,9, + 9,7,2,0,192,64,64,64,64,64,64,64,224,7,6,6, + 7,0,0,252,146,146,146,146,146,6,6,6,7,0,0,152, + 164,196,132,132,132,6,6,6,7,0,0,120,132,132,132,132, + 120,6,9,9,7,0,253,248,132,132,132,132,248,128,128,128, + 6,9,9,7,0,253,124,132,132,132,132,124,4,4,4,6, + 6,6,7,0,0,152,164,192,128,128,128,6,6,6,7,0, + 0,124,128,120,4,4,248,4,9,9,7,1,0,64,64,64, + 224,64,64,64,64,48,6,6,6,7,0,0,132,132,132,140, + 148,100,6,6,6,7,0,0,132,132,72,72,48,48,7,6, + 6,7,0,0,146,146,146,146,146,108,6,6,6,7,0,0, + 132,72,48,48,72,132,6,9,9,7,0,253,132,132,132,132, + 132,124,4,4,120,6,6,6,7,0,0,252,8,16,32,64, + 252,4,15,15,7,1,253,48,64,64,64,64,64,64,128,64, + 64,64,64,64,64,48,1,13,13,7,3,254,128,128,128,128, + 128,128,128,128,128,128,128,128,128,4,15,15,7,1,253,192, + 32,32,32,32,32,32,16,32,32,32,32,32,32,192,6,2, + 2,7,0,4,100,152,0,0,0,7,0,0}; +/* + Fontname: ProFont17 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w= 9 h=17 x= 5 y=10 dx=14 dy= 0 ascent=14 len=32 + Font Bounding box w=14 h=16 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =13 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont17[3681] U8G_FONT_SECTION("u8g_font_profont17") = { + 0,14,16,0,253,11,2,35,4,78,32,255,253,14,253,13, + 253,0,0,0,14,0,0,2,11,11,14,3,0,192,192,192, + 192,192,192,192,192,0,192,192,5,5,5,14,1,8,216,216, + 216,216,216,7,7,7,14,1,3,108,254,254,108,254,254,108, + 8,15,15,14,0,254,24,24,60,126,219,216,124,62,31,219, + 219,126,60,24,24,8,11,11,14,0,0,63,127,219,222,124, + 60,62,123,219,206,196,8,11,11,14,0,0,48,120,204,204, + 216,112,243,222,204,254,123,2,5,5,14,3,8,192,192,192, + 192,192,6,15,15,14,1,254,12,24,48,96,192,192,192,192, + 192,192,192,96,48,24,12,6,15,15,14,1,254,192,96,48, + 24,12,12,12,12,12,12,12,24,48,96,192,8,8,8,14, + 0,3,24,219,255,60,60,255,219,24,8,8,8,14,0,1, + 24,24,24,255,255,24,24,24,4,6,6,14,1,253,112,112, + 112,48,96,192,5,2,2,14,1,4,248,248,3,3,3,14, + 2,0,224,224,224,9,16,32,14,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,11,11,14,0, + 0,60,126,195,199,207,219,243,227,195,126,60,8,11,11,14, + 0,0,24,120,120,24,24,24,24,24,24,255,255,8,11,11, + 14,0,0,60,126,195,195,6,12,24,48,96,255,255,8,11, + 11,14,0,0,60,126,195,195,30,28,6,195,195,126,60,8, + 11,11,14,0,0,6,14,30,54,102,198,255,255,6,15,15, + 8,11,11,14,0,0,255,255,192,252,254,3,3,3,195,126, + 60,8,11,11,14,0,0,62,126,192,252,254,195,195,195,195, + 126,60,8,11,11,14,0,0,255,255,3,3,6,12,24,24, + 24,24,24,8,11,11,14,0,0,60,126,195,195,126,60,126, + 195,195,126,60,8,11,11,14,0,0,60,126,195,195,195,195, + 127,63,3,126,124,3,8,8,14,2,0,224,224,224,0,0, + 224,224,224,4,11,11,14,1,253,112,112,112,0,0,112,112, + 112,48,96,192,7,11,11,14,1,0,6,12,24,48,96,192, + 96,48,24,12,6,8,5,5,14,0,3,255,255,0,255,255, + 7,11,11,14,1,0,192,96,48,24,12,6,12,24,48,96, + 192,8,11,11,14,0,0,60,126,195,195,6,12,24,16,0, + 24,24,8,11,11,14,0,0,60,126,195,207,223,219,223,206, + 192,127,63,8,11,11,14,0,0,24,60,60,102,102,195,255, + 255,195,195,195,8,11,11,14,0,0,252,254,195,195,254,252, + 198,195,195,254,252,8,11,11,14,0,0,60,126,195,195,192, + 192,192,195,195,126,60,8,11,11,14,0,0,252,254,195,195, + 195,195,195,195,195,254,252,8,11,11,14,0,0,255,255,192, + 192,252,252,192,192,192,255,255,8,11,11,14,0,0,255,255, + 192,192,252,252,192,192,192,192,192,8,11,11,14,0,0,60, + 126,195,195,192,207,207,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,255,255,195,195,195,195,195,8,11,11,14,0, + 0,255,255,24,24,24,24,24,24,24,255,255,8,11,11,14, + 0,0,3,3,3,3,3,3,195,195,195,126,60,8,11,11, + 14,0,0,195,198,204,216,240,224,240,216,204,198,195,8,11, + 11,14,0,0,192,192,192,192,192,192,192,192,192,255,255,8, + 11,11,14,0,0,195,231,255,255,219,219,219,195,195,195,195, + 8,11,11,14,0,0,195,227,243,219,207,199,195,195,195,195, + 195,8,11,11,14,0,0,60,126,195,195,195,195,195,195,195, + 126,60,8,11,11,14,0,0,252,254,195,195,254,252,192,192, + 192,192,192,8,13,13,14,0,254,60,126,195,195,195,195,195, + 219,207,126,62,6,3,8,11,11,14,0,0,252,254,195,195, + 254,252,198,195,195,195,195,8,11,11,14,0,0,60,126,195, + 192,124,62,7,195,195,126,60,8,11,11,14,0,0,255,255, + 24,24,24,24,24,24,24,24,24,8,11,11,14,0,0,195, + 195,195,195,195,195,195,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,195,102,102,60,60,24,24,8,11,11,14,0, + 0,195,195,195,195,219,219,219,255,255,231,195,8,11,11,14, + 0,0,195,195,195,102,60,24,60,102,195,195,195,8,11,11, + 14,0,0,195,195,195,195,231,126,60,24,24,24,24,8,11, + 11,14,0,0,255,255,3,6,12,24,48,96,192,255,255,4, + 15,15,14,3,254,240,240,192,192,192,192,192,192,192,192,192, + 192,192,240,240,9,16,32,14,0,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,14,1,254, + 240,240,48,48,48,48,48,48,48,48,48,48,48,240,240,7, + 5,5,14,1,6,16,56,108,198,130,9,2,4,14,0,253, + 255,128,255,128,3,4,4,14,1,9,128,192,96,32,8,8, + 8,14,0,0,63,127,195,195,199,207,123,51,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,254,252,8,8,8, + 14,0,0,60,126,195,195,192,192,127,63,8,11,11,14,0, + 0,3,3,3,63,127,195,195,195,195,127,63,8,8,8,14, + 0,0,60,126,195,255,255,192,127,63,6,11,11,14,2,0, + 28,60,96,240,240,96,96,96,96,96,96,8,11,11,14,0, + 253,63,127,195,195,195,195,127,63,3,62,60,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,195,195,6,11,11, + 14,1,0,48,48,0,240,240,48,48,48,48,252,252,5,14, + 14,14,0,253,24,24,0,120,120,24,24,24,24,24,24,24, + 240,224,8,11,11,14,0,0,192,192,192,198,204,216,240,248, + 204,198,195,6,11,11,14,1,0,240,240,48,48,48,48,48, + 48,48,252,252,8,8,8,14,0,0,252,254,219,219,219,219, + 219,219,8,8,8,14,0,0,204,222,243,227,195,195,195,195, + 8,8,8,14,0,0,60,126,195,195,195,195,126,60,8,11, + 11,14,0,253,252,254,195,195,195,195,254,252,192,192,192,8, + 11,11,14,0,253,63,127,195,195,195,195,127,63,3,3,3, + 8,8,8,14,0,0,204,222,243,227,192,192,192,192,8,8, + 8,14,0,0,63,255,192,252,63,3,255,252,6,11,11,14, + 2,0,96,96,96,240,240,96,96,96,96,60,28,8,8,8, + 14,0,0,195,195,195,195,199,207,123,51,8,8,8,14,0, + 0,195,195,195,102,102,60,60,24,8,8,8,14,0,0,219, + 219,219,219,219,219,255,102,8,8,8,14,0,0,195,102,60, + 24,24,60,102,195,8,11,11,14,0,253,195,195,195,195,195, + 195,127,63,3,62,60,7,8,8,14,0,0,254,254,12,24, + 48,96,254,254,5,17,17,14,1,253,24,56,48,48,48,48, + 48,96,192,96,48,48,48,48,48,56,24,2,15,15,14,3, + 254,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,17,17,14,2,253,192,224,96,96,96,96,96,48,24,48, + 96,96,96,96,96,224,192,8,3,3,14,0,5,113,219,142, + 0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14, + 0,0,4,5,5,14,0,254,48,48,48,96,192,8,17,17, + 14,0,253,7,15,24,24,24,24,60,60,24,24,24,24,24, + 24,24,240,224,7,5,5,14,0,254,54,54,54,108,216,8, + 2,2,14,0,0,219,219,4,9,9,14,2,2,96,96,240, + 240,96,96,96,96,96,4,9,9,14,2,2,96,96,240,240, + 96,240,240,96,96,6,3,3,14,1,10,48,120,204,9,13, + 26,14,0,0,63,128,127,128,217,128,219,0,222,0,124,0, + 56,0,63,0,127,128,214,128,150,128,31,128,15,0,8,14, + 14,14,0,0,102,60,24,60,126,195,192,124,62,7,195,195, + 126,60,4,7,7,14,0,0,48,96,192,192,192,96,48,8, + 11,11,14,0,0,63,127,216,216,220,220,216,216,216,127,63, + 0,0,0,14,0,0,0,0,0,14,0,0,0,0,0,14, + 0,0,0,0,0,14,0,0,4,5,5,14,3,6,48,96, + 192,192,192,4,5,5,14,3,6,48,48,48,96,192,7,5, + 5,14,1,6,54,108,216,216,216,7,5,5,14,1,6,54, + 54,54,108,216,7,7,7,14,0,2,56,124,254,254,254,124, + 56,5,2,2,14,2,5,248,248,9,2,4,14,0,5,255, + 128,255,128,8,3,3,14,0,9,113,219,142,9,5,10,14, + 0,6,252,128,39,128,39,128,36,128,36,128,8,13,13,14, + 0,0,102,60,24,0,0,63,255,192,252,63,3,255,252,4, + 7,7,14,0,0,192,96,48,48,48,96,192,8,8,8,14, + 0,0,36,126,219,223,223,216,127,39,0,0,0,14,0,0, + 0,0,0,14,0,0,8,14,14,14,0,0,102,102,0,195, + 195,195,195,231,126,60,24,24,24,24,0,0,0,14,0,0, + 2,11,11,14,5,0,192,192,0,192,192,192,192,192,192,192, + 192,8,12,12,14,0,254,24,24,60,126,219,219,216,216,127, + 63,24,24,8,12,12,14,0,0,120,252,204,192,240,240,192, + 192,192,199,254,252,8,8,8,14,0,0,129,66,60,36,36, + 60,66,129,8,11,11,14,0,0,195,102,60,255,255,24,255, + 255,24,24,24,2,15,15,14,3,254,192,192,192,192,192,192, + 0,0,0,192,192,192,192,192,192,8,16,16,14,0,254,60, + 126,99,99,51,216,204,198,99,51,27,204,198,198,126,60,4, + 2,2,14,2,9,144,240,8,11,11,14,0,0,120,252,134, + 123,251,195,251,123,134,252,120,6,9,9,14,2,5,60,124, + 204,204,124,60,0,252,252,8,7,7,14,0,0,51,102,204, + 204,204,102,51,8,4,4,14,0,2,255,255,3,3,8,2, + 2,14,0,4,255,255,8,10,10,14,0,1,248,252,6,243, + 251,219,243,251,222,204,5,2,2,14,2,9,248,248,6,6, + 6,14,2,6,48,120,204,204,120,48,8,9,9,14,0,0, + 24,24,24,255,255,24,24,255,255,4,6,6,14,2,8,96, + 144,16,32,64,240,4,6,6,14,2,8,96,144,32,16,144, + 96,4,4,4,14,3,9,48,112,224,192,8,11,11,14,0, + 253,204,204,204,204,204,204,255,243,192,192,192,8,13,13,14, + 0,0,63,127,219,219,219,219,127,63,27,27,27,27,27,3, + 3,3,14,3,4,224,224,224,4,5,5,14,1,253,112,112, + 48,96,192,3,6,6,14,3,8,192,64,64,64,64,224,6, + 9,9,14,2,5,48,120,204,204,120,48,0,252,252,8,7, + 7,14,0,0,204,102,51,51,51,102,204,9,14,28,14,0, + 0,96,0,32,0,32,0,32,128,33,0,114,0,4,0,8, + 0,17,0,35,0,69,0,137,0,15,128,1,0,9,14,28, + 14,0,0,96,0,32,0,32,0,32,128,33,0,114,0,4, + 0,8,0,19,0,36,128,64,128,129,0,2,0,7,128,9, + 14,28,14,0,0,48,0,72,0,16,0,8,128,73,0,50, + 0,4,0,8,0,17,0,35,0,69,0,137,0,15,128,1, + 0,8,11,11,14,0,0,24,24,0,8,24,48,96,195,195, + 126,60,8,14,14,14,0,0,96,48,24,24,60,60,102,102, + 195,255,255,195,195,195,8,14,14,14,0,0,6,12,24,24, + 60,60,102,102,195,255,255,195,195,195,8,14,14,14,0,0, + 24,60,102,24,60,60,102,102,195,255,255,195,195,195,8,14, + 14,14,0,0,115,219,142,24,60,60,102,102,195,255,255,195, + 195,195,8,14,14,14,0,0,102,102,0,24,60,60,102,102, + 195,255,255,195,195,195,8,14,14,14,0,0,24,60,36,60, + 24,60,102,102,195,255,255,195,195,195,8,11,11,14,0,0, + 63,127,216,216,252,252,216,216,216,223,223,8,14,14,14,0, + 253,60,126,195,195,192,192,192,195,195,126,60,24,48,96,8, + 14,14,14,0,0,96,48,24,255,255,192,192,252,252,192,192, + 192,255,255,8,14,14,14,0,0,6,12,24,255,255,192,192, + 252,252,192,192,192,255,255,8,14,14,14,0,0,24,60,102, + 255,255,192,192,252,252,192,192,192,255,255,8,14,14,14,0, + 0,102,102,0,255,255,192,192,252,252,192,192,192,255,255,8, + 14,14,14,0,0,96,48,24,255,255,24,24,24,24,24,24, + 24,255,255,8,14,14,14,0,0,6,12,24,255,255,24,24, + 24,24,24,24,24,255,255,8,14,14,14,0,0,24,60,102, + 255,255,24,24,24,24,24,24,24,255,255,8,14,14,14,0, + 0,102,102,0,255,255,24,24,24,24,24,24,24,255,255,8, + 11,11,14,0,0,124,126,99,99,243,243,99,99,99,126,124, + 8,14,14,14,0,0,113,219,142,195,227,243,219,207,199,195, + 195,195,195,195,8,14,14,14,0,0,96,48,24,60,126,195, + 195,195,195,195,195,195,126,60,8,14,14,14,0,0,6,12, + 24,60,126,195,195,195,195,195,195,195,126,60,8,14,14,14, + 0,0,24,60,102,0,60,126,195,195,195,195,195,195,126,60, + 8,14,14,14,0,0,113,219,142,60,126,195,195,195,195,195, + 195,195,126,60,8,14,14,14,0,0,102,102,0,60,126,195, + 195,195,195,195,195,195,126,60,8,7,7,14,0,2,195,102, + 60,24,60,102,195,8,11,11,14,0,0,60,126,195,199,207, + 219,243,227,195,126,60,8,14,14,14,0,0,96,48,24,195, + 195,195,195,195,195,195,195,195,126,60,8,14,14,14,0,0, + 6,12,24,195,195,195,195,195,195,195,195,195,126,60,8,14, + 14,14,0,0,24,60,102,0,195,195,195,195,195,195,195,195, + 126,60,8,14,14,14,0,0,102,102,0,195,195,195,195,195, + 195,195,195,195,126,60,8,14,14,14,0,0,6,12,24,195, + 195,195,195,231,126,60,24,24,24,24,8,11,11,14,0,0, + 192,192,252,254,195,195,254,252,192,192,192,8,15,15,14,0, + 254,28,62,99,195,195,198,204,204,198,195,195,222,220,192,192, + 8,13,13,14,0,0,16,24,12,4,0,63,127,195,195,199, + 207,123,51,8,13,13,14,0,0,4,12,24,16,0,63,127, + 195,195,199,207,123,51,8,12,12,14,0,0,24,60,102,0, + 63,127,195,195,199,207,123,51,8,12,12,14,0,0,113,219, + 142,0,63,127,195,195,199,207,123,51,8,11,11,14,0,0, + 102,102,0,63,127,195,195,199,207,123,51,8,12,12,14,0, + 0,24,36,36,24,63,127,195,195,199,207,123,51,8,8,8, + 14,0,0,60,126,219,223,223,216,127,63,8,11,11,14,0, + 253,60,126,195,195,192,192,127,63,24,48,96,8,13,13,14, + 0,0,32,48,24,8,0,60,126,195,255,255,192,127,63,8, + 13,13,14,0,0,4,12,24,16,0,60,126,195,255,255,192, + 127,63,8,12,12,14,0,0,24,60,102,0,60,126,195,255, + 255,192,127,63,8,11,11,14,0,0,102,102,0,60,126,195, + 255,255,192,127,63,6,13,13,14,1,0,128,192,96,32,0, + 240,240,48,48,48,48,252,252,6,13,13,14,1,0,8,24, + 48,32,0,240,240,48,48,48,48,252,252,6,12,12,14,1, + 0,48,120,204,0,240,240,48,48,48,48,252,252,6,11,11, + 14,1,0,204,204,0,240,240,48,48,48,48,252,252,8,13, + 13,14,0,0,72,48,48,72,4,62,127,195,195,195,195,126, + 60,8,12,12,14,0,0,113,219,142,0,204,222,243,227,195, + 195,195,195,8,13,13,14,0,0,32,48,24,8,0,60,126, + 195,195,195,195,126,60,8,13,13,14,0,0,4,12,24,16, + 0,60,126,195,195,195,195,126,60,8,12,12,14,0,0,24, + 60,102,0,60,126,195,195,195,195,126,60,8,12,12,14,0, + 0,113,219,142,0,60,126,195,195,195,195,126,60,8,11,11, + 14,0,0,102,102,0,60,126,195,195,195,195,126,60,8,8, + 8,14,0,2,24,24,0,255,255,0,24,24,8,8,8,14, + 0,0,60,126,199,207,243,227,126,60,8,13,13,14,0,0, + 32,48,24,8,0,195,195,195,195,199,207,123,51,8,13,13, + 14,0,0,4,12,24,16,0,195,195,195,195,199,207,123,51, + 8,12,12,14,0,0,24,60,102,0,195,195,195,195,199,207, + 123,51,8,11,11,14,0,0,102,102,0,195,195,195,195,199, + 207,123,51,8,16,16,14,0,253,4,12,24,16,0,195,195, + 195,195,195,195,127,63,3,62,60,8,14,14,14,0,253,192, + 192,192,252,254,195,195,195,195,254,252,192,192,192,8,14,14, + 14,0,253,102,102,0,195,195,195,195,195,195,127,63,3,62, + 60}; +/* + Fontname: ProFont17 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 11, '1' Height: 11 + Calculated Max Values w= 9 h=17 x= 3 y= 9 dx=14 dy= 0 ascent=14 len=32 + Font Bounding box w=14 h=16 x= 0 y=-3 + Calculated Min Values x= 0 y=-3 dx= 0 dy= 0 + Pure Font ascent =11 descent=-3 + X Font ascent =13 descent=-3 + Max Font ascent =14 descent=-3 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont17r[1590] U8G_FONT_SECTION("u8g_font_profont17r") = { + 0,14,16,0,253,11,2,35,4,78,32,127,253,14,253,13, + 253,0,0,0,14,0,0,2,11,11,14,3,0,192,192,192, + 192,192,192,192,192,0,192,192,5,5,5,14,1,8,216,216, + 216,216,216,7,7,7,14,1,3,108,254,254,108,254,254,108, + 8,15,15,14,0,254,24,24,60,126,219,216,124,62,31,219, + 219,126,60,24,24,8,11,11,14,0,0,63,127,219,222,124, + 60,62,123,219,206,196,8,11,11,14,0,0,48,120,204,204, + 216,112,243,222,204,254,123,2,5,5,14,3,8,192,192,192, + 192,192,6,15,15,14,1,254,12,24,48,96,192,192,192,192, + 192,192,192,96,48,24,12,6,15,15,14,1,254,192,96,48, + 24,12,12,12,12,12,12,12,24,48,96,192,8,8,8,14, + 0,3,24,219,255,60,60,255,219,24,8,8,8,14,0,1, + 24,24,24,255,255,24,24,24,4,6,6,14,1,253,112,112, + 112,48,96,192,5,2,2,14,1,4,248,248,3,3,3,14, + 2,0,224,224,224,9,16,32,14,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,11,11,14,0, + 0,60,126,195,199,207,219,243,227,195,126,60,8,11,11,14, + 0,0,24,120,120,24,24,24,24,24,24,255,255,8,11,11, + 14,0,0,60,126,195,195,6,12,24,48,96,255,255,8,11, + 11,14,0,0,60,126,195,195,30,28,6,195,195,126,60,8, + 11,11,14,0,0,6,14,30,54,102,198,255,255,6,15,15, + 8,11,11,14,0,0,255,255,192,252,254,3,3,3,195,126, + 60,8,11,11,14,0,0,62,126,192,252,254,195,195,195,195, + 126,60,8,11,11,14,0,0,255,255,3,3,6,12,24,24, + 24,24,24,8,11,11,14,0,0,60,126,195,195,126,60,126, + 195,195,126,60,8,11,11,14,0,0,60,126,195,195,195,195, + 127,63,3,126,124,3,8,8,14,2,0,224,224,224,0,0, + 224,224,224,4,11,11,14,1,253,112,112,112,0,0,112,112, + 112,48,96,192,7,11,11,14,1,0,6,12,24,48,96,192, + 96,48,24,12,6,8,5,5,14,0,3,255,255,0,255,255, + 7,11,11,14,1,0,192,96,48,24,12,6,12,24,48,96, + 192,8,11,11,14,0,0,60,126,195,195,6,12,24,16,0, + 24,24,8,11,11,14,0,0,60,126,195,207,223,219,223,206, + 192,127,63,8,11,11,14,0,0,24,60,60,102,102,195,255, + 255,195,195,195,8,11,11,14,0,0,252,254,195,195,254,252, + 198,195,195,254,252,8,11,11,14,0,0,60,126,195,195,192, + 192,192,195,195,126,60,8,11,11,14,0,0,252,254,195,195, + 195,195,195,195,195,254,252,8,11,11,14,0,0,255,255,192, + 192,252,252,192,192,192,255,255,8,11,11,14,0,0,255,255, + 192,192,252,252,192,192,192,192,192,8,11,11,14,0,0,60, + 126,195,195,192,207,207,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,255,255,195,195,195,195,195,8,11,11,14,0, + 0,255,255,24,24,24,24,24,24,24,255,255,8,11,11,14, + 0,0,3,3,3,3,3,3,195,195,195,126,60,8,11,11, + 14,0,0,195,198,204,216,240,224,240,216,204,198,195,8,11, + 11,14,0,0,192,192,192,192,192,192,192,192,192,255,255,8, + 11,11,14,0,0,195,231,255,255,219,219,219,195,195,195,195, + 8,11,11,14,0,0,195,227,243,219,207,199,195,195,195,195, + 195,8,11,11,14,0,0,60,126,195,195,195,195,195,195,195, + 126,60,8,11,11,14,0,0,252,254,195,195,254,252,192,192, + 192,192,192,8,13,13,14,0,254,60,126,195,195,195,195,195, + 219,207,126,62,6,3,8,11,11,14,0,0,252,254,195,195, + 254,252,198,195,195,195,195,8,11,11,14,0,0,60,126,195, + 192,124,62,7,195,195,126,60,8,11,11,14,0,0,255,255, + 24,24,24,24,24,24,24,24,24,8,11,11,14,0,0,195, + 195,195,195,195,195,195,195,195,126,60,8,11,11,14,0,0, + 195,195,195,195,195,102,102,60,60,24,24,8,11,11,14,0, + 0,195,195,195,195,219,219,219,255,255,231,195,8,11,11,14, + 0,0,195,195,195,102,60,24,60,102,195,195,195,8,11,11, + 14,0,0,195,195,195,195,231,126,60,24,24,24,24,8,11, + 11,14,0,0,255,255,3,6,12,24,48,96,192,255,255,4, + 15,15,14,3,254,240,240,192,192,192,192,192,192,192,192,192, + 192,192,240,240,9,16,32,14,0,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,14,1,254, + 240,240,48,48,48,48,48,48,48,48,48,48,48,240,240,7, + 5,5,14,1,6,16,56,108,198,130,9,2,4,14,0,253, + 255,128,255,128,3,4,4,14,1,9,128,192,96,32,8,8, + 8,14,0,0,63,127,195,195,199,207,123,51,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,254,252,8,8,8, + 14,0,0,60,126,195,195,192,192,127,63,8,11,11,14,0, + 0,3,3,3,63,127,195,195,195,195,127,63,8,8,8,14, + 0,0,60,126,195,255,255,192,127,63,6,11,11,14,2,0, + 28,60,96,240,240,96,96,96,96,96,96,8,11,11,14,0, + 253,63,127,195,195,195,195,127,63,3,62,60,8,11,11,14, + 0,0,192,192,192,252,254,195,195,195,195,195,195,6,11,11, + 14,1,0,48,48,0,240,240,48,48,48,48,252,252,5,14, + 14,14,0,253,24,24,0,120,120,24,24,24,24,24,24,24, + 240,224,8,11,11,14,0,0,192,192,192,198,204,216,240,248, + 204,198,195,6,11,11,14,1,0,240,240,48,48,48,48,48, + 48,48,252,252,8,8,8,14,0,0,252,254,219,219,219,219, + 219,219,8,8,8,14,0,0,204,222,243,227,195,195,195,195, + 8,8,8,14,0,0,60,126,195,195,195,195,126,60,8,11, + 11,14,0,253,252,254,195,195,195,195,254,252,192,192,192,8, + 11,11,14,0,253,63,127,195,195,195,195,127,63,3,3,3, + 8,8,8,14,0,0,204,222,243,227,192,192,192,192,8,8, + 8,14,0,0,63,255,192,252,63,3,255,252,6,11,11,14, + 2,0,96,96,96,240,240,96,96,96,96,60,28,8,8,8, + 14,0,0,195,195,195,195,199,207,123,51,8,8,8,14,0, + 0,195,195,195,102,102,60,60,24,8,8,8,14,0,0,219, + 219,219,219,219,219,255,102,8,8,8,14,0,0,195,102,60, + 24,24,60,102,195,8,11,11,14,0,253,195,195,195,195,195, + 195,127,63,3,62,60,7,8,8,14,0,0,254,254,12,24, + 48,96,254,254,5,17,17,14,1,253,24,56,48,48,48,48, + 48,96,192,96,48,48,48,48,48,56,24,2,15,15,14,3, + 254,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 5,17,17,14,2,253,192,224,96,96,96,96,96,48,24,48, + 96,96,96,96,96,224,192,8,3,3,14,0,5,113,219,142, + 0,0,0,14,0,0}; +/* + Fontname: ProFont22 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=12 h=22 x= 6 y=12 dx=12 dy= 0 ascent=18 len=44 + Font Bounding box w=12 h=21 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =16 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont22[6454] U8G_FONT_SECTION("u8g_font_profont22") = { + 0,12,21,0,252,14,3,117,7,113,32,255,252,18,252,16, + 252,0,0,0,12,0,0,2,14,14,12,4,0,192,192,192, + 192,192,192,192,192,192,192,0,0,192,192,6,6,6,12,2, + 10,204,204,204,204,204,204,10,10,20,12,0,4,51,0,51, + 0,255,192,255,192,51,0,51,0,255,192,255,192,51,0,51, + 0,10,18,36,12,0,254,12,0,12,0,63,0,127,128,237, + 192,204,192,204,0,236,0,127,0,63,128,13,192,12,192,204, + 192,237,192,127,128,63,0,12,0,12,0,10,14,28,12,0, + 0,63,192,127,192,204,192,205,192,207,128,207,0,127,0,63, + 128,60,192,124,192,236,192,204,192,199,128,195,0,10,14,28, + 12,0,0,62,0,127,0,227,0,199,0,206,0,252,0,120, + 0,120,0,252,192,207,192,199,128,231,128,127,192,60,192,2, + 6,6,12,4,10,192,192,192,192,192,192,6,18,18,12,2, + 254,12,28,56,112,224,192,192,192,192,192,192,192,192,224,112, + 56,28,12,6,18,18,12,2,254,192,224,112,56,28,12,12, + 12,12,12,12,12,12,28,56,112,224,192,10,10,20,12,0, + 4,12,0,12,0,204,192,255,192,63,0,63,0,255,192,204, + 192,12,0,12,0,10,10,20,12,0,2,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,5, + 9,9,12,2,252,48,120,120,56,24,56,112,224,64,6,2, + 2,12,2,6,252,252,4,4,4,12,3,1,96,240,240,96, + 11,20,40,12,0,252,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,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,14,28,12,0,0,12,0,12,0,124,0,124,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,255,192, + 255,192,10,14,28,12,0,0,63,0,127,128,225,192,192,192, + 0,192,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,192,255,192,10,14,28,12,0,0,63,0,127,128,225,192, + 192,192,0,192,1,128,15,0,15,128,1,192,0,192,192,192, + 225,192,127,128,63,0,10,14,28,12,0,0,3,0,7,0, + 15,0,31,0,59,0,115,0,227,0,195,0,255,192,255,192, + 3,0,3,0,15,192,15,192,10,14,28,12,0,0,255,192, + 255,192,192,0,192,0,255,0,255,128,1,192,0,192,0,192, + 0,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 63,0,127,0,224,0,192,0,255,0,255,128,193,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,14,28,12, + 0,0,255,192,255,192,0,192,0,192,0,192,1,192,3,128, + 7,0,14,0,12,0,12,0,12,0,12,0,12,0,10,14, + 28,12,0,0,63,0,127,128,225,192,192,192,192,192,97,128, + 63,0,127,128,225,192,192,192,192,192,225,192,127,128,63,0, + 10,14,28,12,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,4,10,10,12,3,1,96,240,240,96,0,0,96,240, + 240,96,5,15,15,12,2,252,48,120,120,48,0,0,48,120, + 120,56,24,56,112,224,64,8,14,14,12,2,0,3,7,14, + 28,56,112,224,224,112,56,28,14,7,3,10,6,12,12,0, + 4,255,192,255,192,0,0,0,0,255,192,255,192,8,14,14, + 12,2,0,192,224,112,56,28,14,7,7,14,28,56,112,224, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,0, + 192,1,192,3,128,7,0,14,0,12,0,0,0,0,0,12, + 0,12,0,10,14,28,12,0,0,63,0,127,128,225,192,192, + 192,199,192,207,192,204,192,204,192,207,192,199,128,192,0,224, + 0,127,192,63,192,10,14,28,12,0,0,12,0,30,0,30, + 0,51,0,51,0,97,128,97,128,192,192,255,192,255,192,192, + 192,192,192,192,192,192,192,10,14,28,12,0,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,10,14,28,12,0,0,63, + 0,127,128,225,192,192,192,192,0,192,0,192,0,192,0,192, + 0,192,0,192,192,225,192,127,128,63,0,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,14,28, + 12,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 0,255,0,192,0,192,0,192,0,192,0,255,192,255,192,10, + 14,28,12,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 0,192,0,195,192,195,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,255,192,255,192,192,192,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,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,255,192,255,192,10,14,28,12,0,0,0,192,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,10,14,28,12,0,0,193, + 192,195,128,199,0,206,0,220,0,248,0,240,0,248,0,220, + 0,206,0,199,0,195,128,193,192,192,192,10,14,28,12,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,255,192,255,192,10,14,28, + 12,0,0,192,192,225,192,243,192,255,192,222,192,204,192,204, + 192,204,192,192,192,192,192,192,192,192,192,192,192,192,192,10, + 14,28,12,0,0,192,192,224,192,240,192,248,192,220,192,206, + 192,199,192,195,192,193,192,192,192,192,192,192,192,192,192,192, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,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,10,16,32,12,0,254,63,0,127,128,225, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,204, + 192,239,192,127,128,63,128,1,192,0,192,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,193,128,255,0,255, + 128,193,192,192,192,192,192,192,192,192,192,192,192,10,14,28, + 12,0,0,63,0,127,128,225,192,192,192,192,0,224,0,127, + 0,63,128,1,192,0,192,192,192,225,192,127,128,63,0,10, + 14,28,12,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,12, + 0,10,14,28,12,0,0,192,192,192,192,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,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,10,14,28,12,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,204,192,204,192,204,192,222,192,255, + 192,243,192,225,192,192,192,10,14,28,12,0,0,192,192,192, + 192,192,192,225,192,115,128,63,0,30,0,30,0,63,0,115, + 128,225,192,192,192,192,192,192,192,10,14,28,12,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,10,14,28,12,0, + 0,255,192,255,192,0,192,1,192,3,128,7,0,14,0,28, + 0,56,0,112,0,224,0,192,0,255,192,255,192,4,18,18, + 12,4,254,240,240,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,240,240,11,20,40,12,1,252,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,4,18,18,12,2,254,240,240,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,240,10,6,12,12,0, + 8,12,0,30,0,63,0,115,128,225,192,64,128,12,2,4, + 12,0,252,255,240,255,240,4,4,4,12,2,12,192,224,112, + 48,10,10,20,12,0,0,63,192,127,192,224,192,192,192,192, + 192,193,192,195,192,231,192,126,192,60,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,255,0,255,128,193,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,63,0,127,128,225,192,192,192,192,0,192,0,192, + 0,224,0,127,192,63,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,63,192,127,192,224,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,10,10,20,12,0,0,63, + 0,127,128,225,192,192,192,255,192,255,192,192,0,224,0,127, + 192,63,192,8,14,14,12,2,0,15,31,56,48,252,252,48, + 48,48,48,48,48,48,48,10,14,28,12,0,252,63,192,127, + 192,224,192,192,192,192,192,192,192,192,192,224,192,127,192,63, + 192,0,192,1,192,63,128,63,0,10,14,28,12,0,0,192, + 0,192,0,192,0,192,0,255,0,255,128,193,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,14,14,12,2, + 0,48,48,0,0,240,240,48,48,48,48,48,48,252,252,6, + 18,18,12,0,252,12,12,0,0,60,60,12,12,12,12,12, + 12,12,12,12,28,248,240,10,14,28,12,0,0,192,0,192, + 0,192,0,192,0,195,128,199,0,206,0,220,0,252,0,254, + 0,231,0,195,128,193,192,192,192,6,14,14,12,2,0,240, + 240,48,48,48,48,48,48,48,48,48,48,252,252,10,10,20, + 12,0,0,255,0,255,128,205,192,204,192,204,192,204,192,204, + 192,204,192,204,192,204,192,10,10,20,12,0,0,207,0,223, + 128,249,192,240,192,224,192,192,192,192,192,192,192,192,192,192, + 192,10,10,20,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,225,192,127,128,63,0,10,14,28,12,0, + 252,255,0,255,128,193,192,192,192,192,192,192,192,192,192,193, + 192,255,128,255,0,192,0,192,0,192,0,192,0,10,14,28, + 12,0,252,63,192,127,192,224,192,192,192,192,192,192,192,192, + 192,224,192,127,192,63,192,0,192,0,192,0,192,0,192,10, + 10,20,12,0,0,207,0,223,128,249,192,240,192,224,0,192, + 0,192,0,192,0,192,0,192,0,10,10,20,12,0,0,63, + 192,127,192,192,0,192,0,127,0,63,128,0,192,0,192,255, + 128,255,0,8,14,14,12,2,0,48,48,48,48,252,252,48, + 48,48,48,48,56,31,15,10,10,20,12,0,0,192,192,192, + 192,192,192,192,192,192,192,193,192,195,192,231,192,126,192,60, + 192,10,10,20,12,0,0,192,192,192,192,192,192,97,128,97, + 128,51,128,51,0,30,0,30,0,12,0,10,10,20,12,0, + 0,204,192,204,192,204,192,204,192,204,192,204,192,204,192,204, + 192,127,128,51,0,10,10,20,12,0,0,192,192,225,192,115, + 128,63,0,30,0,30,0,63,0,115,128,225,192,192,192,10, + 14,28,12,0,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,0,192,1,192,63,128,63, + 0,10,10,20,12,0,0,255,192,255,192,3,128,7,0,14, + 0,28,0,56,0,112,0,255,192,255,192,6,22,22,12,2, + 252,12,28,56,48,48,48,48,48,48,112,224,224,112,48,48, + 48,48,48,48,56,28,12,2,18,18,12,4,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,6, + 22,22,12,2,252,192,224,112,48,48,48,48,48,48,56,28, + 28,56,48,48,48,48,48,48,112,224,192,10,4,8,12,0, + 6,48,192,124,192,207,128,195,0,0,0,0,12,0,0,0, + 0,0,12,0,0,0,0,0,12,0,0,4,7,7,12,0, + 253,48,48,48,48,112,224,64,10,22,44,12,0,252,3,192, + 7,192,14,0,12,0,12,0,12,0,12,0,12,0,63,0, + 63,0,12,0,12,0,12,0,12,0,12,0,12,0,12,0, + 12,0,12,0,28,0,248,0,240,0,8,7,7,12,0,253, + 51,51,51,51,119,238,68,10,2,4,12,0,0,204,192,204, + 192,6,10,10,12,2,4,48,48,252,252,48,48,48,48,48, + 48,6,10,10,12,2,4,48,48,252,252,48,48,252,252,48, + 48,6,4,4,12,2,12,48,120,252,204,12,16,32,12,0, + 0,63,240,127,240,204,224,205,192,207,128,207,0,126,0,60, + 0,60,192,127,224,243,48,243,48,179,48,51,48,31,224,12, + 192,10,18,36,12,0,0,51,0,63,0,30,0,12,0,63, + 0,127,128,225,192,192,192,192,0,224,0,127,0,63,128,1, + 192,0,192,192,192,225,192,127,128,63,0,4,10,10,12,0, + 255,48,112,96,224,192,192,224,96,112,48,10,14,28,12,0, + 0,63,192,127,192,236,0,204,0,204,0,204,0,207,0,207, + 0,204,0,204,0,204,0,236,0,127,192,63,192,0,0,0, + 12,0,0,0,0,0,12,0,0,0,0,0,12,0,0,0, + 0,0,12,0,0,4,7,7,12,4,8,32,112,224,192,192, + 192,192,4,7,7,12,4,7,48,48,48,48,112,224,64,8, + 7,7,12,2,8,34,119,238,204,204,204,204,8,7,7,12, + 2,7,51,51,51,51,119,238,68,10,10,20,12,0,2,30, + 0,127,128,127,128,255,192,255,192,255,192,255,192,127,128,127, + 128,30,0,6,2,2,12,2,6,252,252,12,2,4,12,0, + 6,255,240,255,240,10,4,8,12,0,12,48,192,124,192,207, + 128,195,0,12,6,12,12,0,8,255,48,255,240,51,240,51, + 240,51,48,51,48,10,16,32,12,0,0,51,0,63,0,30, + 0,12,0,0,0,0,0,63,192,127,192,192,0,192,0,127, + 0,63,128,0,192,0,192,255,128,255,0,4,10,10,12,0, + 255,192,224,96,112,48,48,112,96,224,192,10,10,20,12,0, + 0,51,0,127,128,204,192,204,192,207,192,207,192,204,0,204, + 0,127,192,51,192,0,0,0,12,0,0,0,0,0,12,0, + 0,10,18,36,12,0,0,51,0,51,0,0,0,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,0,0,0,12,0, + 0,2,14,14,12,6,0,192,192,0,0,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,0,254,12,0,12,0,63, + 0,127,128,237,192,204,192,204,0,204,0,204,0,236,0,127, + 192,63,192,12,0,12,0,10,16,32,12,0,0,60,0,126, + 0,231,0,195,0,192,0,192,0,252,0,252,0,192,0,192, + 0,192,0,192,0,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,64,128,225,192,127,128,63,0,51,0,51,0,63, + 0,127,128,225,192,64,128,10,14,28,12,0,0,192,192,225, + 192,115,128,63,0,255,192,255,192,12,0,12,0,255,192,255, + 192,12,0,12,0,12,0,12,0,2,18,18,12,4,254,192, + 192,192,192,192,192,192,192,0,0,192,192,192,192,192,192,192, + 192,10,20,40,12,0,254,31,0,127,128,97,192,224,192,112, + 192,56,192,220,0,206,0,199,0,227,128,113,192,56,192,28, + 192,14,192,199,0,195,128,193,192,225,128,127,128,62,0,6, + 2,2,12,2,12,204,204,10,14,28,12,0,0,120,0,254, + 0,135,0,1,128,61,128,124,192,192,192,192,192,124,192,61, + 128,1,128,135,0,254,0,120,0,8,12,12,12,2,6,63, + 127,227,195,195,227,127,63,0,0,255,255,10,10,20,12,0, + 255,48,192,113,192,97,128,227,128,195,0,195,0,227,128,97, + 128,113,192,48,192,10,6,12,12,0,2,255,192,255,192,0, + 192,0,192,0,192,0,192,10,2,4,12,0,6,255,192,255, + 192,10,12,24,12,0,2,120,0,254,0,135,0,1,128,241, + 128,248,192,204,192,204,192,248,192,249,192,223,128,207,0,6, + 2,2,12,2,12,252,252,8,8,8,12,2,8,60,126,231, + 195,195,231,126,60,10,12,24,12,0,0,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,255, + 192,255,192,5,7,7,12,3,11,112,136,8,16,32,64,248, + 5,7,7,12,3,11,112,136,8,48,8,136,112,4,4,4, + 12,4,12,48,112,224,192,10,14,28,12,0,252,195,0,195, + 0,195,0,195,0,195,0,195,0,195,0,199,128,255,192,252, + 192,192,0,192,0,192,0,192,0,10,16,32,12,0,0,31, + 192,127,192,124,192,236,192,204,192,204,192,236,192,124,192,127, + 192,31,192,12,192,12,192,12,192,12,192,12,192,12,192,4, + 4,4,12,4,4,96,240,240,96,4,6,6,12,2,252,240, + 240,48,112,224,64,5,7,7,12,3,11,32,224,32,32,32, + 32,248,8,12,12,12,2,6,60,126,231,195,195,231,126,60, + 0,0,255,255,10,10,20,12,0,255,195,0,227,128,97,128, + 113,192,48,192,48,192,113,192,97,128,227,128,195,0,12,18, + 36,12,0,0,16,0,112,0,16,0,16,0,16,16,16,32, + 124,64,0,128,1,0,2,0,4,0,8,64,16,192,33,64, + 66,64,131,224,0,64,0,224,12,18,36,12,0,0,16,0, + 112,0,16,0,16,0,16,16,16,32,124,64,0,128,1,0, + 2,0,4,0,9,192,18,32,32,32,64,64,128,128,1,0, + 3,224,12,18,36,12,0,0,56,0,68,0,4,0,24,0, + 4,16,68,32,56,64,0,128,1,0,2,0,4,0,8,64, + 16,192,33,64,66,64,131,224,0,64,0,224,10,14,28,12, + 0,0,12,0,12,0,0,0,0,0,12,0,28,0,56,0, + 112,0,224,0,192,0,192,192,225,192,127,128,63,0,10,18, + 36,12,0,0,48,0,56,0,28,0,12,0,12,0,30,0, + 30,0,51,0,51,0,97,128,97,128,192,192,255,192,255,192, + 192,192,192,192,192,192,192,192,10,18,36,12,0,0,3,0, + 7,0,14,0,12,0,12,0,30,0,30,0,51,0,51,0, + 97,128,97,128,192,192,255,192,255,192,192,192,192,192,192,192, + 192,192,10,18,36,12,0,0,12,0,30,0,63,0,51,0, + 12,0,30,0,30,0,51,0,51,0,97,128,97,128,192,192, + 255,192,255,192,192,192,192,192,192,192,192,192,10,18,36,12, + 0,0,48,192,124,192,207,128,195,0,12,0,30,0,30,0, + 51,0,51,0,97,128,97,128,192,192,255,192,255,192,192,192, + 192,192,192,192,192,192,10,18,36,12,0,0,51,0,51,0, + 0,0,0,0,12,0,30,0,30,0,51,0,51,0,97,128, + 97,128,192,192,255,192,255,192,192,192,192,192,192,192,192,192, + 10,18,36,12,0,0,12,0,30,0,51,0,51,0,30,0, + 30,0,30,0,51,0,51,0,97,128,97,128,192,192,255,192, + 255,192,192,192,192,192,192,192,192,192,10,14,28,12,0,0, + 63,192,127,192,236,0,204,0,204,0,204,0,255,0,255,0, + 204,0,204,0,204,0,204,0,207,192,207,192,10,18,36,12, + 0,252,63,0,127,128,225,192,192,192,192,0,192,0,192,0, + 192,0,192,0,192,0,192,192,225,192,127,128,63,0,12,0, + 28,0,56,0,16,0,10,18,36,12,0,0,48,0,56,0, + 28,0,12,0,255,192,255,192,192,0,192,0,192,0,192,0, + 255,0,255,0,192,0,192,0,192,0,192,0,255,192,255,192, + 10,18,36,12,0,0,3,0,7,0,14,0,12,0,255,192, + 255,192,192,0,192,0,192,0,192,0,255,0,255,0,192,0, + 192,0,192,0,192,0,255,192,255,192,10,18,36,12,0,0, + 12,0,30,0,63,0,51,0,255,192,255,192,192,0,192,0, + 192,0,192,0,255,0,255,0,192,0,192,0,192,0,192,0, + 255,192,255,192,10,18,36,12,0,0,51,0,51,0,0,0, + 0,0,255,192,255,192,192,0,192,0,192,0,192,0,255,0, + 255,0,192,0,192,0,192,0,192,0,255,192,255,192,10,18, + 36,12,0,0,48,0,56,0,28,0,12,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,255,192,255,192,10,18,36,12,0,0,3,0, + 7,0,14,0,12,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,255,192, + 255,192,10,18,36,12,0,0,12,0,30,0,63,0,51,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,255,192,255,192,10,18,36,12, + 0,0,51,0,51,0,0,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,255,192,255,192,10,14,28,12,0,0,63,0,63,128, + 49,192,48,192,48,192,48,192,252,192,252,192,48,192,48,192, + 48,192,49,192,63,128,63,0,10,18,36,12,0,0,48,192, + 124,192,207,128,199,0,192,192,224,192,240,192,248,192,220,192, + 206,192,199,192,195,192,193,192,192,192,192,192,192,192,192,192, + 192,192,10,18,36,12,0,0,48,0,56,0,28,0,12,0, + 63,0,127,128,225,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,18,36,12, + 0,0,3,0,7,0,14,0,12,0,63,0,127,128,225,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,192, + 225,192,127,128,63,0,10,18,36,12,0,0,12,0,30,0, + 63,0,51,0,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,225,192,127,128,63,0, + 10,18,36,12,0,0,48,192,124,192,207,128,199,0,63,0, + 127,128,225,192,192,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,18,36,12,0,0, + 51,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,225,192, + 127,128,63,0,10,10,20,12,0,2,64,128,225,192,115,128, + 63,0,30,0,30,0,63,0,115,128,225,192,64,128,10,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,18,36,12,0,0,48,0,56,0,28,0,12,0,192,192, + 192,192,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,18,36,12,0,0, + 3,0,7,0,14,0,12,0,192,192,192,192,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,18,36,12,0,0,12,0,30,0,63,0, + 51,0,0,0,192,192,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,18, + 36,12,0,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, + 192,192,225,192,127,128,63,0,10,18,36,12,0,0,3,0, + 7,0,14,0,12,0,192,192,192,192,192,192,192,192,192,192, + 225,192,115,128,63,0,30,0,12,0,12,0,12,0,12,0, + 12,0,10,14,28,12,0,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,192,0,10,18,36,12,0,254,15,0,31,128,57,192, + 112,192,224,192,193,192,195,128,195,0,195,0,195,128,193,192, + 192,192,192,192,193,192,207,128,207,0,192,0,192,0,10,16, + 32,12,0,0,12,0,14,0,7,0,3,0,0,0,0,0, + 63,192,127,192,224,192,192,192,192,192,193,192,195,192,231,192, + 126,192,60,192,10,16,32,12,0,0,3,0,7,0,14,0, + 12,0,0,0,0,0,63,192,127,192,224,192,192,192,192,192, + 193,192,195,192,231,192,126,192,60,192,10,16,32,12,0,0, + 12,0,30,0,63,0,51,0,0,0,0,0,63,192,127,192, + 224,192,192,192,192,192,193,192,195,192,231,192,126,192,60,192, + 10,16,32,12,0,0,48,192,124,192,207,128,199,0,0,0, + 0,0,63,192,127,192,224,192,192,192,192,192,193,192,195,192, + 231,192,126,192,60,192,10,14,28,12,0,0,51,0,51,0, + 0,0,0,0,63,192,127,192,224,192,192,192,192,192,193,192, + 195,192,231,192,126,192,60,192,10,16,32,12,0,0,12,0, + 30,0,51,0,51,0,30,0,12,0,63,192,127,192,224,192, + 192,192,192,192,193,192,195,192,231,192,126,192,60,192,10,10, + 20,12,0,0,63,0,127,128,237,192,204,192,207,192,207,192, + 204,0,236,0,127,192,63,192,10,14,28,12,0,252,63,0, + 127,128,225,192,192,192,192,0,192,0,192,0,224,0,127,192, + 63,192,12,0,28,0,56,0,16,0,10,16,32,12,0,0, + 48,0,56,0,28,0,12,0,0,0,0,0,63,0,127,128, + 225,192,192,192,255,192,255,192,192,0,224,0,127,192,63,192, + 10,16,32,12,0,0,3,0,7,0,14,0,12,0,0,0, + 0,0,63,0,127,128,225,192,192,192,255,192,255,192,192,0, + 224,0,127,192,63,192,10,16,32,12,0,0,12,0,30,0, + 63,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 255,192,255,192,192,0,224,0,127,192,63,192,10,14,28,12, + 0,0,51,0,51,0,0,0,0,0,63,0,127,128,225,192, + 192,192,255,192,255,192,192,0,224,0,127,192,63,192,6,16, + 16,12,2,0,192,224,112,48,0,0,240,240,48,48,48,48, + 48,48,252,252,6,16,16,12,2,0,12,28,56,48,0,0, + 240,240,48,48,48,48,48,48,252,252,6,16,16,12,2,0, + 48,120,252,204,0,0,240,240,48,48,48,48,48,48,252,252, + 6,14,14,12,2,0,204,204,0,0,240,240,48,48,48,48, + 48,48,252,252,10,17,34,12,0,0,36,0,126,0,60,0, + 60,0,126,0,39,0,3,128,63,192,127,192,225,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,16,32,12, + 0,0,48,192,124,192,207,128,199,0,0,0,0,0,207,0, + 223,128,249,192,240,192,224,192,192,192,192,192,192,192,192,192, + 192,192,10,16,32,12,0,0,48,0,56,0,28,0,12,0, + 0,0,0,0,63,0,127,128,225,192,192,192,192,192,192,192, + 192,192,225,192,127,128,63,0,10,16,32,12,0,0,3,0, + 7,0,14,0,12,0,0,0,0,0,63,0,127,128,225,192, + 192,192,192,192,192,192,192,192,225,192,127,128,63,0,10,16, + 32,12,0,0,12,0,30,0,63,0,51,0,0,0,0,0, + 63,0,127,128,225,192,192,192,192,192,192,192,192,192,225,192, + 127,128,63,0,10,16,32,12,0,0,48,192,124,192,207,128, + 199,0,0,0,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 51,0,51,0,0,0,0,0,63,0,127,128,225,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,10,20,12, + 0,2,12,0,12,0,0,0,0,0,255,192,255,192,0,0, + 0,0,12,0,12,0,10,10,20,12,0,0,63,0,127,128, + 227,192,199,192,206,192,220,192,248,192,241,192,127,128,63,0, + 10,16,32,12,0,0,48,0,56,0,28,0,12,0,0,0, + 0,0,192,192,192,192,192,192,192,192,192,192,193,192,195,192, + 231,192,126,192,60,192,10,16,32,12,0,0,3,0,7,0, + 14,0,12,0,0,0,0,0,192,192,192,192,192,192,192,192, + 192,192,193,192,195,192,231,192,126,192,60,192,10,16,32,12, + 0,0,12,0,30,0,63,0,51,0,0,0,0,0,192,192, + 192,192,192,192,192,192,192,192,193,192,195,192,231,192,126,192, + 60,192,10,14,28,12,0,0,51,0,51,0,0,0,0,0, + 192,192,192,192,192,192,192,192,192,192,193,192,195,192,231,192, + 126,192,60,192,10,20,40,12,0,252,3,0,7,0,14,0, + 12,0,0,0,0,0,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,10,18,36,12,0,252,192,0,192,0,192,0,192,0, + 255,0,255,128,193,192,192,192,192,192,192,192,192,192,193,192, + 255,128,255,0,192,0,192,0,192,0,192,0,10,18,36,12, + 0,252,51,0,51,0,0,0,0,0,192,192,192,192,192,192, + 192,192,192,192,192,192,192,192,224,192,127,192,63,192,0,192, + 1,192,63,128,63,0}; +/* + Fontname: ProFont22 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 14, '1' Height: 14 + Calculated Max Values w=12 h=22 x= 4 y=12 dx=12 dy= 0 ascent=18 len=40 + Font Bounding box w=12 h=21 x= 0 y=-4 + Calculated Min Values x= 0 y=-4 dx= 0 dy= 0 + Pure Font ascent =14 descent=-4 + X Font ascent =16 descent=-4 + Max Font ascent =18 descent=-4 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont22r[2719] U8G_FONT_SECTION("u8g_font_profont22r") = { + 0,12,21,0,252,14,3,117,7,113,32,127,252,18,252,16, + 252,0,0,0,12,0,0,2,14,14,12,4,0,192,192,192, + 192,192,192,192,192,192,192,0,0,192,192,6,6,6,12,2, + 10,204,204,204,204,204,204,10,10,20,12,0,4,51,0,51, + 0,255,192,255,192,51,0,51,0,255,192,255,192,51,0,51, + 0,10,18,36,12,0,254,12,0,12,0,63,0,127,128,237, + 192,204,192,204,0,236,0,127,0,63,128,13,192,12,192,204, + 192,237,192,127,128,63,0,12,0,12,0,10,14,28,12,0, + 0,63,192,127,192,204,192,205,192,207,128,207,0,127,0,63, + 128,60,192,124,192,236,192,204,192,199,128,195,0,10,14,28, + 12,0,0,62,0,127,0,227,0,199,0,206,0,252,0,120, + 0,120,0,252,192,207,192,199,128,231,128,127,192,60,192,2, + 6,6,12,4,10,192,192,192,192,192,192,6,18,18,12,2, + 254,12,28,56,112,224,192,192,192,192,192,192,192,192,224,112, + 56,28,12,6,18,18,12,2,254,192,224,112,56,28,12,12, + 12,12,12,12,12,12,28,56,112,224,192,10,10,20,12,0, + 4,12,0,12,0,204,192,255,192,63,0,63,0,255,192,204, + 192,12,0,12,0,10,10,20,12,0,2,12,0,12,0,12, + 0,12,0,255,192,255,192,12,0,12,0,12,0,12,0,5, + 9,9,12,2,252,48,120,120,56,24,56,112,224,64,6,2, + 2,12,2,6,252,252,4,4,4,12,3,1,96,240,240,96, + 11,20,40,12,0,252,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,14, + 28,12,0,0,63,0,127,128,225,192,193,192,195,192,199,192, + 206,192,220,192,248,192,240,192,224,192,225,192,127,128,63,0, + 10,14,28,12,0,0,12,0,12,0,124,0,124,0,12,0, + 12,0,12,0,12,0,12,0,12,0,12,0,12,0,255,192, + 255,192,10,14,28,12,0,0,63,0,127,128,225,192,192,192, + 0,192,1,192,3,128,7,0,14,0,28,0,56,0,112,0, + 255,192,255,192,10,14,28,12,0,0,63,0,127,128,225,192, + 192,192,0,192,1,128,15,0,15,128,1,192,0,192,192,192, + 225,192,127,128,63,0,10,14,28,12,0,0,3,0,7,0, + 15,0,31,0,59,0,115,0,227,0,195,0,255,192,255,192, + 3,0,3,0,15,192,15,192,10,14,28,12,0,0,255,192, + 255,192,192,0,192,0,255,0,255,128,1,192,0,192,0,192, + 0,192,192,192,225,192,127,128,63,0,10,14,28,12,0,0, + 63,0,127,0,224,0,192,0,255,0,255,128,193,192,192,192, + 192,192,192,192,192,192,225,192,127,128,63,0,10,14,28,12, + 0,0,255,192,255,192,0,192,0,192,0,192,1,192,3,128, + 7,0,14,0,12,0,12,0,12,0,12,0,12,0,10,14, + 28,12,0,0,63,0,127,128,225,192,192,192,192,192,97,128, + 63,0,127,128,225,192,192,192,192,192,225,192,127,128,63,0, + 10,14,28,12,0,0,63,0,127,128,225,192,192,192,192,192, + 192,192,192,192,224,192,127,192,63,192,0,192,1,192,63,128, + 63,0,4,10,10,12,3,1,96,240,240,96,0,0,96,240, + 240,96,5,15,15,12,2,252,48,120,120,48,0,0,48,120, + 120,56,24,56,112,224,64,8,14,14,12,2,0,3,7,14, + 28,56,112,224,224,112,56,28,14,7,3,10,6,12,12,0, + 4,255,192,255,192,0,0,0,0,255,192,255,192,8,14,14, + 12,2,0,192,224,112,56,28,14,7,7,14,28,56,112,224, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,0, + 192,1,192,3,128,7,0,14,0,12,0,0,0,0,0,12, + 0,12,0,10,14,28,12,0,0,63,0,127,128,225,192,192, + 192,199,192,207,192,204,192,204,192,207,192,199,128,192,0,224, + 0,127,192,63,192,10,14,28,12,0,0,12,0,30,0,30, + 0,51,0,51,0,97,128,97,128,192,192,255,192,255,192,192, + 192,192,192,192,192,192,192,10,14,28,12,0,0,255,0,255, + 128,193,192,192,192,192,192,193,128,255,0,255,128,193,192,192, + 192,192,192,193,192,255,128,255,0,10,14,28,12,0,0,63, + 0,127,128,225,192,192,192,192,0,192,0,192,0,192,0,192, + 0,192,0,192,192,225,192,127,128,63,0,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,14,28, + 12,0,0,255,192,255,192,192,0,192,0,192,0,192,0,255, + 0,255,0,192,0,192,0,192,0,192,0,255,192,255,192,10, + 14,28,12,0,0,255,192,255,192,192,0,192,0,192,0,192, + 0,255,0,255,0,192,0,192,0,192,0,192,0,192,0,192, + 0,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 0,192,0,195,192,195,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,255,192,255,192,192,192,192,192,192,192,192, + 192,192,192,192,192,10,14,28,12,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,255,192,255,192,10,14,28,12,0,0,0,192,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,10,14,28,12,0,0,193, + 192,195,128,199,0,206,0,220,0,248,0,240,0,248,0,220, + 0,206,0,199,0,195,128,193,192,192,192,10,14,28,12,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,255,192,255,192,10,14,28, + 12,0,0,192,192,225,192,243,192,255,192,222,192,204,192,204, + 192,204,192,192,192,192,192,192,192,192,192,192,192,192,192,10, + 14,28,12,0,0,192,192,224,192,240,192,248,192,220,192,206, + 192,199,192,195,192,193,192,192,192,192,192,192,192,192,192,192, + 192,10,14,28,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,225,192,127, + 128,63,0,10,14,28,12,0,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,10,16,32,12,0,254,63,0,127,128,225, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,204, + 192,239,192,127,128,63,128,1,192,0,192,10,14,28,12,0, + 0,255,0,255,128,193,192,192,192,192,192,193,128,255,0,255, + 128,193,192,192,192,192,192,192,192,192,192,192,192,10,14,28, + 12,0,0,63,0,127,128,225,192,192,192,192,0,224,0,127, + 0,63,128,1,192,0,192,192,192,225,192,127,128,63,0,10, + 14,28,12,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,12, + 0,10,14,28,12,0,0,192,192,192,192,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,14,28,12,0,0,192,192,192,192,192,192,192, + 192,192,192,192,192,97,128,97,128,51,0,51,0,30,0,30, + 0,12,0,12,0,10,14,28,12,0,0,192,192,192,192,192, + 192,192,192,192,192,192,192,204,192,204,192,204,192,222,192,255, + 192,243,192,225,192,192,192,10,14,28,12,0,0,192,192,192, + 192,192,192,225,192,115,128,63,0,30,0,30,0,63,0,115, + 128,225,192,192,192,192,192,192,192,10,14,28,12,0,0,192, + 192,192,192,192,192,192,192,192,192,225,192,115,128,63,0,30, + 0,12,0,12,0,12,0,12,0,12,0,10,14,28,12,0, + 0,255,192,255,192,0,192,1,192,3,128,7,0,14,0,28, + 0,56,0,112,0,224,0,192,0,255,192,255,192,4,18,18, + 12,4,254,240,240,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,240,240,11,20,40,12,1,252,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,4,18,18,12,2,254,240,240,48,48,48,48,48, + 48,48,48,48,48,48,48,48,48,240,240,10,6,12,12,0, + 8,12,0,30,0,63,0,115,128,225,192,64,128,12,2,4, + 12,0,252,255,240,255,240,4,4,4,12,2,12,192,224,112, + 48,10,10,20,12,0,0,63,192,127,192,224,192,192,192,192, + 192,193,192,195,192,231,192,126,192,60,192,10,14,28,12,0, + 0,192,0,192,0,192,0,192,0,255,0,255,128,193,192,192, + 192,192,192,192,192,192,192,193,192,255,128,255,0,10,10,20, + 12,0,0,63,0,127,128,225,192,192,192,192,0,192,0,192, + 0,224,0,127,192,63,192,10,14,28,12,0,0,0,192,0, + 192,0,192,0,192,63,192,127,192,224,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,10,10,20,12,0,0,63, + 0,127,128,225,192,192,192,255,192,255,192,192,0,224,0,127, + 192,63,192,8,14,14,12,2,0,15,31,56,48,252,252,48, + 48,48,48,48,48,48,48,10,14,28,12,0,252,63,192,127, + 192,224,192,192,192,192,192,192,192,192,192,224,192,127,192,63, + 192,0,192,1,192,63,128,63,0,10,14,28,12,0,0,192, + 0,192,0,192,0,192,0,255,0,255,128,193,192,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,6,14,14,12,2, + 0,48,48,0,0,240,240,48,48,48,48,48,48,252,252,6, + 18,18,12,0,252,12,12,0,0,60,60,12,12,12,12,12, + 12,12,12,12,28,248,240,10,14,28,12,0,0,192,0,192, + 0,192,0,192,0,195,128,199,0,206,0,220,0,252,0,254, + 0,231,0,195,128,193,192,192,192,6,14,14,12,2,0,240, + 240,48,48,48,48,48,48,48,48,48,48,252,252,10,10,20, + 12,0,0,255,0,255,128,205,192,204,192,204,192,204,192,204, + 192,204,192,204,192,204,192,10,10,20,12,0,0,207,0,223, + 128,249,192,240,192,224,192,192,192,192,192,192,192,192,192,192, + 192,10,10,20,12,0,0,63,0,127,128,225,192,192,192,192, + 192,192,192,192,192,225,192,127,128,63,0,10,14,28,12,0, + 252,255,0,255,128,193,192,192,192,192,192,192,192,192,192,193, + 192,255,128,255,0,192,0,192,0,192,0,192,0,10,14,28, + 12,0,252,63,192,127,192,224,192,192,192,192,192,192,192,192, + 192,224,192,127,192,63,192,0,192,0,192,0,192,0,192,10, + 10,20,12,0,0,207,0,223,128,249,192,240,192,224,0,192, + 0,192,0,192,0,192,0,192,0,10,10,20,12,0,0,63, + 192,127,192,192,0,192,0,127,0,63,128,0,192,0,192,255, + 128,255,0,8,14,14,12,2,0,48,48,48,48,252,252,48, + 48,48,48,48,56,31,15,10,10,20,12,0,0,192,192,192, + 192,192,192,192,192,192,192,193,192,195,192,231,192,126,192,60, + 192,10,10,20,12,0,0,192,192,192,192,192,192,97,128,97, + 128,51,128,51,0,30,0,30,0,12,0,10,10,20,12,0, + 0,204,192,204,192,204,192,204,192,204,192,204,192,204,192,204, + 192,127,128,51,0,10,10,20,12,0,0,192,192,225,192,115, + 128,63,0,30,0,30,0,63,0,115,128,225,192,192,192,10, + 14,28,12,0,252,192,192,192,192,192,192,192,192,192,192,192, + 192,192,192,224,192,127,192,63,192,0,192,1,192,63,128,63, + 0,10,10,20,12,0,0,255,192,255,192,3,128,7,0,14, + 0,28,0,56,0,112,0,255,192,255,192,6,22,22,12,2, + 252,12,28,56,48,48,48,48,48,48,112,224,224,112,48,48, + 48,48,48,48,56,28,12,2,18,18,12,4,254,192,192,192, + 192,192,192,192,192,192,192,192,192,192,192,192,192,192,192,6, + 22,22,12,2,252,192,224,112,48,48,48,48,48,48,56,28, + 28,56,48,48,48,48,48,48,112,224,192,10,4,8,12,0, + 6,48,192,124,192,207,128,195,0,0,0,0,12,0,0}; +/* + Fontname: ProFont29 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 19, '1' Height: 19 + Calculated Max Values w=16 h=29 x= 8 y=16 dx=16 dy= 0 ascent=24 len=58 + Font Bounding box w=16 h=28 x= 0 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =22 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont29[8666] U8G_FONT_SECTION("u8g_font_profont29") = { + 0,16,28,0,251,19,4,198,9,234,32,255,251,24,251,22, + 251,0,0,0,16,0,0,3,19,19,16,5,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,224,224,224, + 9,9,18,16,2,13,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,15,15,30,16,0,5,28,112, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,28,112, + 255,254,255,254,255,254,28,112,28,112,28,112,13,25,50,16, + 0,253,7,0,7,0,7,0,15,128,63,224,127,240,119,112, + 231,56,231,56,231,0,119,0,127,128,63,224,15,240,7,112, + 7,56,231,56,231,56,119,112,127,240,63,224,15,128,7,0, + 7,0,7,0,14,19,38,16,0,0,31,252,63,252,127,252, + 102,28,231,60,231,120,231,240,103,224,127,224,63,192,31,240, + 31,48,63,56,127,56,247,56,227,48,227,240,225,224,224,192, + 14,19,38,16,0,0,15,0,63,192,127,224,112,224,225,224, + 227,192,231,128,127,0,126,0,60,0,126,8,127,28,231,188, + 227,248,225,240,113,240,127,248,63,188,14,24,3,9,9,16, + 5,13,224,224,224,224,224,224,224,224,224,9,25,50,16,3, + 253,3,0,7,128,15,0,30,0,60,0,120,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,240,0,120,0,60,0,30,0,15,0,7, + 128,3,0,9,25,50,16,2,253,96,0,240,0,120,0,60, + 0,30,0,15,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,128,15, + 0,30,0,60,0,120,0,240,0,96,0,13,13,26,16,0, + 5,7,0,7,0,103,48,247,248,127,240,31,192,31,192,127, + 240,255,248,103,48,7,0,7,0,7,0,13,13,26,16,0, + 3,7,0,7,0,7,0,7,0,7,0,255,248,255,248,255, + 248,7,0,7,0,7,0,7,0,7,0,6,11,11,16,3, + 251,56,124,124,124,60,28,28,60,120,240,96,8,3,3,16, + 3,8,255,255,255,5,5,5,16,4,1,112,248,248,248,112, + 15,26,52,16,0,251,0,14,0,14,0,28,0,28,0,56, + 0,56,0,112,0,112,0,224,0,224,1,192,1,192,3,128, + 3,128,7,0,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,224,0,224,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,60,224,124,224,252,225,252, + 227,220,231,156,239,28,254,28,252,28,248,28,240,28,112,56, + 127,248,63,240,15,192,13,19,38,16,0,0,7,0,7,0, + 15,0,127,0,127,0,127,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,19,38,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,0,28,0,56,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,127,252,255,252,255,252,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,120,3,240,3,224,3,240,0,120,0,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 0,224,1,224,3,224,7,224,15,224,30,224,60,224,120,224, + 240,224,224,224,255,252,255,252,255,252,0,224,0,224,0,224, + 7,252,7,252,7,252,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,255,192,255,240,255,248,0,56,0,28, + 0,28,0,28,0,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,19,38,16,0,0,15,224,63,224,127,224,112,0, + 224,0,255,192,255,240,255,248,224,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,19, + 38,16,0,0,255,252,255,252,255,252,0,28,0,28,0,28, + 0,60,0,120,0,240,1,224,3,192,7,128,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,120,120, + 63,240,31,224,63,240,120,120,224,28,224,28,224,28,112,56, + 127,248,63,240,15,192,14,19,38,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,28,127,252,63,252,15,252,0,28,0,56,31,248,31,240, + 31,192,5,13,13,16,4,1,112,248,248,248,112,0,0,0, + 112,248,248,248,112,6,19,19,16,3,251,56,124,124,124,56, + 0,0,0,56,124,124,124,60,28,28,60,120,240,96,12,19, + 38,16,2,0,0,96,0,240,1,224,3,192,7,128,15,0, + 30,0,60,0,120,0,240,0,120,0,60,0,30,0,15,0, + 7,128,3,192,1,224,0,240,0,96,14,9,18,16,0,5, + 255,252,255,252,255,252,0,0,0,0,0,0,255,252,255,252, + 255,252,12,19,38,16,2,0,96,0,240,0,120,0,60,0, + 30,0,15,0,7,128,3,192,1,224,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,96,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,60,0,120,0,240,1,224,3,192,7,128,7,0, + 0,0,0,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,225,252,227,252,231,252, + 231,28,231,28,231,28,231,252,227,248,225,240,224,0,112,0, + 127,252,63,252,15,252,14,19,38,16,0,0,7,128,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,255,192,255,240,255,248,224,56, + 224,28,224,28,224,28,224,120,255,240,255,224,255,240,224,120, + 224,28,224,28,224,28,224,56,255,248,255,240,255,192,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,224,0,224,0,224,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,255,252,255,252, + 255,252,14,19,38,16,0,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,252,224,252,224,252,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,13,19,38,16,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,255,248,255,248, + 255,248,14,19,38,16,0,0,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,224,28,224,28,112,56,127,248,63,240,15,192,13,19, + 38,16,0,0,224,56,224,120,224,240,225,224,227,192,231,128, + 239,0,254,0,252,0,248,0,252,0,254,0,239,0,231,128, + 227,192,225,224,224,240,224,120,224,56,14,19,38,16,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,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,15,19,38,16,0,0,224,14,240,30, + 248,62,252,126,254,254,239,238,231,206,227,142,227,142,227,142, + 227,142,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,14,19,38,16,0,0,224,28,240,28,248,28,252,28, + 254,28,239,28,231,156,227,220,225,252,224,252,224,124,224,60, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,14,22,44,16,0,253,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,230,28,239,28,119,248,127,248,63,240, + 15,240,0,120,0,60,0,24,14,19,38,16,0,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,120,255,240, + 255,224,255,240,224,120,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,224,0,112,0,127,192,63,240,15,248, + 0,56,0,28,224,28,224,28,112,56,127,248,63,240,15,192, + 13,19,38,16,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,7,0,7,0,14,19,38,16, + 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,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,19,38,16,0,0,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 56,112,56,112,28,224,28,224,15,192,15,192,7,128,7,128, + 3,0,3,0,15,19,38,16,0,0,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,227,142,227,142,227,142, + 227,142,231,206,239,254,254,254,252,126,248,62,240,30,224,14, + 14,19,38,16,0,0,224,28,224,28,224,28,224,28,240,60, + 120,120,60,240,31,224,15,192,7,128,15,192,31,224,60,240, + 120,120,240,60,224,28,224,28,224,28,224,28,13,19,38,16, + 0,0,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,120,240,61,224,31,192,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,14,19,38,16,0,0,255,252, + 255,252,255,252,0,28,0,60,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,224,0,255,252, + 255,252,255,252,6,25,25,16,5,253,252,252,252,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 252,252,252,15,26,52,16,1,251,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,224,0,224,0,112,0, + 112,0,56,0,56,0,28,0,28,0,14,0,14,6,25,25, + 16,2,253,252,252,252,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,252,252,14,8,16,16, + 0,11,3,0,7,128,15,192,31,224,60,240,120,120,240,60, + 96,24,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,16,2,15,96,240,120,60,30,12,14,14,28,16,0,0, + 15,252,63,252,127,252,112,28,224,28,224,28,224,28,224,28, + 224,60,224,124,113,252,127,220,63,156,14,28,14,19,38,16, + 0,0,224,0,224,0,224,0,224,0,224,0,255,192,255,240, + 255,248,224,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,56,255,248,255,240,255,192,14,14,28,16,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,0,224,0,224,0, + 224,0,112,0,127,252,63,252,15,252,14,19,38,16,0,0, + 0,28,0,28,0,28,0,28,0,28,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,14,14,28,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,11,19,38,16,2,0,1,224, + 7,224,15,224,14,0,28,0,255,128,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,14,19,38,16,0,251,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 14,19,38,16,0,0,224,0,224,0,224,0,224,0,224,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,9,19,38,16, + 2,0,28,0,28,0,28,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,8,24,24,16,0,251,7,7, + 7,0,0,63,63,63,7,7,7,7,7,7,7,7,7,7, + 7,7,14,254,252,240,14,19,38,16,0,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,128,251,192,241,224,224,240,224,120,224,60, + 224,28,9,19,38,16,2,0,252,0,252,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,255,128,255,128,15,14, + 28,16,0,0,255,224,255,248,255,252,227,156,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 14,14,28,16,0,0,225,192,231,240,239,248,254,56,248,28, + 240,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,14,14,28,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,19,38,16,0,251,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 14,19,38,16,0,251,15,252,63,252,127,252,112,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,28,127,252,63,252, + 15,252,0,28,0,28,0,28,0,28,0,28,14,14,28,16, + 0,0,225,192,231,240,239,248,254,56,248,28,240,28,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,14, + 28,16,0,0,15,252,63,252,127,252,240,0,224,0,255,192, + 127,240,31,248,0,60,0,28,0,60,255,248,255,240,255,192, + 11,19,38,16,2,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,0,15,224,7,224,1,224,14,14,28,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,60,224,124,113,252,127,220,63,156,14,28,14,14, + 28,16,0,0,224,28,224,28,224,28,224,28,224,28,112,56, + 112,56,56,112,56,112,28,224,28,224,15,192,15,192,7,128, + 15,14,28,16,0,0,227,142,227,142,227,142,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,247,222,127,252,126,252, + 28,112,14,14,28,16,0,0,224,28,224,28,240,60,120,120, + 60,240,31,224,15,192,15,192,31,224,60,240,120,120,240,60, + 224,28,224,28,14,19,38,16,0,251,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 13,14,28,16,0,0,255,248,255,248,255,248,0,240,1,224, + 3,192,7,128,15,0,30,0,60,0,120,0,255,248,255,248, + 255,248,9,29,58,16,3,251,3,128,15,128,15,128,30,0, + 28,0,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,28,0,30,0,15,128,15,128, + 3,128,3,25,25,16,5,253,224,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,29,58,16,2,251,224,0,248,0,248,0,60,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,30, + 0,15,128,3,128,15,128,30,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,60,0,248,0,248,0,224, + 0,13,5,10,16,0,8,60,56,127,56,255,248,231,240,225, + 224,0,0,0,16,0,0,0,0,0,16,0,0,0,0,0, + 16,0,0,5,8,8,16,0,253,56,56,56,56,56,120,240, + 96,13,29,58,16,0,251,0,120,1,248,3,248,3,128,7, + 0,7,0,7,0,7,0,7,0,7,0,31,192,31,192,31, + 192,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,0,254,0,252,0,240, + 0,11,8,16,16,0,253,56,224,56,224,56,224,56,224,56, + 224,121,224,243,192,97,128,13,3,6,16,0,0,231,56,231, + 56,231,56,9,14,28,16,2,5,28,0,28,0,28,0,255, + 128,255,128,255,128,28,0,28,0,28,0,28,0,28,0,28, + 0,28,0,28,0,9,14,28,16,2,5,28,0,28,0,28, + 0,255,128,255,128,255,128,28,0,28,0,255,128,255,128,255, + 128,28,0,28,0,28,0,10,6,12,16,2,16,12,0,30, + 0,63,0,127,128,243,192,97,128,15,22,44,16,0,0,31, + 254,63,254,127,254,119,30,227,60,227,120,227,240,247,224,127, + 192,127,128,63,0,15,56,63,252,127,252,253,238,248,198,216, + 198,152,198,29,238,15,252,15,252,7,56,14,24,48,16,0, + 0,24,192,61,224,31,192,15,128,7,0,15,192,63,240,127, + 248,112,56,224,28,224,28,224,0,112,0,127,192,63,240,15, + 248,0,56,0,28,224,28,224,28,112,56,127,248,63,240,15, + 192,5,13,13,16,0,255,48,56,112,112,224,224,224,224,224, + 112,112,56,48,14,19,38,16,0,0,15,252,63,252,127,252, + 119,0,231,0,231,0,231,0,231,0,231,224,231,224,231,224, + 231,0,231,0,231,0,231,0,119,0,127,252,63,252,15,252, + 0,0,0,16,0,0,0,0,0,16,0,0,0,0,0,16, + 0,0,0,0,0,16,0,0,5,8,8,16,5,11,48,120, + 240,224,224,224,224,224,5,8,8,16,6,11,56,56,56,56, + 56,120,240,96,11,8,16,16,2,11,48,192,121,224,243,192, + 227,128,227,128,227,128,227,128,227,128,11,8,16,16,3,11, + 56,224,56,224,56,224,56,224,56,224,121,224,243,192,97,128, + 13,13,26,16,0,3,15,128,63,224,127,240,127,240,255,248, + 255,248,255,248,255,248,255,248,127,240,127,240,63,224,15,128, + 8,3,3,16,3,8,255,255,255,16,3,6,16,0,8,255, + 255,255,255,255,255,13,5,10,16,0,16,60,56,127,56,255, + 248,231,240,225,224,15,8,16,16,0,11,255,206,255,254,255, + 254,57,254,57,254,57,206,57,206,57,206,14,22,44,16,0, + 0,24,96,60,240,31,224,15,192,7,128,3,0,0,0,0, + 0,15,252,63,252,127,252,240,0,224,0,255,192,127,240,31, + 248,0,60,0,28,0,60,255,248,255,240,255,192,5,13,13, + 16,0,255,96,224,112,112,56,56,56,56,56,120,112,224,96, + 14,14,28,16,0,0,60,240,127,248,127,248,231,28,231,28, + 231,28,231,252,231,252,231,252,231,0,231,0,127,252,127,252, + 60,252,0,0,0,16,0,0,0,0,0,16,0,0,13,24, + 48,16,0,0,56,224,56,224,56,224,0,0,0,0,224,56, + 224,56,224,56,224,56,224,56,224,56,224,56,240,120,120,240, + 61,224,31,192,15,128,7,0,7,0,7,0,7,0,7,0, + 7,0,7,0,0,0,0,16,0,0,3,19,19,16,8,0, + 224,224,224,0,0,224,224,224,224,224,224,224,224,224,224,224, + 224,224,224,13,20,40,16,0,253,7,0,7,0,7,0,15, + 128,63,224,127,240,119,112,231,56,231,56,231,0,231,0,231, + 0,231,0,119,0,127,248,63,248,15,248,7,0,7,0,7, + 0,13,22,44,16,0,0,14,0,63,128,127,128,113,192,224, + 224,224,224,224,0,224,0,255,0,255,0,255,0,224,0,224, + 0,224,0,224,0,224,0,224,56,224,56,224,112,255,240,255, + 224,255,128,13,13,26,16,0,0,64,16,224,56,112,112,63, + 224,31,192,29,192,24,192,29,192,31,192,63,224,112,112,224, + 56,64,16,15,19,38,16,0,0,96,12,240,30,120,60,60, + 120,30,240,127,252,127,252,127,252,3,128,3,128,3,128,127, + 252,127,252,127,252,3,128,3,128,3,128,3,128,3,128,3, + 25,25,16,5,253,224,224,224,224,224,224,224,224,224,224,224, + 0,0,0,224,224,224,224,224,224,224,224,224,224,224,14,27, + 54,16,0,253,15,192,63,240,63,248,112,56,112,28,120,28, + 60,28,30,28,239,0,231,128,227,192,225,224,240,240,120,120, + 60,60,30,28,15,28,7,156,3,220,225,224,224,240,224,120, + 224,56,112,56,127,240,63,240,15,128,8,3,3,16,3,16, + 231,231,231,14,19,38,16,0,0,28,0,255,128,255,224,193, + 240,0,112,31,56,127,56,127,24,224,28,224,28,224,28,127, + 24,127,56,31,56,0,112,193,240,255,224,255,128,28,0,12, + 16,32,16,2,8,15,240,63,240,127,240,112,112,224,112,224, + 112,224,112,112,112,127,240,63,240,15,240,0,0,0,0,255, + 240,255,240,255,240,13,13,26,16,0,255,48,48,56,56,112, + 112,112,112,224,224,224,224,224,224,224,224,224,224,112,112,112, + 112,56,56,48,48,14,8,16,16,0,3,255,252,255,252,255, + 252,0,28,0,28,0,28,0,28,0,28,13,3,6,16,0, + 8,255,248,255,248,255,248,14,17,34,16,0,2,28,0,255, + 128,255,224,193,240,0,112,248,56,254,56,254,24,231,28,231, + 28,231,28,254,24,254,56,254,56,239,240,231,240,227,192,8, + 3,3,16,3,16,255,255,255,12,12,24,16,2,10,15,0, + 63,192,127,224,112,224,224,112,224,112,224,112,224,112,112,224, + 127,224,63,192,15,0,13,16,32,16,0,0,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,7,0,7,0, + 7,0,7,0,7,0,255,248,255,248,255,248,6,9,9,16, + 4,15,120,132,4,4,8,16,32,64,252,6,9,9,16,4, + 15,120,132,4,8,48,8,4,132,120,7,6,6,16,5,16, + 12,30,60,120,240,96,14,18,36,16,0,251,224,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,225,240, + 255,252,255,188,254,12,224,0,224,0,224,0,224,0,224,0, + 14,22,44,16,0,0,7,252,31,252,63,252,127,28,119,28, + 231,28,231,28,231,28,231,28,119,28,127,28,63,252,31,252, + 7,252,7,28,7,28,7,28,7,28,7,28,7,28,7,28, + 7,28,5,5,5,16,5,6,112,248,248,248,112,6,8,8, + 16,3,251,252,252,252,60,124,248,240,96,7,9,9,16,4, + 15,16,112,16,16,16,16,16,16,254,11,16,32,16,3,8, + 14,0,63,128,127,192,113,192,224,224,224,224,224,224,113,192, + 127,192,63,128,14,0,0,0,0,0,255,224,255,224,255,224, + 13,13,26,16,0,255,96,96,224,224,112,112,112,112,56,56, + 56,56,56,56,56,56,56,56,112,112,112,112,224,224,96,96, + 15,24,48,16,0,0,8,0,56,0,8,0,8,0,8,0, + 8,0,8,2,8,4,127,8,0,16,0,32,0,64,0,128, + 1,0,2,0,4,8,8,24,16,40,32,72,64,136,128,254, + 0,8,0,8,0,62,15,24,48,16,0,0,8,0,56,0, + 8,0,8,0,8,0,8,0,8,2,8,4,127,8,0,16, + 0,32,0,64,0,128,1,0,2,0,4,120,8,132,16,4, + 32,4,64,8,128,16,0,32,0,64,0,252,15,24,48,16, + 0,0,30,0,33,0,1,0,2,0,12,0,2,0,1,2, + 33,4,30,8,0,16,0,32,0,64,0,128,1,0,2,0, + 4,8,8,24,16,40,32,72,64,136,128,254,0,8,0,8, + 0,62,14,19,38,16,0,0,3,128,3,128,3,128,0,0, + 0,0,3,128,7,128,15,0,30,0,60,0,120,0,240,0, + 224,0,224,28,224,28,112,56,127,248,63,240,15,192,14,24, + 48,16,0,0,24,0,60,0,30,0,15,0,7,128,7,128, + 7,128,15,192,15,192,28,224,28,224,56,112,56,112,112,56, + 112,56,224,28,255,252,255,252,255,252,224,28,224,28,224,28, + 224,28,224,28,14,24,48,16,0,0,0,96,0,240,1,224, + 3,192,7,128,7,128,7,128,15,192,15,192,28,224,28,224, + 56,112,56,112,112,56,112,56,224,28,255,252,255,252,255,252, + 224,28,224,28,224,28,224,28,224,28,14,24,48,16,0,0, + 3,0,7,128,15,192,31,224,28,224,11,64,7,128,15,192, + 15,192,28,224,28,224,56,112,56,112,112,56,112,56,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 14,24,48,16,0,0,60,56,127,56,255,248,231,240,225,224, + 7,128,7,128,15,192,15,192,28,224,28,224,56,112,56,112, + 112,56,112,56,224,28,255,252,255,252,255,252,224,28,224,28, + 224,28,224,28,224,28,14,24,48,16,0,0,56,112,56,112, + 56,112,0,0,0,0,7,128,7,128,15,192,15,192,28,224, + 28,224,56,112,56,112,112,56,112,56,224,28,255,252,255,252, + 255,252,224,28,224,28,224,28,224,28,224,28,14,24,48,16, + 0,0,7,128,15,192,28,224,24,96,28,224,15,192,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,15,252,63,252,127,252,119,0, + 231,0,231,0,231,0,231,0,255,224,255,224,255,224,231,0, + 231,0,231,0,231,0,231,0,231,252,231,252,231,252,14,24, + 48,16,0,251,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,7,0,15,0,30,0, + 60,0,24,0,14,24,48,16,0,0,24,0,60,0,30,0, + 15,0,7,128,255,252,255,252,255,252,224,0,224,0,224,0, + 224,0,224,0,255,224,255,224,255,224,224,0,224,0,224,0, + 224,0,224,0,255,252,255,252,255,252,14,24,48,16,0,0, + 0,96,0,240,1,224,3,192,7,128,255,252,255,252,255,252, + 224,0,224,0,224,0,224,0,224,0,255,224,255,224,255,224, + 224,0,224,0,224,0,224,0,224,0,255,252,255,252,255,252, + 14,24,48,16,0,0,3,0,7,128,15,192,31,224,28,224, + 255,252,255,252,255,252,224,0,224,0,224,0,224,0,224,0, + 255,224,255,224,255,224,224,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,14,24,48,16,0,0,56,112,56,112, + 56,112,0,0,0,0,255,252,255,252,255,252,224,0,224,0, + 224,0,224,0,224,0,255,224,255,224,255,224,224,0,224,0, + 224,0,224,0,224,0,255,252,255,252,255,252,13,24,48,16, + 0,0,24,0,60,0,30,0,15,0,7,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,255,248,255,248, + 255,248,13,24,48,16,0,0,0,192,1,224,3,192,7,128, + 7,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,255,248,255,248,255,248,13,24,48,16,0,0,2,0, + 7,0,15,128,31,192,56,224,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,255,248,255,248,255,248,13,24, + 48,16,0,0,56,224,56,224,56,224,0,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,255,248, + 255,248,255,248,14,19,38,16,0,0,31,192,31,240,31,248, + 28,56,28,28,28,28,28,28,28,28,255,156,255,156,255,156, + 28,28,28,28,28,28,28,28,28,56,31,248,31,240,31,192, + 14,24,48,16,0,0,60,56,127,56,255,248,231,240,225,224, + 224,28,240,28,248,28,252,28,254,28,239,28,231,156,227,220, + 225,252,224,252,224,124,224,60,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,14,24,48,16,0,0,12,0,30,0, + 15,0,7,128,3,128,15,192,63,240,127,248,112,56,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,14,24,48,16, + 0,0,0,192,1,224,3,192,7,128,7,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,24,48,16,0,0,3,0,7,128,15,192,31,224, + 60,240,24,96,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,24,48,16,0,0,60,56, + 127,56,255,248,231,240,225,224,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,24, + 48,16,0,0,56,112,56,112,56,112,0,0,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,13,26,16,0,3,96,24,240,60,120,120, + 60,240,31,224,15,192,7,128,15,192,31,224,60,240,120,120, + 240,60,96,24,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,60,224,124,224,252,225,252,227,220,231,156,239,28, + 254,28,252,28,248,28,240,28,112,56,127,248,63,240,15,192, + 14,24,48,16,0,0,24,0,60,0,30,0,15,0,7,128, + 227,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,224,28,112,56, + 127,248,63,240,15,192,14,24,48,16,0,0,0,96,0,240, + 1,224,3,192,7,128,227,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,224,28,112,56,127,248,63,240,15,192,14,24,48,16, + 0,0,3,0,7,128,15,192,31,224,60,240,24,96,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,28,112,56,127,248,63,240, + 15,192,14,24,48,16,0,0,56,112,56,112,56,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,28,224,28,224,28, + 112,56,127,248,63,240,15,192,13,24,48,16,0,0,0,96, + 0,240,1,224,3,192,7,128,227,56,224,56,224,56,224,56, + 224,56,224,56,224,56,240,120,120,240,61,224,31,192,15,128, + 7,0,7,0,7,0,7,0,7,0,7,0,7,0,14,19, + 38,16,0,0,224,0,224,0,224,0,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,56,255,248,255,240,255,192, + 224,0,224,0,224,0,224,0,224,0,13,25,50,16,0,253, + 3,192,7,224,15,240,30,120,60,56,120,56,240,56,224,56, + 224,112,224,224,224,224,224,224,224,224,224,112,224,56,224,56, + 224,56,224,56,224,120,227,240,227,224,227,192,224,0,224,0, + 224,0,14,22,44,16,0,0,6,0,15,0,7,128,3,192, + 1,224,0,192,0,0,0,0,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,22,44,16,0,0,0,96,0,240,1,224, + 3,192,7,128,3,0,0,0,0,0,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,60,224,124,113,252, + 127,220,63,156,14,28,14,22,44,16,0,0,3,0,7,128, + 15,192,31,224,60,240,24,96,0,0,0,0,15,252,63,252, + 127,252,112,28,224,28,224,28,224,28,224,28,224,60,224,124, + 113,252,127,220,63,156,14,28,14,21,42,16,0,0,60,56, + 127,56,255,248,231,240,225,224,0,0,0,0,15,252,63,252, + 127,252,112,28,224,28,224,28,224,28,224,28,224,60,224,124, + 113,252,127,220,63,156,14,28,14,19,38,16,0,0,56,112, + 56,112,56,112,0,0,0,0,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,21,42,16,0,0,7,192,15,224,12,96, + 12,96,12,96,15,224,7,192,15,252,63,252,127,252,112,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,14,28,16,0,0,15,192,63,240,127,248, + 119,120,231,60,231,28,231,252,231,252,231,252,231,0,119,0, + 127,252,63,252,15,252,14,19,38,16,0,251,15,192,63,240, + 127,248,112,56,224,28,224,28,224,0,224,0,224,0,224,0, + 112,0,127,252,63,252,15,252,7,0,15,0,30,0,60,0, + 24,0,14,22,44,16,0,0,24,0,60,0,30,0,15,0, + 7,128,3,0,0,0,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,255,252,255,252,255,252,224,0,112,0,127,252, + 63,252,15,252,14,22,44,16,0,0,0,96,0,240,1,224, + 3,192,7,128,3,0,0,0,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,255,252,255,252,255,252,224,0,112,0, + 127,252,63,252,15,252,14,22,44,16,0,0,3,0,7,128, + 15,192,31,224,60,240,24,96,0,0,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,14,19,38,16,0,0,56,112, + 56,112,56,112,0,0,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,255,252,255,252,255,252,224,0,112,0,127,252, + 63,252,15,252,9,22,44,16,2,0,96,0,240,0,120,0, + 60,0,30,0,12,0,0,0,0,0,252,0,252,0,252,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,9,22,44,16,2,0,3,0,7,128, + 15,0,30,0,60,0,24,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,10,22,44,16,2,0,12,0, + 30,0,63,0,127,128,243,192,97,128,0,0,0,0,252,0, + 252,0,252,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,255,128,255,128,255,128,9,19,38,16,2,0, + 227,128,227,128,227,128,0,0,0,0,252,0,252,0,252,0, + 28,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,14,23,46,16,0,0,49,128,123,192, + 63,128,31,0,31,0,63,128,123,192,49,224,0,240,15,248, + 63,252,127,252,112,60,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,21,42,16,0,0, + 60,56,127,56,255,248,231,240,225,224,0,0,0,0,225,192, + 231,240,239,248,254,56,248,28,240,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,14,22,44,16,0,0, + 24,0,60,0,30,0,15,0,7,128,3,0,0,0,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,14,22,44,16, + 0,0,0,96,0,240,1,224,3,192,7,128,3,0,0,0, + 0,0,15,192,63,240,127,248,112,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,22, + 44,16,0,0,3,0,7,128,15,192,31,224,60,240,24,96, + 0,0,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,127,248,63,240,15,192, + 14,21,42,16,0,0,60,56,127,56,255,248,231,240,225,224, + 0,0,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,112,56,127,248,63,240,15,192, + 14,19,38,16,0,0,56,112,56,112,56,112,0,0,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,224,28, + 224,28,224,28,112,56,127,248,63,240,15,192,13,14,28,16, + 0,2,7,0,7,0,7,0,0,0,0,0,255,248,255,248, + 255,248,0,0,0,0,0,0,7,0,7,0,7,0,14,14, + 28,16,0,0,15,192,63,240,127,248,112,120,224,252,225,220, + 227,156,231,28,238,28,252,28,120,56,127,248,63,240,15,192, + 14,22,44,16,0,0,24,0,60,0,30,0,15,0,7,128, + 3,0,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,224,124,113,252,127,220,63,156, + 14,28,14,22,44,16,0,0,0,96,0,240,1,224,3,192, + 7,128,3,0,0,0,0,0,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,60,224,124,113,252,127,220, + 63,156,14,28,14,22,44,16,0,0,3,0,7,128,15,192, + 31,224,60,240,24,96,0,0,0,0,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,60,224,124,113,252, + 127,220,63,156,14,28,14,19,38,16,0,0,56,112,56,112, + 56,112,0,0,0,0,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,60,224,124,113,252,127,220,63,156, + 14,28,14,27,54,16,0,251,0,96,0,240,1,224,3,192, + 7,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,112,28,127,252, + 63,252,15,252,0,28,0,56,31,248,31,240,31,192,14,24, + 48,16,0,251,224,0,224,0,224,0,224,0,224,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,28,224,28, + 224,28,224,56,255,248,255,240,255,192,224,0,224,0,224,0, + 224,0,224,0,14,24,48,16,0,251,56,112,56,112,56,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,112,28,127,252,63,252,31,252, + 0,28,0,56,31,248,31,240,31,224}; +/* + Fontname: ProFont29 + Copyright: ProFont Distribution 2.2 Ñ Generated by Fontographer 4.1.5 + Capital A Height: 19, '1' Height: 19 + Calculated Max Values w=16 h=29 x= 5 y=15 dx=16 dy= 0 ascent=24 len=58 + Font Bounding box w=16 h=28 x= 0 y=-5 + Calculated Min Values x= 0 y=-5 dx= 0 dy= 0 + Pure Font ascent =19 descent=-5 + X Font ascent =22 descent=-5 + Max Font ascent =24 descent=-5 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_profont29r[3719] U8G_FONT_SECTION("u8g_font_profont29r") = { + 0,16,28,0,251,19,4,198,9,234,32,127,251,24,251,22, + 251,0,0,0,16,0,0,3,19,19,16,5,0,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,0,0,224,224,224, + 9,9,18,16,2,13,227,128,227,128,227,128,227,128,227,128, + 227,128,227,128,227,128,227,128,15,15,30,16,0,5,28,112, + 28,112,28,112,255,254,255,254,255,254,28,112,28,112,28,112, + 255,254,255,254,255,254,28,112,28,112,28,112,13,25,50,16, + 0,253,7,0,7,0,7,0,15,128,63,224,127,240,119,112, + 231,56,231,56,231,0,119,0,127,128,63,224,15,240,7,112, + 7,56,231,56,231,56,119,112,127,240,63,224,15,128,7,0, + 7,0,7,0,14,19,38,16,0,0,31,252,63,252,127,252, + 102,28,231,60,231,120,231,240,103,224,127,224,63,192,31,240, + 31,48,63,56,127,56,247,56,227,48,227,240,225,224,224,192, + 14,19,38,16,0,0,15,0,63,192,127,224,112,224,225,224, + 227,192,231,128,127,0,126,0,60,0,126,8,127,28,231,188, + 227,248,225,240,113,240,127,248,63,188,14,24,3,9,9,16, + 5,13,224,224,224,224,224,224,224,224,224,9,25,50,16,3, + 253,3,0,7,128,15,0,30,0,60,0,120,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,240,0,120,0,60,0,30,0,15,0,7, + 128,3,0,9,25,50,16,2,253,96,0,240,0,120,0,60, + 0,30,0,15,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,128,15, + 0,30,0,60,0,120,0,240,0,96,0,13,13,26,16,0, + 5,7,0,7,0,103,48,247,248,127,240,31,192,31,192,127, + 240,255,248,103,48,7,0,7,0,7,0,13,13,26,16,0, + 3,7,0,7,0,7,0,7,0,7,0,255,248,255,248,255, + 248,7,0,7,0,7,0,7,0,7,0,6,11,11,16,3, + 251,56,124,124,124,60,28,28,60,120,240,96,8,3,3,16, + 3,8,255,255,255,5,5,5,16,4,1,112,248,248,248,112, + 15,26,52,16,0,251,0,14,0,14,0,28,0,28,0,56, + 0,56,0,112,0,112,0,224,0,224,1,192,1,192,3,128, + 3,128,7,0,7,0,14,0,14,0,28,0,28,0,56,0, + 56,0,112,0,112,0,224,0,224,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,60,224,124,224,252,225,252, + 227,220,231,156,239,28,254,28,252,28,248,28,240,28,112,56, + 127,248,63,240,15,192,13,19,38,16,0,0,7,0,7,0, + 15,0,127,0,127,0,127,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,19,38,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,0,28,0,56,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,127,252,255,252,255,252,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,120,3,240,3,224,3,240,0,120,0,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 0,224,1,224,3,224,7,224,15,224,30,224,60,224,120,224, + 240,224,224,224,255,252,255,252,255,252,0,224,0,224,0,224, + 7,252,7,252,7,252,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,255,192,255,240,255,248,0,56,0,28, + 0,28,0,28,0,28,224,28,224,28,112,56,127,248,63,240, + 15,192,14,19,38,16,0,0,15,224,63,224,127,224,112,0, + 224,0,255,192,255,240,255,248,224,56,224,28,224,28,224,28, + 224,28,224,28,224,28,112,56,127,248,63,240,15,192,14,19, + 38,16,0,0,255,252,255,252,255,252,0,28,0,28,0,28, + 0,60,0,120,0,240,1,224,3,192,7,128,7,0,7,0, + 7,0,7,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,224,28,224,28,120,120, + 63,240,31,224,63,240,120,120,224,28,224,28,224,28,112,56, + 127,248,63,240,15,192,14,19,38,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 112,28,127,252,63,252,15,252,0,28,0,56,31,248,31,240, + 31,192,5,13,13,16,4,1,112,248,248,248,112,0,0,0, + 112,248,248,248,112,6,19,19,16,3,251,56,124,124,124,56, + 0,0,0,56,124,124,124,60,28,28,60,120,240,96,12,19, + 38,16,2,0,0,96,0,240,1,224,3,192,7,128,15,0, + 30,0,60,0,120,0,240,0,120,0,60,0,30,0,15,0, + 7,128,3,192,1,224,0,240,0,96,14,9,18,16,0,5, + 255,252,255,252,255,252,0,0,0,0,0,0,255,252,255,252, + 255,252,12,19,38,16,2,0,96,0,240,0,120,0,60,0, + 30,0,15,0,7,128,3,192,1,224,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,96,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 0,28,0,60,0,120,0,240,1,224,3,192,7,128,7,0, + 0,0,0,0,7,0,7,0,7,0,14,19,38,16,0,0, + 15,192,63,240,127,248,112,56,224,28,225,252,227,252,231,252, + 231,28,231,28,231,28,231,252,227,248,225,240,224,0,112,0, + 127,252,63,252,15,252,14,19,38,16,0,0,7,128,7,128, + 15,192,15,192,28,224,28,224,56,112,56,112,112,56,112,56, + 224,28,255,252,255,252,255,252,224,28,224,28,224,28,224,28, + 224,28,14,19,38,16,0,0,255,192,255,240,255,248,224,56, + 224,28,224,28,224,28,224,120,255,240,255,224,255,240,224,120, + 224,28,224,28,224,28,224,56,255,248,255,240,255,192,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,14,19,38,16,0,0,255,252,255,252, + 255,252,224,0,224,0,224,0,224,0,224,0,255,224,255,224, + 255,224,224,0,224,0,224,0,224,0,224,0,255,252,255,252, + 255,252,14,19,38,16,0,0,255,252,255,252,255,252,224,0, + 224,0,224,0,224,0,224,0,255,224,255,224,255,224,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,0,224,0,224,252,224,252,224,252,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 255,252,255,252,255,252,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,13,19,38,16,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,255,248,255,248, + 255,248,14,19,38,16,0,0,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,224,28,224,28,112,56,127,248,63,240,15,192,13,19, + 38,16,0,0,224,56,224,120,224,240,225,224,227,192,231,128, + 239,0,254,0,252,0,248,0,252,0,254,0,239,0,231,128, + 227,192,225,224,224,240,224,120,224,56,14,19,38,16,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,0,224,0,224,0,224,0,224,0, + 255,252,255,252,255,252,15,19,38,16,0,0,224,14,240,30, + 248,62,252,126,254,254,239,238,231,206,227,142,227,142,227,142, + 227,142,224,14,224,14,224,14,224,14,224,14,224,14,224,14, + 224,14,14,19,38,16,0,0,224,28,240,28,248,28,252,28, + 254,28,239,28,231,156,227,220,225,252,224,252,224,124,224,60, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,14,19, + 38,16,0,0,15,192,63,240,127,248,112,56,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,112,56,127,248,63,240,15,192,14,19,38,16,0,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 224,0,224,0,224,0,14,22,44,16,0,253,15,192,63,240, + 127,248,112,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,230,28,239,28,119,248,127,248,63,240, + 15,240,0,120,0,60,0,24,14,19,38,16,0,0,255,192, + 255,240,255,248,224,56,224,28,224,28,224,28,224,120,255,240, + 255,224,255,240,224,120,224,28,224,28,224,28,224,28,224,28, + 224,28,224,28,14,19,38,16,0,0,15,192,63,240,127,248, + 112,56,224,28,224,28,224,0,112,0,127,192,63,240,15,248, + 0,56,0,28,224,28,224,28,112,56,127,248,63,240,15,192, + 13,19,38,16,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,7,0,7,0,14,19,38,16, + 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,28,224,28,224,28, + 112,56,127,248,63,240,15,192,14,19,38,16,0,0,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,112,56, + 56,112,56,112,28,224,28,224,15,192,15,192,7,128,7,128, + 3,0,3,0,15,19,38,16,0,0,224,14,224,14,224,14, + 224,14,224,14,224,14,224,14,224,14,227,142,227,142,227,142, + 227,142,231,206,239,254,254,254,252,126,248,62,240,30,224,14, + 14,19,38,16,0,0,224,28,224,28,224,28,224,28,240,60, + 120,120,60,240,31,224,15,192,7,128,15,192,31,224,60,240, + 120,120,240,60,224,28,224,28,224,28,224,28,13,19,38,16, + 0,0,224,56,224,56,224,56,224,56,224,56,224,56,224,56, + 240,120,120,240,61,224,31,192,15,128,7,0,7,0,7,0, + 7,0,7,0,7,0,7,0,14,19,38,16,0,0,255,252, + 255,252,255,252,0,28,0,60,0,120,0,240,1,224,3,192, + 7,128,15,0,30,0,60,0,120,0,240,0,224,0,255,252, + 255,252,255,252,6,25,25,16,5,253,252,252,252,224,224,224, + 224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 252,252,252,15,26,52,16,1,251,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,224,0,224,0,112,0, + 112,0,56,0,56,0,28,0,28,0,14,0,14,6,25,25, + 16,2,253,252,252,252,28,28,28,28,28,28,28,28,28,28, + 28,28,28,28,28,28,28,28,28,252,252,252,14,8,16,16, + 0,11,3,0,7,128,15,192,31,224,60,240,120,120,240,60, + 96,24,16,3,6,16,0,251,255,255,255,255,255,255,7,6, + 6,16,2,15,96,240,120,60,30,12,14,14,28,16,0,0, + 15,252,63,252,127,252,112,28,224,28,224,28,224,28,224,28, + 224,60,224,124,113,252,127,220,63,156,14,28,14,19,38,16, + 0,0,224,0,224,0,224,0,224,0,224,0,255,192,255,240, + 255,248,224,56,224,28,224,28,224,28,224,28,224,28,224,28, + 224,56,255,248,255,240,255,192,14,14,28,16,0,0,15,192, + 63,240,127,248,112,56,224,28,224,28,224,0,224,0,224,0, + 224,0,112,0,127,252,63,252,15,252,14,19,38,16,0,0, + 0,28,0,28,0,28,0,28,0,28,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,14,14,28,16,0,0,15,192,63,240, + 127,248,112,56,224,28,224,28,255,252,255,252,255,252,224,0, + 112,0,127,252,63,252,15,252,11,19,38,16,2,0,1,224, + 7,224,15,224,14,0,28,0,255,128,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,14,19,38,16,0,251,15,252,63,252,127,252, + 112,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 14,19,38,16,0,0,224,0,224,0,224,0,224,0,224,0, + 255,192,255,240,255,248,224,56,224,28,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,9,19,38,16, + 2,0,28,0,28,0,28,0,0,0,0,0,252,0,252,0, + 252,0,28,0,28,0,28,0,28,0,28,0,28,0,28,0, + 28,0,255,128,255,128,255,128,8,24,24,16,0,251,7,7, + 7,0,0,63,63,63,7,7,7,7,7,7,7,7,7,7, + 7,7,14,254,252,240,14,19,38,16,0,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,128,251,192,241,224,224,240,224,120,224,60, + 224,28,9,19,38,16,2,0,252,0,252,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,255,128,255,128,15,14, + 28,16,0,0,255,224,255,248,255,252,227,156,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,227,142,227,142,227,142, + 14,14,28,16,0,0,225,192,231,240,239,248,254,56,248,28, + 240,28,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,14,14,28,16,0,0,15,192,63,240,127,248,112,56, + 224,28,224,28,224,28,224,28,224,28,224,28,112,56,127,248, + 63,240,15,192,14,19,38,16,0,251,255,192,255,240,255,248, + 224,56,224,28,224,28,224,28,224,28,224,28,224,28,224,56, + 255,248,255,240,255,192,224,0,224,0,224,0,224,0,224,0, + 14,19,38,16,0,251,15,252,63,252,127,252,112,28,224,28, + 224,28,224,28,224,28,224,28,224,28,112,28,127,252,63,252, + 15,252,0,28,0,28,0,28,0,28,0,28,14,14,28,16, + 0,0,225,192,231,240,239,248,254,56,248,28,240,28,224,0, + 224,0,224,0,224,0,224,0,224,0,224,0,224,0,14,14, + 28,16,0,0,15,252,63,252,127,252,240,0,224,0,255,192, + 127,240,31,248,0,60,0,28,0,60,255,248,255,240,255,192, + 11,19,38,16,2,0,28,0,28,0,28,0,28,0,28,0, + 255,128,255,128,255,128,28,0,28,0,28,0,28,0,28,0, + 28,0,28,0,14,0,15,224,7,224,1,224,14,14,28,16, + 0,0,224,28,224,28,224,28,224,28,224,28,224,28,224,28, + 224,28,224,60,224,124,113,252,127,220,63,156,14,28,14,14, + 28,16,0,0,224,28,224,28,224,28,224,28,224,28,112,56, + 112,56,56,112,56,112,28,224,28,224,15,192,15,192,7,128, + 15,14,28,16,0,0,227,142,227,142,227,142,227,142,227,142, + 227,142,227,142,227,142,227,142,227,142,247,222,127,252,126,252, + 28,112,14,14,28,16,0,0,224,28,224,28,240,60,120,120, + 60,240,31,224,15,192,15,192,31,224,60,240,120,120,240,60, + 224,28,224,28,14,19,38,16,0,251,224,28,224,28,224,28, + 224,28,224,28,224,28,224,28,224,28,224,28,224,28,112,28, + 127,252,63,252,15,252,0,28,0,56,31,248,31,240,31,192, + 13,14,28,16,0,0,255,248,255,248,255,248,0,240,1,224, + 3,192,7,128,15,0,30,0,60,0,120,0,255,248,255,248, + 255,248,9,29,58,16,3,251,3,128,15,128,15,128,30,0, + 28,0,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,28,0,30,0,15,128,15,128, + 3,128,3,25,25,16,5,253,224,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,29,58,16,2,251,224,0,248,0,248,0,60,0,28, + 0,28,0,28,0,28,0,28,0,28,0,28,0,28,0,30, + 0,15,128,3,128,15,128,30,0,28,0,28,0,28,0,28, + 0,28,0,28,0,28,0,28,0,60,0,248,0,248,0,224, + 0,13,5,10,16,0,8,60,56,127,56,255,248,231,240,225, + 224,0,0,0,16,0,0}; +/* + 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_FONT_SECTION("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[187] U8G_FONT_SECTION("u8g_font_robot_de_niron") = { + 0,10,10,255,0,5,0,0,0,0,42,58,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,1,3,3,2,0,4,128,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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= 3 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[723] U8G_FONT_SECTION("u8g_font_timB24n") = { + 0,38,49,251,244,23,0,0,0,0,42,58,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,5,16,16, + 11,3,0,112,248,248,248,112,0,0,0,0,0,0,112,248, + 248,248,112}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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_FONT_SECTION("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[717] U8G_FONT_SECTION("u8g_font_timR24n") = { + 0,38,48,251,245,23,0,0,0,0,42,58,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,4,15,15,9,2,0,96,240, + 240,96,0,0,0,0,0,0,0,96,240,240,96}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[240] U8G_FONT_SECTION("u8g_font_tpssbn") = { + 0,11,17,0,252,9,0,0,0,0,42,58,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,2,4,4,4,1,0,192,0,0,192 + }; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[238] U8G_FONT_SECTION("u8g_font_tpssn") = { + 0,11,17,255,252,9,0,0,0,0,42,58,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,1,4,4,3,1,0,128,0,0,128}; +/* + 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_FONT_SECTION("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_FONT_SECTION("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[187] U8G_FONT_SECTION("u8g_font_trixel_squaren") = { + 0,5,9,0,254,5,0,0,0,0,42,58,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,1,3,3,2,0,0,128,0,128}; +/* + 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_FONT_SECTION("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= 9 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_FONT_SECTION("u8g_font_u8glib_4") = { + 1,9,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,160,192,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,160,192,2,54,70,64,128,0,224,160,192, + 2,54,70,64,160,0,224,160,192,2,53,69,160,0,224,160, + 192,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,70,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= 9 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_FONT_SECTION("u8g_font_u8glib_4r") = { + 1,9,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,160,192,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_10[5136] U8G_FONT_SECTION("u8g_font_unifont_0_10") = { + 0,16,16,0,254,10,5,43,7,25,10,255,254,14,254,11, + 254,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= 5 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_11[3240] U8G_FONT_SECTION("u8g_font_unifont_0_11") = { + 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,6,10,10,8,1, + 254,184,196,132,132,132,132,132,132,128,128,6,10,10,8,1, + 254,116,140,132,132,132,140,116,4,132,120,4,8,8,8,3, + 0,192,64,64,64,64,64,64,112,7,12,12,8,1,254,16, + 16,148,154,146,146,146,146,178,82,16,16,7,11,11,8,1, + 0,28,34,32,32,248,32,32,32,32,32,32,6,8,8,8, + 1,0,120,132,132,132,132,132,132,120,7,12,12,8,1,254, + 112,144,144,112,28,18,18,18,146,124,16,16,7,10,10,8, + 1,0,128,128,128,136,136,136,136,136,136,118,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,168,84,168,84, + 2,7,7,8,3,1,192,192,0,0,0,192,192,6,2,2, + 8,1,1,196,120,6,14,14,8,1,255,168,84,168,84,168, + 84,168,84,168,84,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,4,4, + 8,2,255,32,32,112,136,6,3,3,8,1,9,48,0,204, + 4,6,6,8,2,8,48,192,48,192,48,192,2,3,3,8, + 3,10,192,0,192,4,3,3,8,2,10,176,128,176,3,3, + 3,8,3,255,128,128,96,5,5,5,8,2,9,32,112,248, + 112,32,6,4,4,8,1,9,72,164,148,72,3,3,3,8, + 0,9,192,32,32,2,3,3,8,5,255,64,128,64,4,4, + 4,8,1,254,208,208,16,224,3,3,3,8,3,10,96,128, + 128,3,3,3,8,5,9,96,128,128,5,5,5,8,3,9, + 48,64,152,160,32,8,4,4,8,0,9,66,165,66,36,3, + 4,4,8,5,9,64,160,64,128,4,3,3,8,0,8,80, + 96,128,5,3,3,8,1,254,136,112,32,3,3,3,8,2, + 255,32,32,224,2,3,3,8,3,255,64,128,64,3,3,3, + 8,2,255,32,32,192,5,4,4,8,1,254,40,200,16,96, + 4,5,5,8,2,254,96,128,96,16,96,3,3,3,8,2, + 9,192,32,32,3,4,4,8,1,9,64,160,64,32,5,4, + 4,8,2,254,136,112,32,32,2,3,3,8,2,10,64,128, + 64,3,3,3,8,3,10,32,32,224,3,3,3,8,5,255, + 128,128,96,5,4,4,8,0,9,72,168,168,144,4,4,4, + 8,2,9,96,144,144,96,2,3,3,8,3,255,192,0,192, + 5,3,3,8,2,255,168,0,72,5,3,3,8,2,255,232, + 0,8,5,3,3,8,2,255,232,64,72,2,2,2,8,3, + 0,192,192,6,2,2,8,1,0,204,204,6,3,3,8,1, + 254,204,0,48,4,1,1,8,2,0,240,5,3,3,8,2, + 254,248,32,32,2,2,2,8,2,10,192,192,2,2,2,8, + 1,10,192,192,5,3,3,8,2,255,128,32,8,2,1,1, + 8,3,5,192,1,3,3,8,4,255,128,128,128,6,2,2, + 8,1,10,124,248,4,1,1,8,2,10,240,1,9,9,8, + 4,0,128,128,128,128,128,128,128,128,128,2,2,2,8,5, + 10,192,192,2,2,2,8,1,10,192,192,3,8,8,8,3, + 0,64,224,64,0,0,64,224,64,2,2,2,8,3,10,192, + 192,2,2,2,8,3,10,192,192,4,9,9,8,2,0,224, + 128,128,128,128,128,128,128,240,5,4,4,8,2,254,248,32, + 32,32,6,14,14,8,1,255,168,84,168,84,168,84,168,84, + 168,84,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,9,9,8,1,0,132,132,68,36,88,144,136,132, + 132,7,9,9,8,1,0,248,8,8,8,8,8,8,8,254, + 6,9,9,8,1,0,96,16,16,16,8,24,40,68,132,6, + 9,9,8,1,0,252,8,8,8,8,8,8,8,8,6,9, + 9,8,1,0,252,4,4,68,68,68,68,68,68,3,9,9, + 8,2,0,224,32,32,32,32,32,32,32,32,5,9,9,8, + 2,0,192,48,40,32,32,32,32,32,32,6,9,9,8,1, + 0,252,68,68,68,68,68,68,68,68,6,9,9,8,1,0, + 140,148,132,132,132,132,132,132,252,3,4,4,8,2,5,224, + 32,32,32,6,11,11,8,1,254,252,4,4,4,4,4,4, + 4,4,4,4,6,9,9,8,1,0,252,4,4,4,4,4, + 4,4,248,5,11,11,8,2,0,128,128,248,8,8,8,8, + 16,16,32,192,7,9,9,8,0,0,254,34,34,34,34,34, + 34,34,62,7,9,9,8,1,0,156,98,66,130,130,130,130, + 130,142,3,11,11,8,2,254,224,32,32,32,32,32,32,32, + 32,32,32,4,9,9,8,2,0,112,16,16,16,16,16,16, + 16,240,6,9,9,8,1,0,252,132,132,132,132,132,132,136, + 240,7,9,9,8,0,0,18,18,18,18,18,18,18,18,254, + 6,11,11,8,1,254,252,132,132,132,228,4,4,4,4,4, + 4,6,9,9,8,1,0,252,132,132,132,228,4,4,4,252, + 5,11,11,8,2,254,136,136,144,160,192,128,128,128,128,128, + 128,6,9,9,8,1,0,132,132,72,48,16,8,4,4,252, + 6,11,11,8,1,254,252,68,68,72,72,80,64,64,64,64, + 64,6,9,9,8,1,0,252,4,4,4,4,4,4,4,4, + 7,9,9,8,1,0,146,146,146,146,146,146,146,146,254,6, + 9,9,8,1,0,124,68,68,68,68,68,68,68,196,6,14, + 14,8,1,255,168,84,168,84,168,84,168,84,168,84,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,7,9,9,8,1,0,238,34,34,34,34,34,34,34, + 34,7,9,9,8,1,0,238,34,34,34,2,2,2,2,2, + 7,4,4,8,1,5,238,34,34,34,3,3,3,8,4,9, + 32,64,128,6,3,3,8,1,9,36,72,144,6,14,14,8, + 1,255,168,84,168,84,168,84,168,84,168,84,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}; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[4249] U8G_FONT_SECTION("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,40,48,82,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,4,1,1,8,2,4,240,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,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,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,32,248,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,37,221,164,132,60,133,164,132,36,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,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,34,137,182,136,42, + 169,162,216,34,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,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,28,137,146,216,28,169,144,136,16,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,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,12,12,8,1,254,130,130,130, + 130,130,130,130,130,130,254,16,16,6,10,10,8,1,0,48, + 72,72,132,132,252,132,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,140,144,144,160,160,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,184,196,132,132,132,132,196,184,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,13,13,8,1,254,16,16, + 16,124,146,146,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,7,13,13, + 8,0,254,64,240,64,92,98,66,66,66,66,66,66,2,12, + 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,7, + 11,11,8,0,0,64,240,64,92,98,66,66,66,66,66,66, + 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,136,248,32,32}; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[3987] U8G_FONT_SECTION("u8g_font_unifont_12_13") = { + 0,16,16,0,254,8,4,155,6,11,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,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,0,1,149,130,124,2,1,191,0,0,1,170,170,16, + 16,32,16,0,254,85,85,128,0,0,1,136,4,22,25,161, + 224,0,1,128,0,0,1,128,0,0,1,128,0,0,1,128, + 0,0,1,170,170,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,16,16,32,16,0,254,170,170,0,1, + 128,0,0,1,178,34,74,55,250,42,74,35,203,162,0,1, + 128,0,0,1,128,0,0,1,128,0,85,85,14,14,28,16, + 1,255,255,252,231,156,219,124,219,28,219,108,231,156,255,252, + 255,252,247,28,231,108,247,108,247,108,227,28,255,252,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,8,8,8,1,255,24,164,144,136, + 112,32,80,32,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,4,5,5,8,2,254,112,128,240, + 64,128,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,4,4,4,8,2,1,16,16,16,224,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,6,7,7,8, + 1,0,56,36,20,76,132,136,112,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,8,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,8,96, + 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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[7078] U8G_FONT_SECTION("u8g_font_unifont_18_19") = { + 0,16,16,0,254,3,7,121,9,233,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,2,4,4,16,7,10,192,192, + 192,192,6,16,16,16,10,254,48,48,48,252,48,48,48,48, + 48,48,48,48,48,48,48,16,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,4,13,13,16,2,254,240,192,192,192,192, + 192,192,192,192,192,192,192,128,9,15,30,16,7,255,32,0, + 30,0,129,0,125,128,3,0,31,0,3,0,3,0,3,0, + 3,0,3,0,3,0,3,0,3,0,1,0,14,12,24,16, + 1,1,4,192,2,216,57,24,68,224,4,0,12,56,56,76, + 8,204,135,156,134,120,78,0,60,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,5,5,5,16, + 5,8,136,72,48,0,248,6,2,2,16,3,254,132,120,8, + 4,4,16,2,254,66,60,129,126,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,15,15,30,16,1,255,0, + 192,0,192,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,15,15,30, + 16,1,255,0,12,0,12,0,12,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,128,0,120,2,4,57,246,68, + 12,4,124,12,204,56,204,8,204,135,204,134,204,78,204,60, + 204,0,204,0,68,15,16,32,16,1,254,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,64,33,0,30,0,15,16,32,16,1, + 254,2,0,1,32,0,192,57,254,68,192,4,192,12,192,56, + 192,8,192,135,192,78,192,60,192,33,192,30,0,64,128,63, + 0,16,12,24,16,0,255,255,255,24,0,24,0,24,0,63, + 224,56,112,0,48,0,48,0,48,0,48,0,96,0,64,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,8,152,2,8,16,12,24, + 16,0,255,255,255,3,24,3,24,3,24,3,152,6,88,4, + 56,4,120,3,216,0,24,0,24,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,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,11,12,24,16,2,255,30,0, + 55,0,97,128,193,128,193,128,89,128,57,128,1,128,1,128, + 1,160,1,160,0,192,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,14,14,28,16,1, + 255,255,252,231,156,219,108,219,140,219,236,231,156,255,252,255, + 252,231,108,219,108,231,12,219,236,231,236,255,252,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,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,231,28,219,108,231,108,219,108,231,28,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,231,12,219,124,231,28,219,124,231, + 12,255,252,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,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,231,220,219, + 156,227,220,251,220,231,140,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,231, + 12,219,236,227,12,251,124,231,12,255,252,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,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,195,156,219,108,195,140,219,236,219,156,255, + 252,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,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,220,219,156,199, + 220,219,220,199,140,255,252,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,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,28,219,236,199, + 140,219,236,199,28,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,108,219, + 108,199,12,219,236,199,236,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,199, + 12,219,124,199,12,219,236,199,12,255,252,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,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,12,219,108,199, + 12,219,108,199,108,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,28,219, + 108,199,28,219,108,199,28,255,252,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,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,227,12,223,124,223,12,223,236,227,12,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,227,156,223,124,223,28,223,108,227, + 156,255,252,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,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,227,156,223,108,223,140, + 223,236,227,156,255,252,14,14,28,16,1,255,255,252,231,156, + 219,108,219,140,219,236,231,156,255,252,255,252,227,12,223,108, + 223,12,223,108,227,108,255,252,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,14,14,28, + 16,1,255,255,252,231,156,219,108,219,140,219,236,231,156,255, + 252,255,252,227,12,223,124,223,28,223,124,227,124,255,252,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,199,156,219,108,219,108,219,108,199,156,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,199,220,219,156,219,220,219,220,199, + 140,255,252,14,14,28,16,1,255,255,252,231,156,219,108,219, + 140,219,236,231,156,255,252,255,252,199,12,219,236,219,12,219, + 124,199,12,255,252,14,14,28,16,1,255,255,252,231,156,219, + 108,219,140,219,236,231,156,255,252,255,252,199,28,219,236,219, + 140,219,236,199,28,255,252,14,14,28,16,1,255,255,252,231, + 156,219,108,219,140,219,236,231,156,255,252,255,252,199,108,219, + 108,219,12,219,236,199,236,255,252,14,14,28,16,1,255,255, + 252,231,156,219,108,219,140,219,236,231,156,255,252,255,252,199, + 12,219,124,219,12,219,236,199,12,255,252,14,14,28,16,1, + 255,255,252,231,156,219,108,219,140,219,236,231,156,255,252,255, + 252,199,156,219,124,219,28,219,108,199,156,255,252,8,13,13, + 16,8,255,128,112,8,4,23,14,6,6,6,6,6,6,2, + 14,14,28,16,1,255,255,252,231,156,219,108,219,140,219,236, + 231,156,255,252,255,252,199,156,219,108,219,156,219,108,199,156, + 255,252,14,14,28,16,1,255,255,252,231,156,219,108,219,140, + 219,236,231,156,255,252,255,252,199,156,219,108,219,140,219,236, + 199,156,255,252,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,199,12,219,108,219,12, + 219,108,199,108,255,252,14,14,28,16,1,255,255,252,231,156, + 219,108,219,140,219,236,231,156,255,252,255,252,199,28,219,108, + 219,28,219,108,199,28,255,252,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,14,14,28,16,1,255,255,252, + 231,156,219,108,219,140,219,236,231,156,255,252,255,252,199,12, + 219,124,219,28,219,124,199,12,255,252,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,14, + 14,28,16,1,255,255,252,231,156,219,108,219,140,219,236,231, + 156,255,252,255,252,195,108,223,108,199,12,223,236,195,236,255, + 252,14,14,28,16,1,255,255,252,231,156,219,108,219,140,219, + 236,231,156,255,252,255,252,195,12,223,124,199,12,223,236,195, + 12,255,252,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,8,8,16,5,254,96,128,128,64,32,16,8,4,14,14, + 28,16,1,255,255,252,231,156,219,108,219,140,219,236,231,156, + 255,252,255,252,195,140,223,124,199,124,223,124,223,140,255,252, + 14,14,28,16,1,255,255,252,231,156,219,108,219,140,219,236, + 231,156,255,252,255,252,195,28,223,108,199,108,223,108,223,28, + 255,252,14,14,28,16,1,255,255,252,231,156,219,108,219,140, + 219,236,231,156,255,252,255,252,195,12,223,124,199,28,223,124, + 223,12,255,252,14,14,28,16,1,255,255,252,231,156,219,108, + 219,140,219,236,231,156,255,252,255,252,195,12,223,124,199,28, + 223,124,223,124,255,252}; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 10, '1' Height: 8 + Calculated Max Values w=16 h=16 x= 4 y= 0 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[4633] U8G_FONT_SECTION("u8g_font_unifont_2_3") = { + 0,16,16,0,254,10,4,222,7,30,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,11,11,8,1,0,4,30,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,0,64,240,64,92,98,66,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,13,13,8,0,254,64,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,96,32,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,13,13,8,2,254,96,32,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,96,32,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,11,11, + 8,1,0,96,32,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,11, + 11,8,2,0,96,32,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,32,248,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,32,248,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,32,248,32,40,48,96,160,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,11,11,8,1,0,224,32,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,144,128, + 136,144,160,192,160,144,136,132,5,11,11,8,2,0,96,32, + 32,32,248,32,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,32,248,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,140,138,136,80,80,32,32, + 32,32,32,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,97,33,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,72,48,0,128,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[3791] U8G_FONT_SECTION("u8g_font_unifont_4_5") = { + 0,16,16,0,254,10,4,177,6,164,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,32,248,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,13,13,8,2,254,96,32,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, + 32,248,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,11,11,8,1,0,48,16,16,16,116,152,16,16,16,16, + 124,6,11,11,8,1,0,48,16,16,112,144,124,16,16,16, + 16,124,4,12,12,8,3,255,192,64,64,64,64,64,64,64, + 64,64,64,48,7,13,13,8,1,254,96,32,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,32,248,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,11,11,8,1,254,132,68,36,20,12,20,36,68, + 4,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,8,10,10,8,0,0,64,64, + 70,248,72,68,66,65,65,62,7,13,13,8,1,254,6,72, + 72,72,248,72,72,72,72,72,56,8,48,8,11,11,8,0, + 255,64,64,70,249,72,72,72,74,77,62,4,7,12,12,8, + 1,254,96,144,128,220,162,162,162,162,162,162,4,24,7,11, + 11,8,1,0,192,64,64,64,78,80,80,76,66,66,124,7, + 11,11,8,0,0,192,64,64,64,64,126,68,72,80,96,126, + 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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 3, '1' Height: 9 + Calculated Max Values w=15 h=16 x= 7 y=12 dx=16 dy= 0 ascent=14 len=16 + 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 =12 descent= 0 + Max Font ascent =14 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_67_75[3421] U8G_FONT_SECTION("u8g_font_unifont_67_75") = { + 0,16,16,0,254,3,2,188,4,152,16,255,0,14,254,12, + 0,7,5,5,8,1,2,32,64,254,64,32,5,14,14,8, + 2,254,32,112,168,32,32,32,32,32,32,32,32,32,32,32, + 7,5,5,8,0,2,8,4,254,4,8,5,14,14,8,2, + 0,32,32,32,32,32,32,32,32,32,32,32,168,112,32,8, + 5,5,8,0,2,36,66,255,66,36,5,12,12,8,2,0, + 32,112,168,32,32,32,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,0,8,8,40,72,254,72,40,8,8,7,9,9,8,0, + 0,32,32,40,36,254,36,40,32,32,7,5,5,8,1,2, + 32,76,242,64,32,7,5,5,8,0,2,8,100,158,4,8, + 8,5,5,8,0,3,36,72,255,72,36,5,14,14,8,2, + 254,32,112,168,32,112,168,32,32,32,32,32,32,32,32,8, + 5,5,8,0,2,36,18,255,18,36,5,15,15,8,2,255, + 32,32,32,32,32,32,32,32,32,168,112,32,168,112,32,7, + 5,5,8,1,2,34,68,248,68,34,7,5,5,8,0,2, + 136,68,62,68,136,6,5,5,8,1,2,36,68,252,68,36, + 5,12,12,8,2,0,32,112,168,32,32,32,32,32,32,32, + 32,248,6,5,5,8,1,2,144,136,252,136,144,5,12,12, + 8,2,0,248,32,32,32,32,32,32,32,32,168,112,32,5, + 12,12,8,2,0,32,112,168,32,32,32,32,32,168,112,32, + 248,7,6,6,8,1,2,4,34,66,252,64,32,7,6,6, + 8,1,2,64,136,132,126,4,8,7,6,6,8,1,2,4, + 42,74,252,72,40,7,6,6,8,1,2,64,168,164,126,36, + 40,8,5,5,8,0,2,36,90,231,66,36,8,9,9,8, + 0,0,8,8,44,74,255,74,44,8,8,6,12,12,8,1, + 0,128,128,128,144,176,208,144,16,16,84,56,16,5,9,9, + 8,1,254,32,64,240,72,40,8,8,8,8,5,9,9,8, + 2,254,32,16,120,144,160,128,128,128,128,5,12,12,8,1, + 2,8,8,8,8,8,8,8,40,72,240,64,32,5,12,12, + 8,2,2,128,128,128,128,128,128,128,160,144,120,16,32,8, + 5,5,8,0,0,252,4,21,14,4,5,12,12,8,1,2, + 8,8,8,8,8,8,8,40,72,248,64,32,8,5,5,8, + 0,1,30,33,169,113,32,8,5,5,8,0,1,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,1,92,152,148,132,132,120,6,6,6, + 8,1,1,232,100,164,132,132,120,7,3,3,8,1,4,32, + 64,254,7,3,3,8,1,2,254,64,32,3,14,14,8,4, + 254,128,192,160,128,128,128,128,128,128,128,128,128,128,128,3, + 14,14,8,2,254,32,96,160,32,32,32,32,32,32,32,32, + 32,32,32,7,3,3,8,0,4,8,4,254,7,3,3,8, + 0,2,254,4,8,3,14,14,8,4,0,128,128,128,128,128, + 128,128,128,128,128,128,160,192,128,3,14,14,8,2,0,32, + 32,32,32,32,32,32,32,32,32,32,160,96,32,6,11,11, + 8,1,0,16,8,252,8,16,0,32,64,252,64,32,8,12, + 12,8,0,0,36,116,172,36,36,36,36,36,36,53,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,12,12,8,0,0,36,126,165,36,36,36,36,36, + 36,36,36,36,6,11,11,8,1,0,16,8,252,8,16,0, + 16,8,252,8,16,8,12,12,8,0,0,36,36,36,36,36, + 36,36,36,36,165,126,36,6,7,7,8,1,1,32,64,252, + 0,252,8,16,6,7,7,8,1,1,16,8,252,0,252,64, + 32,7,9,9,8,0,0,8,8,40,126,136,126,40,8,8, + 8,9,9,8,0,0,8,8,44,126,137,126,44,8,8,7, + 9,9,8,1,0,32,32,40,252,34,252,40,32,32,6,5, + 5,8,1,2,32,124,128,124,32,5,12,12,8,2,0,32, + 80,216,80,80,80,80,80,80,80,80,80,6,5,5,8,1, + 2,16,248,4,248,16,5,12,12,8,2,0,80,80,80,80, + 80,80,80,80,80,216,80,32,8,5,5,8,0,2,36,126, + 129,126,36,5,12,12,8,2,0,32,80,216,80,80,80,80, + 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,1,16,62,64,254,64, + 62,16,7,7,7,8,1,1,16,248,4,254,4,248,16,8, + 5,5,8,0,2,32,66,245,72,32,8,5,5,8,0,2, + 4,66,175,18,4,5,14,14,8,2,254,32,112,168,32,32, + 32,248,32,248,32,32,32,32,32,5,14,14,8,2,0,32, + 32,32,32,32,248,32,248,32,32,32,168,112,32,7,5,5, + 8,1,2,32,64,238,64,32,5,14,14,8,2,254,32,112, + 168,32,32,0,32,32,32,32,0,32,32,32,8,5,5,8, + 0,2,4,2,239,2,4,5,14,14,8,2,0,32,32,32, + 0,32,32,32,32,0,32,32,168,112,32,7,5,5,8,1, + 2,160,192,254,192,160,7,5,5,8,0,2,10,6,254,6, + 10,8,7,7,8,0,1,16,48,95,129,95,48,16,7,12, + 12,8,1,0,16,40,68,238,40,40,40,40,40,40,40,56, + 8,7,7,8,0,2,8,12,250,129,250,12,8,7,12,12, + 8,1,0,56,40,40,40,40,40,40,40,238,68,40,16,7, + 12,12,8,1,0,16,40,68,238,40,40,40,56,0,56,40, + 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,13,13,8,1,0,16,40,84, + 238,68,198,68,68,68,68,68,68,124,7,13,13,8,1,0, + 16,40,84,238,68,198,68,68,68,68,198,130,254,7,7,7, + 8,1,1,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,12,12,8,2,0,32,80, + 216,80,80,80,80,80,80,216,80,32,13,5,10,16,1,2, + 14,32,17,16,255,248,17,16,14,32,8,12,12,8,0,0, + 36,46,53,36,36,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,2,36,68,255,68,36,8,5,5,8, + 0,2,36,34,255,34,36,11,5,10,16,2,2,36,128,68, + 64,255,224,68,64,36,128,15,5,10,16,1,2,34,128,66, + 128,255,254,66,128,34,128,15,5,10,16,0,2,2,136,2, + 132,255,254,2,132,2,136,13,5,10,16,1,2,37,32,69, + 16,255,248,69,16,37,32,8,5,5,8,0,2,32,96,191, + 96,32,8,5,5,8,0,2,4,6,253,6,4,12,5,10, + 16,2,2,32,64,96,96,191,208,96,96,32,64,8,8,8, + 8,0,6,255,255,255,255,255,255,255,255,8,2,2,8,0, + 254,255,255,8,4,4,8,0,254,255,255,255,255,8,6,6, + 8,0,254,255,255,255,255,255,255,8,8,8,8,0,254,255, + 255,255,255,255,255,255,255,8,10,10,8,0,254,255,255,255, + 255,255,255,255,255,255,255,8,12,12,8,0,254,255,255,255, + 255,255,255,255,255,255,255,255,255,8,14,14,8,0,254,255, + 255,255,255,255,255,255,255,255,255,255,255,255,255,8,16,16, + 8,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255, + 255,255,255,7,16,16,8,0,254,254,254,254,254,254,254,254, + 254,254,254,254,254,254,254,254,254,6,16,16,8,0,254,252, + 252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,5, + 16,16,8,0,254,248,248,248,248,248,248,248,248,248,248,248, + 248,248,248,248,248,4,16,16,8,0,254,240,240,240,240,240, + 240,240,240,240,240,240,240,240,240,240,240,3,16,16,8,0, + 254,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, + 224,2,16,16,8,0,254,192,192,192,192,192,192,192,192,192, + 192,192,192,192,192,192,192,1,16,16,8,0,254,128,128,128, + 128,128,128,128,128,128,128,128,128,128,128,128,128,4,16,16, + 8,4,254,240,240,240,240,240,240,240,240,240,240,240,240,240, + 240,240,240,7,16,16,8,0,254,136,34,136,34,136,34,136, + 34,136,34,136,34,136,34,136,34,8,16,16,8,0,254,170, + 85,170,85,170,85,170,85,170,85,170,85,170,85,170,85,8, + 16,16,8,0,254,238,187,238,187,238,187,238,187,238,187,238, + 187,238,187,238,187,8,2,2,8,0,12,255,255,1,16,16, + 8,7,254,128,128,128,128,128,128,128,128,128,128,128,128,128, + 128,128,128,4,8,8,8,0,254,240,240,240,240,240,240,240, + 240,4,8,8,8,4,254,240,240,240,240,240,240,240,240,4, + 8,8,8,0,6,240,240,240,240,240,240,240,240,8,16,16, + 8,0,254,240,240,240,240,240,240,240,240,255,255,255,255,255, + 255,255,255,8,16,16,8,0,254,240,240,240,240,240,240,240, + 240,15,15,15,15,15,15,15,15,8,16,16,8,0,254,255, + 255,255,255,255,255,255,255,240,240,240,240,240,240,240,240,8, + 16,16,8,0,254,255,255,255,255,255,255,255,255,15,15,15, + 15,15,15,15,15,4,8,8,8,4,6,240,240,240,240,240, + 240,240,240,8,16,16,8,0,254,15,15,15,15,15,15,15, + 15,240,240,240,240,240,240,240,240,8,16,16,8,0,254,15, + 15,15,15,15,15,15,15,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 10, '1' Height: 14 + Calculated Max Values w=16 h=16 x= 5 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[7568] U8G_FONT_SECTION("u8g_font_unifont_72_73") = { + 0,16,16,0,254,10,5,238,9,116,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,3,4,241,192,138, + 0,241,128,136,64,243,128,11,5,10,16,2,4,139,224,136, + 128,248,128,136,128,136,128,11,5,10,16,2,4,131,224,130, + 0,131,224,130,0,250,0,11,5,10,16,2,4,139,224,136, + 128,136,128,80,128,32,128,11,5,10,16,2,4,251,224,130, + 0,251,224,130,0,130,0,11,5,10,16,2,4,123,192,130, + 32,131,192,130,64,122,32,11,5,10,16,2,4,121,192,130, + 32,114,32,10,32,241,192,11,5,10,16,2,4,123,224,128, + 128,112,128,8,128,243,224,12,5,10,16,2,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,2,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,3,4,243,128,132, + 0,243,0,128,128,135,0,9,5,10,16,3,4,115,128,132, + 0,179,0,144,128,119,0,9,5,10,16,3,4,227,128,148, + 0,227,0,160,128,151,0,9,5,10,16,3,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,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,251,236,195,220,223,188,195,188,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,156,251,108,195,156,223,108,195,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,251,108,195,140,223,236,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,12,251,108,195,12,223,108, + 195,108,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,28,251,108,195,28, + 223,108,195,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,140,251,124, + 195,124,223,124,195,140,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,28, + 251,108,195,108,223,108,195,28,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,12,251,124,195,28,223,124,195,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,251,124,195,28,223,124,195,124,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,199,156,251,108,227,108,251,108,199,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,199,220,251,156,227,220,251,220,199,140, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,199,12,251,236,227,12,251,124, + 199,12,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,199,28,251,236,227,140, + 251,236,199,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,199,108,251,108, + 227,12,251,236,199,236,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,199,12, + 251,124,227,12,251,236,199,12,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 199,156,251,124,227,28,251,108,199,156,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,199,12,251,236,227,220,251,188,199,188,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,199,156,251,108,227,156,251,108,199,156,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,199,156,251,108,227,140,251,236,199,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,199,12,251,108,227,12,251,108, + 199,108,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,199,28,251,108,227,28, + 251,108,199,28,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,199,140,251,124, + 227,124,251,124,199,140,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,199,28, + 251,108,227,108,251,108,199,28,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 199,12,251,124,227,28,251,124,199,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,199,12,251,124,227,28,251,124,199,124,255,252,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,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,219,28,219,108, + 195,28,251,108,251,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,219,140, + 219,124,195,124,251,124,251,140,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 219,28,219,108,195,108,251,108,251,28,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,219,12,219,124,195,28,251,124,251,12,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,219,12,219,124,195,28,251,124,251,124,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,223,108,195,108,251,108,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,220,223,156,195,220,251,220, + 195,140,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,12,223,236,195,12, + 251,124,195,12,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,28,223,236, + 195,140,251,236,195,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,108, + 223,108,195,12,251,236,195,236,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,12,223,124,195,12,251,236,195,12,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,156,223,124,195,28,251,108,195,156,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,12,223,236,195,220,251,188,195,188,255,252, + 14,14,28,16,1,255,255,252,195,108,251,108,195,12,223,236, + 195,236,255,252,255,252,195,156,223,108,195,156,251,108,195,156, + 255,252,14,14,28,16,1,255,255,252,195,108,251,108,195,12, + 223,236,195,236,255,252,255,252,195,156,223,108,195,140,251,236, + 195,156,255,252,14,14,28,16,1,255,255,252,195,108,251,108, + 195,12,223,236,195,236,255,252,255,252,195,12,223,108,195,12, + 251,108,195,108,255,252,14,14,28,16,1,255,255,252,195,108, + 251,108,195,12,223,236,195,236,255,252,255,252,195,28,223,108, + 195,28,251,108,195,28,255,252,14,14,28,16,1,255,255,252, + 195,108,251,108,195,12,223,236,195,236,255,252,255,252,195,140, + 223,124,195,124,251,124,195,140,255,252,14,14,28,16,1,255, + 255,252,195,108,251,108,195,12,223,236,195,236,255,252,255,252, + 195,28,223,108,195,108,251,108,195,28,255,252,14,14,28,16, + 1,255,255,252,195,108,251,108,195,12,223,236,195,236,255,252, + 255,252,195,12,223,124,195,28,251,124,195,12,255,252,14,14, + 28,16,1,255,255,252,195,108,251,108,195,12,223,236,195,236, + 255,252,255,252,195,12,223,124,195,28,251,124,195,124,255,252, + 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, + 67,132,68,68,132,66,128,66,128,130,129,2,130,2,68,4, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,132,68,68,132,66,128,66,129,130,128,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,64,132,65,132,130,130,132,130, + 136,130,143,194,128,130,64,132,64,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,196,68,4, + 132,2,132,2,135,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, + 65,132,66,4,132,2,132,2,135,130,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,71,196,64,68,128,66,128,130,128,130,128,130, + 129,2,65,4,65,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,66, + 131,130,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,67,132,68,68, + 132,66,132,66,131,194,128,66,128,66,64,132,67,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,68,100,140,146,148,146,132,146,132,146,132,146,95,100, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,140,194,149,66,132,66,132,66, + 132,66,95,244,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,100,140,146,148,18, + 132,34,132,66,132,130,95,244,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,100, + 140,146,148,18,132,34,132,18,132,146,95,100,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,68,20,140,50,148,82,132,146,132,250,132,18,95,20, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,244,140,130,148,130,132,226,132,18, + 132,146,95,100,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,116,140,130,148,130, + 132,226,132,146,132,146,95,100,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,244, + 140,18,148,18,132,34,132,34,132,66,95,68,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,68,100,140,146,148,146,132,98,132,146,132,146,95,100, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,100,140,146,148,146,132,114,132,18, + 132,18,95,100,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,76,100,146,146,130,146, + 132,146,136,146,144,146,94,100,64,4,32,8,24,48,7,192, + 14,12,24,16,1,0,32,16,65,8,67,8,133,4,129,4, + 129,4,129,4,129,4,129,4,65,8,71,200,32,16,14,12, + 24,16,1,0,32,16,71,136,72,72,136,68,128,68,129,132, + 130,4,132,4,136,4,72,8,79,200,32,16,14,12,24,16, + 1,0,32,16,71,136,72,72,136,68,128,68,131,132,128,68, + 128,68,136,68,72,72,71,136,32,16,14,12,24,16,1,0, + 32,16,64,136,65,136,130,132,132,132,136,132,136,132,143,196, + 128,132,64,136,64,136,32,16,14,12,24,16,1,0,32,16, + 79,200,72,8,136,4,136,4,143,132,128,68,128,68,128,68, + 72,72,71,136,32,16,14,12,24,16,1,0,32,16,67,136, + 68,8,136,4,136,4,143,132,136,68,136,68,136,68,72,72, + 71,136,32,16,14,12,24,16,1,0,32,16,79,200,64,72, + 128,68,128,132,128,132,128,132,129,4,129,4,65,8,65,8, + 32,16,14,12,24,16,1,0,32,16,71,136,72,72,136,68, + 136,68,135,132,136,68,136,68,136,68,72,72,71,136,32,16, + 14,12,24,16,1,0,32,16,71,136,72,72,136,68,136,68, + 135,196,128,68,128,68,128,68,64,136,71,8,32,16,16,12, + 24,16,0,0,64,2,136,49,152,73,168,133,136,133,136,133, + 136,133,136,133,136,133,136,73,190,49,64,2,16,12,24,16, + 0,0,64,2,136,17,152,49,168,81,136,17,136,17,136,17, + 136,17,136,17,136,17,190,125,64,2,16,12,24,16,0,0, + 64,2,136,121,152,133,168,133,136,5,136,25,136,33,136,65, + 136,129,136,129,190,253,64,2,16,12,24,16,0,0,64,2, + 136,121,152,133,168,133,136,5,136,57,136,5,136,5,136,133, + 136,133,190,121,64,2,16,12,24,16,0,0,64,2,136,9, + 152,25,168,41,136,73,136,137,136,137,136,253,136,9,136,9, + 190,9,64,2,16,12,24,16,0,0,64,2,136,253,152,129, + 168,129,136,129,136,249,136,5,136,5,136,5,136,133,190,121, + 64,2,16,12,24,16,0,0,64,2,136,57,152,65,168,129, + 136,129,136,249,136,133,136,133,136,133,136,133,190,121,64,2, + 16,12,24,16,0,0,64,2,137,249,152,9,168,9,136,17, + 136,17,136,17,136,33,136,33,136,33,190,33,64,2,16,12, + 24,16,0,0,64,2,136,121,152,133,168,133,136,133,136,121, + 136,133,136,133,136,133,136,133,190,121,64,2,16,12,24,16, + 0,0,64,2,136,121,152,133,168,133,136,133,136,125,136,5, + 136,5,136,5,136,9,190,113,64,2,16,12,24,16,0,0, + 64,2,156,49,162,73,162,133,130,133,132,133,136,133,144,133, + 160,133,160,73,190,49,64,2,7,10,10,16,5,0,32,96, + 160,32,32,32,32,32,32,250,8,10,10,16,4,0,120,132, + 132,4,24,32,64,128,128,253,8,10,10,16,4,0,120,132, + 132,4,56,4,4,132,132,121,8,10,10,16,4,0,8,24, + 40,72,136,136,252,8,8,9,8,10,10,16,4,0,252,128, + 128,128,248,4,4,4,132,121,8,10,10,16,4,0,56,64, + 128,128,248,132,132,132,132,121,8,10,10,16,4,0,252,4, + 4,8,8,8,16,16,16,17,8,10,10,16,4,0,120,132, + 132,132,120,132,132,132,132,121,8,10,10,16,4,0,120,132, + 132,132,124,4,4,4,8,113,14,10,20,16,1,0,32,192, + 97,32,162,16,34,16,34,16,34,16,34,16,34,16,33,32, + 248,196,14,10,20,16,1,0,32,64,96,192,161,64,32,64, + 32,64,32,64,32,64,32,64,32,64,249,244,14,10,20,16, + 1,0,33,224,98,16,162,16,32,16,32,96,32,128,33,0, + 34,0,34,0,251,244,14,10,20,16,1,0,33,224,98,16, + 162,16,32,16,32,224,32,16,32,16,34,16,34,16,249,228, + 14,10,20,16,1,0,32,32,96,96,160,160,33,32,34,32, + 34,32,35,240,32,32,32,32,248,36,14,10,20,16,1,0, + 35,240,98,0,162,0,34,0,35,224,32,16,32,16,32,16, + 34,16,249,228,14,10,20,16,1,0,32,224,97,0,162,0, + 34,0,35,224,34,16,34,16,34,16,34,16,249,228,14,10, + 20,16,1,0,35,240,96,16,160,16,32,32,32,32,32,32, + 32,64,32,64,32,64,248,68,14,10,20,16,1,0,33,224, + 98,16,162,16,34,16,33,224,34,16,34,16,34,16,34,16, + 249,228,14,10,20,16,1,0,33,224,98,16,162,16,34,16, + 33,240,32,16,32,16,32,16,32,32,249,196,15,10,20,16, + 1,0,120,96,132,144,133,8,5,8,25,8,33,8,65,8, + 129,8,128,144,252,98,14,12,24,16,1,0,32,16,64,8, + 71,136,136,68,128,68,135,196,136,68,136,68,136,196,71,72, + 64,8,32,16,14,12,24,16,1,0,40,16,72,8,72,8, + 139,132,140,68,136,68,136,68,136,68,136,68,76,72,75,136, + 32,16,14,12,24,16,1,0,32,16,64,8,71,136,136,68, + 136,4,136,4,136,4,136,4,136,68,71,136,64,8,32,16, + 14,12,24,16,1,255,32,80,64,72,64,72,135,68,136,196, + 136,68,136,68,136,68,136,68,72,200,71,72,32,16,14,12, + 24,16,1,0,32,16,64,8,71,136,136,68,136,68,143,196, + 136,4,136,4,136,68,71,136,64,8,32,16,14,12,24,16, + 1,255,33,144,66,8,66,8,130,4,143,132,130,4,130,4, + 130,4,130,4,66,8,66,8,32,16,14,12,24,16,1,0, + 32,16,64,72,71,72,136,132,136,132,136,132,135,4,132,4, + 135,132,72,72,72,72,39,144,14,12,24,16,1,255,40,16, + 72,8,72,8,139,132,140,68,136,68,136,68,136,68,136,68, + 72,72,72,72,32,16,13,12,24,16,1,0,34,32,66,16, + 64,16,134,8,130,8,130,8,130,8,130,8,130,8,66,16, + 79,144,32,32,13,13,26,16,1,255,32,160,64,144,64,16, + 129,136,128,136,128,136,128,136,128,136,128,136,64,144,64,144, + 41,32,6,0,14,12,24,16,1,255,32,16,72,8,72,8, + 136,132,137,4,138,4,140,4,138,4,137,4,72,136,72,72, + 32,16,13,12,24,16,1,0,32,32,70,16,66,16,130,8, + 130,8,130,8,130,8,130,8,130,8,66,16,79,144,32,32, + 15,12,24,16,1,0,32,8,64,4,78,196,137,34,137,34, + 137,34,137,34,137,34,137,34,73,36,64,4,32,8,14,12, + 24,16,1,255,32,16,64,8,75,136,140,68,136,68,136,68, + 136,68,136,68,136,68,72,72,64,8,32,16,14,12,24,16, + 1,0,32,16,64,8,71,136,136,68,136,68,136,68,136,68, + 136,68,136,68,71,136,64,8,32,16,14,12,24,16,1,0, + 32,16,64,8,75,136,140,68,136,68,136,68,136,68,136,68, + 140,68,75,136,72,8,40,16,14,12,24,16,1,255,32,16, + 64,8,71,72,136,196,136,68,136,68,136,68,136,68,136,196, + 71,72,64,72,32,80,14,12,24,16,1,0,32,16,64,8, + 75,136,140,68,136,68,136,4,136,4,136,4,136,4,72,8, + 64,8,32,16,14,12,24,16,1,0,32,16,64,8,71,136, + 136,68,136,4,134,4,129,132,128,68,136,68,71,136,64,8, + 32,16,14,12,24,16,1,255,32,16,66,8,66,8,143,132, + 130,4,130,4,130,4,130,4,130,4,66,8,65,136,32,16, + 14,12,24,16,1,0,32,16,64,8,72,72,136,68,136,68, + 136,68,136,68,136,68,136,196,71,72,64,8,32,16,14,12, + 24,16,1,255,32,16,64,8,72,72,136,68,136,68,132,132, + 132,132,132,132,131,4,67,8,64,8,32,16,15,12,24,16, + 1,0,32,8,64,4,72,36,137,34,137,34,137,34,137,34, + 137,34,137,34,70,196,64,4,32,8,14,12,24,16,1,255, + 32,16,64,8,72,72,136,68,132,132,131,4,131,4,132,132, + 136,68,72,72,64,8,32,16,14,12,24,16,1,0,32,16, + 64,8,72,72,136,68,136,68,136,68,136,68,132,196,131,68, + 64,72,64,72,39,144,14,12,24,16,1,0,32,16,64,8, + 79,200,128,68,128,132,129,4,130,4,132,4,136,4,79,200, + 64,8,32,16,15,15,30,16,0,255,7,192,24,48,32,8, + 65,4,66,132,130,130,132,66,132,66,135,194,132,66,68,68, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,132,68,68,132,66,132,66,135,130,132,66, + 132,66,68,68,71,132,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 132,2,132,2,132,66,68,68,67,132,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,71,4,68,132, + 132,66,132,66,132,66,132,66,132,66,68,132,71,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,68,4,132,2,132,2,135,130,132,2,132,2,68,4, + 71,196,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,68,4,132,2,132,2,135,130,132,2, + 132,2,68,4,68,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 133,194,132,66,132,66,68,196,67,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,68,68,68, + 132,66,132,66,135,194,132,66,132,66,68,68,68,68,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 71,196,65,4,129,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,67,228,64,132,128,130,128,130,128,130,128,130, + 132,130,68,132,67,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,68,68,68,68,132,130,133,2, + 134,2,133,2,132,130,68,68,68,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,4,68,4, + 132,2,132,2,132,2,132,2,132,2,68,4,71,196,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,68,68,68,134,194,134,194,133,66,133,66,132,66,68,68, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,134,66,134,66,133,66,133,66, + 132,194,68,196,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,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,71,132,68,68, + 132,66,132,66,135,130,132,2,132,2,68,4,68,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 67,132,68,68,132,66,132,66,132,66,132,66,133,66,70,196, + 67,132,32,104,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,132,68,68,132,66,132,66,135,130,133,2, + 132,130,68,132,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,67,132,68,68,132,66,132,2, + 131,130,128,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,79,228,65,4, + 129,2,129,2,129,2,129,2,129,2,65,4,65,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,68,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,72,36,72,36,132,66,132,66,132,66,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,68,68,68,68,132,66,133,66, + 133,66,134,194,134,194,68,68,68,68,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,68,68,68,68, + 130,130,130,130,129,2,130,130,130,130,68,68,68,68,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 72,36,72,36,132,66,132,66,130,130,129,2,129,2,65,4, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,71,196,64,68,128,66,128,130,129,2,130,2, + 132,2,68,4,71,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,132,132,66,128,66, + 131,194,132,66,132,194,67,68,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,36,8,68,4,68,4, + 133,130,134,66,132,66,132,66,132,66,70,68,69,132,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,67,132,132,66,132,2,132,2,132,2,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,72,64,68,64,68,131,66,132,194,132,66,132,66, + 132,66,68,196,67,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,132,132,66,132,66, + 135,194,132,2,132,66,67,132,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,196,65,4, + 129,2,129,2,135,194,129,2,129,2,65,4,65,4,33,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,68,67,68,132,130,132,130,131,2,130,2,131,130,68,68, + 68,68,35,136,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,36,8,68,4,68,4,133,130,134,66,132,66,132,66, + 132,66,68,68,68,68,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,33,8,65,4,64,4,131,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,72,64,68,64,4, + 128,194,128,66,128,66,128,66,128,66,64,68,68,132,35,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 68,4,68,4,132,130,133,2,134,2,134,2,133,2,68,132, + 68,68,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,67,4,65,4,129,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,64,4,78,196,137,34,137,34, + 137,34,137,34,137,34,73,36,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,69,132, + 134,66,132,66,132,66,132,66,132,66,68,68,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,67,132,132,66,132,66,132,66,132,66,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,69,132,134,66,132,66,132,66,132,66, + 134,66,69,132,68,4,36,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,67,68,132,194,132,66, + 132,66,132,66,132,66,68,196,67,68,32,72,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,69,132, + 134,66,132,66,132,2,132,2,132,2,68,4,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,67,132,132,66,132,2,131,130,128,66,132,66,67,132, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,65,4,65,4,135,194,129,2,129,2,129,2, + 129,2,65,4,64,196,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,68,132,66,132,66, + 132,66,132,66,132,194,67,68,64,4,32,8,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,68,68, + 132,66,130,130,130,130,130,130,129,2,65,4,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 64,4,72,36,137,34,137,34,137,34,137,34,137,34,70,196, + 64,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 24,48,32,8,64,4,68,68,132,66,130,130,129,2,130,130, + 132,66,68,68,64,4,32,8,24,48,7,192,15,15,30,16, + 0,255,7,192,24,48,32,8,64,4,68,68,132,66,132,66, + 132,66,130,194,129,66,64,68,64,68,35,136,24,48,7,192, + 15,15,30,16,0,255,7,192,24,48,32,8,64,4,71,196, + 128,66,128,130,129,2,130,2,132,2,71,196,64,4,32,8, + 24,48,7,192,15,15,30,16,0,255,7,192,24,48,32,8, + 65,4,66,132,132,66,132,66,132,66,132,66,132,66,66,132, + 65,4,32,8,24,48,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,252,123,188,243,62,234,190,251,190,251,190, + 251,190,96,12,127,252,63,248,31,240,7,192,15,15,30,16, + 0,255,7,192,31,240,63,248,127,252,123,156,243,110,235,238, + 251,222,251,190,251,126,96,12,127,252,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,127,252,123,156, + 243,110,235,238,251,222,251,238,251,110,96,156,127,252,63,248, + 31,240,7,192,15,15,30,16,0,255,7,192,31,240,63,248, + 127,252,123,236,243,206,235,174,251,110,251,6,251,238,96,236, + 127,252,63,248,31,240,7,192,15,15,30,16,0,255,7,192, + 31,240,63,248,127,252,123,12,243,126,235,126,251,30,251,238, + 251,110,96,156,127,252,63,248,31,240,7,192,13,13,26,16, + 1,0,15,128,63,224,127,240,119,16,230,248,214,248,246,56, + 246,216,246,216,65,48,127,240,63,224,15,128,13,13,26,16, + 1,0,15,128,63,224,127,240,118,16,231,216,215,216,247,184, + 247,184,247,120,65,112,127,240,63,224,15,128,13,13,26,16, + 1,0,15,128,63,224,127,240,119,48,230,216,214,216,247,56, + 246,216,246,216,65,48,127,240,63,224,15,128,15,15,30,16, + 0,255,7,192,31,240,63,248,127,252,123,156,243,110,235,110, + 251,142,251,238,251,238,96,156,127,252,63,248,31,240,7,192, + 15,15,30,16,0,255,7,192,31,240,63,248,127,252,115,156, + 237,110,253,110,251,110,247,110,239,110,97,156,127,252,63,248, + 31,240,7,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,15,15,30,16, + 0,255,7,192,31,240,63,248,126,252,125,124,251,190,251,190, + 251,190,251,190,251,190,125,124,126,252,63,248,31,240,7,192 + }; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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_FONT_SECTION("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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[2540] U8G_FONT_SECTION("u8g_font_unifont_76") = { + 0,16,16,0,254,10,2,62,4,228,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,13,12,24,16, + 1,0,0,8,3,144,71,208,143,208,159,208,255,176,127,184, + 31,200,15,200,7,200,3,136,0,16,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,16,16, + 32,16,0,254,7,224,24,24,36,36,92,58,92,58,190,125, + 190,125,190,125,129,129,129,129,131,193,67,194,71,226,35,196, + 24,24,7,224,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,96,48,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,16,16,32,16,0,254,7,224,24,24, + 32,4,64,2,64,2,156,49,190,49,255,3,231,131,231,199, + 255,255,127,254,127,254,63,252,31,248,7,224,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,8,10,10,8,0,0,49,78,132,8,16, + 60,98,162,162,28,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,192,5,32,10,152,18,72,10,208,4,48,48,4,72,10, + 140,17,80,9,160,5,174,38,82,88,82,134,30,92,0,32, + 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,192,5,224,14,248,30,120,14,240, + 4,48,48,4,120,14,252,31,112,15,224,7,238,38,94,120, + 94,254,30,124,0,32,16,16,32,16,0,254,7,224,31,248, + 62,124,125,190,123,222,255,143,247,223,231,255,243,239,247,239, + 239,247,111,182,113,14,63,188,31,248,7,224,16,16,32,16, + 0,254,7,224,24,24,33,132,66,66,68,34,128,113,136,33, + 152,1,140,17,136,17,144,9,80,74,78,242,32,68,24,24, + 7,224,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[1657] U8G_FONT_SECTION("u8g_font_unifont_77") = { + 0,16,16,0,254,11,3,133,6,29,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,16,16,32,16,0, + 254,1,128,2,64,2,64,116,46,142,113,133,161,78,114,53, + 172,53,172,78,114,133,161,142,113,116,46,2,64,2,64,1, + 128,15,16,32,16,0,254,1,0,2,128,4,64,52,88,76, + 100,132,66,178,154,202,166,26,176,16,16,27,176,10,160,58, + 184,38,200,25,48,1,0,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,12,15,30,16,2, + 255,192,0,48,0,12,0,3,0,0,192,0,48,0,0,255, + 240,0,0,0,48,0,192,3,0,12,0,48,0,192,0,12, + 15,30,16,2,255,0,48,0,192,3,0,12,0,48,0,192, + 0,0,0,255,240,0,0,192,0,48,0,12,0,3,0,0, + 192,0,48,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,6,8,8,8,1,0,252,132,132, + 132,148,252,64,252,13,13,26,16,0,255,7,0,28,192,60, + 224,92,240,64,16,135,8,143,136,231,56,112,112,96,48,39, + 32,31,192,7,0,13,13,26,16,0,255,7,0,24,192,48, + 96,72,144,64,16,133,8,128,8,133,8,64,16,72,144,48, + 96,24,192,7,0,13,13,26,16,1,255,255,248,128,8,135, + 8,136,136,136,136,135,8,130,8,130,8,130,8,131,136,130, + 8,128,8,255,248,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 15, '1' Height: 13 + Calculated Max Values w=16 h=16 x= 7 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 =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[7084] U8G_FONT_SECTION("u8g_font_unifont_78_79") = { + 0,16,16,0,254,15,8,41,11,207,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,12,248,56,216,112,254,224,127,192,7,128,127, + 192,254,224,216,112,248,56,112,12,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,14,11,22,16,1,255,0,8,0,20,0,36,0,72,64, + 144,161,32,162,64,84,128,73,0,34,0,28,0,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,13,11,22,16,1, + 255,6,192,25,32,41,32,107,240,170,8,169,200,169,136,110, + 8,80,16,32,32,31,192,14,13,26,16,1,0,21,0,42, + 128,42,128,106,128,170,128,170,152,170,164,128,68,128,8,128, + 16,64,32,32,32,31,192,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,1,0,2,128,255,254,68, + 68,40,40,40,40,16,16,40,40,40,40,68,68,255,254,2, + 128,1,0,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,14,14,28, + 16,1,255,8,0,8,0,20,0,34,0,193,128,34,32,20, + 32,8,80,9,140,0,80,0,32,2,32,5,0,2,0,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,11,11,22,16,2, + 1,96,192,241,224,123,192,63,128,31,0,31,0,63,128,123, + 192,241,224,224,224,64,64,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,13,13,26,16,0,0,255,248,223, + 216,143,136,199,24,226,56,240,120,248,248,240,120,226,56,199, + 24,143,136,223,216,255,248,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,9, + 15,30,16,3,254,28,0,127,0,243,128,193,128,199,128,15, + 0,28,0,24,0,24,0,24,0,0,0,24,0,60,0,60, + 0,24,0,9,16,32,16,3,254,62,0,65,0,156,128,162, + 128,66,128,4,128,9,0,18,0,20,0,20,0,28,0,0, + 0,28,0,34,0,34,0,28,0,7,15,15,16,4,255,56, + 108,198,130,198,68,108,40,40,56,0,56,68,68,56,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,4,14, + 14,16,6,0,96,240,240,240,240,240,240,96,96,96,96,0, + 96,96,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,7,10,10,16,3,0,56,124,254,254,254, + 126,62,6,28,112,15,10,20,16,0,0,56,56,124,124,254, + 254,254,254,254,254,126,126,62,62,6,6,28,28,112,112,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,124,124,123,188,251, + 190,255,190,255,126,254,254,253,254,123,252,120,60,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,124, + 124,123,188,251,190,255,190,254,126,255,190,251,190,123,188,124, + 124,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,127,124,126,124,253,126,251,126,247,126,240,62,255, + 126,127,124,127,124,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,120,60,123,252,251,254,251,254,248, + 126,255,190,255,190,123,188,124,124,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,126,124,125,252,251, + 254,251,254,248,126,251,190,251,190,123,188,124,124,63,248,31, + 240,7,192,15,15,30,16,0,255,7,192,31,240,63,248,120, + 60,127,188,255,190,255,126,255,126,255,126,254,254,126,252,126, + 252,63,248,31,240,7,192,15,15,30,16,0,255,7,192,31, + 240,63,248,124,124,123,188,251,190,251,190,252,126,251,190,251, + 190,123,188,124,124,63,248,31,240,7,192,15,15,30,16,0, + 255,7,192,31,240,63,248,124,124,123,188,251,190,251,190,252, + 62,255,190,255,190,127,124,124,252,63,248,31,240,7,192,15, + 15,30,16,0,255,7,192,31,240,63,248,127,252,123,156,243, + 110,235,110,251,110,251,110,251,110,96,156,127,252,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,11,11,22,16,2,1,14,0,14,0,14,0,14, + 0,255,224,255,224,255,224,14,0,14,0,14,0,14,0,13, + 3,6,16,1,5,255,248,255,248,255,248,13,11,22,16,1, + 1,7,0,7,0,7,0,0,0,255,248,255,248,255,248,0, + 0,7,0,7,0,7,0,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, + 7,6,6,8,1,3,198,56,68,68,68,56,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,16,6,12,16,0,3,227,199,28,56,34,68,34,68, + 34,68,28,56,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, + 8,8,8,16,4,1,1,2,4,8,16,32,64,128,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, + 8,8,8,16,4,1,128,64,32,16,8,4,2,1,13,13, + 26,16,1,0,255,248,130,8,130,8,133,8,133,8,136,136, + 136,136,144,72,144,72,160,40,160,40,192,24,255,248,13,13, + 26,16,1,0,255,248,192,24,160,40,160,40,144,72,144,72, + 136,136,136,136,133,8,133,8,130,8,130,8,255,248,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,0,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,0, + 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,1,3,128,5,72,9,36, + 255,254,9,36,5,72,3,128,15,5,10,16,1,2,32,0, + 64,0,255,254,64,0,32,0,15,5,10,16,0,2,0,8, + 0,4,255,254,0,4,0,8,14,5,10,16,1,2,32,16, + 64,8,255,252,64,8,32,16,15,7,14,16,0,1,16,0, + 32,0,127,254,128,0,127,254,32,0,16,0,15,7,14,16, + 0,1,0,16,0,8,255,252,0,2,255,252,0,8,0,16, + 14,7,14,16,1,1,16,32,32,16,127,248,128,4,127,248, + 32,16,16,32,14,5,10,16,1,2,32,4,64,4,255,252, + 64,4,32,4,14,5,10,16,1,2,128,16,128,8,255,252, + 128,8,128,16,14,7,14,16,1,1,16,4,32,4,127,252, + 128,4,127,252,32,4,16,4,14,7,14,16,1,1,128,32, + 128,16,255,248,128,4,255,248,128,16,128,32,15,5,10,16, + 0,2,0,8,34,36,213,94,8,132,0,8}; +/* + Fontname: -gnu-Unifont-Medium-R-Normal-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + Capital A Height: 11, '1' Height: 5 + Calculated Max Values w=15 h=15 x= 3 y= 4 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= 2 + X Font ascent =11 descent= 0 + Max Font ascent =13 descent=-2 +*/ +#include "u8g.h" +const u8g_fntpgm_uint8_t u8g_font_unifont_86[1858] U8G_FONT_SECTION("u8g_font_unifont_86") = { + 0,16,16,0,254,11,3,31,5,100,32,116,2,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,1,16,32,48,48,95,232,128,4,95, + 232,48,48,16,32,13,7,14,16,1,1,16,0,48,0,127, + 248,255,248,127,248,48,0,16,0,7,12,12,8,0,0,16, + 56,124,254,56,56,56,56,56,56,56,56,7,12,12,8,0, + 0,56,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,1,16,32,48,48,127,248,255,252,127,248,48,48,16, + 32,7,12,12,8,0,0,16,56,124,254,56,56,56,56,254, + 124,56,16,15,5,10,16,0,0,255,248,0,8,0,42,0, + 28,0,8,15,5,10,16,0,4,0,8,0,28,0,42,0, + 8,255,248,15,5,10,16,1,0,63,254,32,0,168,0,112, + 0,32,0,15,5,10,16,1,4,32,0,112,0,168,0,32, + 0,63,254,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,15,5,10,16, + 1,2,33,192,66,32,255,254,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, + 15,5,10,16,1,2,33,192,66,160,255,254,66,160,33,192, + 15,5,10,16,1,2,34,32,69,80,245,94,72,128,32,0, + 15,5,10,16,1,2,40,64,80,64,255,254,80,64,40,64, + 15,5,10,16,1,2,40,160,80,160,255,254,80,160,40,160, + 14,5,10,16,1,2,40,4,80,4,255,252,80,4,40,4, + 14,5,10,16,1,2,40,4,80,8,253,176,80,8,40,4, + 14,5,10,16,1,2,32,0,64,0,213,84,64,0,32,0, + 14,5,10,16,1,2,32,132,64,136,255,240,64,136,32,132, + 14,5,10,16,1,2,33,68,65,72,255,240,65,72,33,68, + 14,5,10,16,1,2,40,4,80,8,255,240,80,8,40,4, + 14,5,10,16,1,2,40,132,80,136,255,240,80,136,40,132, + 14,5,10,16,1,2,41,68,81,72,255,240,81,72,41,68, + 15,5,10,16,1,2,40,144,80,96,255,254,80,96,40,144, + 15,5,10,16,1,2,32,120,64,132,255,2,64,0,32,0, + 15,7,14,16,1,2,3,240,0,0,35,240,64,0,255,254, + 64,0,32,0,15,7,14,16,1,2,0,56,4,68,35,128, + 64,0,255,254,64,0,32,0,15,9,18,16,1,254,32,0, + 64,0,255,254,64,56,36,68,3,128,0,56,4,68,3,128, + 14,9,18,16,1,0,224,0,24,0,6,16,1,8,31,252, + 1,8,6,16,24,0,224,0,14,11,22,16,1,255,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,255,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,255,0,64,0,32,255,240,0,8,255,252, + 0,2,255,252,0,8,255,240,0,32,0,64,15,7,14,16, + 0,2,3,128,68,64,56,8,0,4,255,254,0,4,0,8, + 15,9,18,16,0,254,0,8,0,4,255,254,3,132,68,72, + 56,0,3,128,68,64,56,0,15,7,14,16,1,2,3,128, + 4,68,32,56,64,0,255,254,64,0,32,0,15,9,18,16, + 1,254,32,0,64,0,255,254,67,128,36,68,0,56,3,128, + 4,68,0,56,15,7,14,16,1,0,32,0,64,0,255,254, + 64,0,32,56,4,68,3,128,15,7,14,16,0,0,0,8, + 0,4,255,254,0,4,3,136,68,64,56,0,10,12,24,16, + 3,0,4,0,8,0,16,0,32,0,64,0,255,192,0,128, + 1,0,2,0,20,0,24,0,28,0,4,6,6,8,2,0, + 112,48,80,64,128,128,4,6,6,8,2,0,128,128,64,80, + 48,112,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[4279] U8G_FONT_SECTION("u8g_font_unifont_8_9") = { + 0,16,16,0,254,8,4,67,6,64,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,12, + 12,8,1,254,130,130,130,130,130,130,130,130,130,254,16,16, + 6,10,10,8,1,0,48,72,72,132,132,252,132,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,140,144,144,160,160, + 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,184,196,132,132,132,132,196, + 184,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, + 13,13,8,1,254,16,16,16,124,146,146,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,7,13,13,8,0,254,64,240,64,92,98,66, + 66,66,66,66,66,2,12,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,7,11,11,8,0,0,64,240,64,92, + 98,66,66,66,66,66,66,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,136,248,32,32, + 7,10,10,8,1,0,146,146,146,146,146,146,146,146,180,72, + 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,8,16,0,108,130,130,146,146, + 146,146,108,7,11,11,8,1,0,120,134,48,8,16,0,108, + 130,146,146,108,7,13,13,8,1,0,254,16,0,146,146,146, + 146,146,146,146,146,180,72,7,10,10,8,1,0,254,16,0, + 146,146,146,146,146,180,72,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,112, + 128,96,4,3,3,8,2,10,224,16,96,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,12,12,8,1,255,64,152,164,164,164,164,164,164,164,88, + 48,12,6,9,9,8,1,255,64,152,164,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,16,6,12,12,8,1,254,152,164,164,164,124, + 32,32,36,36,24,16,16,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[5551] U8G_FONT_SECTION("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,30,57,145,64,30,49,145,8,30,113,128,0,0,1,128, + 0,0,1,128,0,85,85,16,16,32,16,0,254,170,170,0, + 1,128,0,0,1,128,0,34,249,162,32,62,33,162,32,34, + 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,32,249,160, + 128,32,249,160,128,62,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,34,249,162,32,34,33,148,32,8,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,62,249,160,128,62,249,160, + 128,32,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,30, + 241,160,136,32,241,160,144,30,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,30,113,160,136,28,137,130,136,60,113,128, + 0,0,1,128,0,0,1,128,0,85,85,16,16,32,16,0, + 254,170,170,0,1,128,0,0,1,128,0,30,249,160,32,28, + 33,130,32,60,249,128,0,0,1,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,29,165,16,37,29,165,16,57,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,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,62,137,160,216,62,169,160,136,62, + 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,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,30,113,144,128,30,97,144, + 16,16,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,14, + 113,144,128,22,97,146,16,14,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,28,113,146,128,28,97,148,16,18,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,18,113,146,128,18, + 97,146,16,12,225,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,40,48,82,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,4,1,1,8,2,4,240,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,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,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,32,248,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,37,221,164,132,60,133,164,132,36,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,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,34,137,182,136,42, + 169,162,216,34,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,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,28,137,146,216,28,169,144,136,16,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,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,16, + 16,32,16,0,254,170,170,0,1,128,0,58,99,194,84,51, + 201,138,72,114,73,128,0,0,1,128,0,3,193,128,0,0, + 1,128,0,85,85,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,8,10,10,8,0,254,66,66, + 66,66,66,66,102,89,64,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, + 144,176,136,132,132,164,152,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-Sans-16-160-75-75-c-80-iso10646-1 + Copyright: Copyright (C) 2014 Roman Czyborra, Paul Hardy, Qianqian Fang, Andrew Miller, et al. Licensed under the GNU General Public License; either version 2, or (at your option) a later version, with the GNU Font Embedding Exception. + 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[1485] U8G_FONT_SECTION("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,40,48,82,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,4,1,1,8,2,4,240,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,11,11,8,1,0,128,128, + 128,136,144,160,192,160,144,136,132,5,11,11,8,2,0,96, + 32,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,32,248,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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_line.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_line.c new file mode 100644 index 000000000..30b309723 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c new file mode 100644 index 000000000..856d77437 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_ll_api.c @@ -0,0 +1,573 @@ +/* + + 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); +} + +void u8g_Draw4TPixelLL(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_4TPIXEL, 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) +{ + 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; + +#if defined(U8G_WITH_PINLIST) + { + uint8_t i; + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_NONE; + } +#endif + + 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); +} + +/* special init for pure ARM systems */ +uint8_t u8g_InitComFn(u8g_t *u8g, u8g_dev_t *dev, u8g_com_fnptr com_fn) +{ + u8g_init_data(u8g); + +#if defined(U8G_WITH_PINLIST) + { + uint8_t i; + for( i = 0; i < U8G_PIN_LIST_LEN; i++ ) + u8g->pin_list[i] = U8G_PIN_DUMMY; + } +#endif + + u8g->dev = dev; + + /* replace the device procedure with a custom communication procedure */ + u8g->dev->com_fn = com_fn; + + /* 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); +} + + +#if defined(U8G_WITH_PINLIST) +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); +} +#endif /* defined(U8G_WITH_PINLIST) */ + +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); +} + +void u8g_Draw4TPixel(u8g_t *u8g, u8g_uint_t x, u8g_uint_t y, uint8_t dir, uint8_t pixel) +{ + u8g_Draw4TPixelLL(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 + +/* + idx: index for the palette entry (0..255) + r: value for red (0..255) + g: value for green (0..255) + b: value for blue (0..255) +*/ +void u8g_SetColorEntry(u8g_t *u8g, uint8_t idx, uint8_t r, uint8_t g, uint8_t b) +{ + u8g_dev_arg_irgb_t irgb; + irgb.idx = idx; + irgb.r = r; + irgb.g = g; + irgb.b = b; + u8g_call_dev_fn(u8g, u8g->dev, U8G_DEV_MSG_SET_COLOR_ENTRY, &irgb); +} + +void u8g_SetColorIndex(u8g_t *u8g, uint8_t idx) +{ + u8g->arg_pixel.color = idx; + /*u8g->color_index = idx; */ /* must be removed */ +} + +void u8g_SetHiColor(u8g_t *u8g, uint16_t rgb) +{ + u8g->arg_pixel.color = rgb&255; + u8g->arg_pixel.hi_color = rgb>>8; + /*u8g->color_index = idx; */ /* must be removed */ +} + +void u8g_SetHiColorByRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b) +{ + + r &= ~7; + g >>= 2; + b >>= 3; + u8g->arg_pixel.color = b; + u8g->arg_pixel.color |= (g & 7) << 5; + u8g->arg_pixel.hi_color = r; + u8g->arg_pixel.hi_color |= (g>>3) & 7; + + //u8g_SetHiColor(u8g, U8G_GET_HICOLOR_BY_RGB(r,g,b)); +} + +void u8g_SetRGB(u8g_t *u8g, uint8_t r, uint8_t g, uint8_t b) +{ + if ( u8g->mode == U8G_MODE_R3G3B2 ) + { + r &= 0x0e0; + g &= 0x0e0; + g >>= 3; + b >>= 6; + u8g->arg_pixel.color = r | g | b; + } + else if ( u8g->mode == U8G_MODE_HICOLOR ) + { + u8g_SetHiColorByRGB(u8g, r,g,b); + } + else + { + u8g->arg_pixel.color = r; + u8g->arg_pixel.hi_color = g; + u8g->arg_pixel.blue = b; + } +} + + +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) +{ + if ( u8g->mode == U8G_MODE_HICOLOR ) + { + u8g->arg_pixel.color = 0x0ff; + u8g->arg_pixel.hi_color = 0x0ff; + } + else + { + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_page.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_page.c new file mode 100644 index 000000000..1a3eb21ed --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb.c new file mode 100644 index 000000000..a94647361 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb14v1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb14v1.c new file mode 100644 index 000000000..d8667f35a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h1.c new file mode 100644 index 000000000..d598633fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c new file mode 100644 index 000000000..2d0523cf8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16h2.c @@ -0,0 +1,208 @@ +/* + + 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, uint8_t is_or) U8G_NOINLINE; +static void u8g_pb16h2_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t color_index, uint8_t is_or) +{ + 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; + if ( is_or == 0 ) + { + mask = 3; + mask <<= tmp; + mask = ~mask; + *ptr &= mask; + } + color_index &= 3; + color_index <<= tmp; + *ptr |= color_index; +} + + +void u8g_pb16h2_SetPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel, uint8_t is_or) +{ + 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, is_or); +} + + +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, 0); + } + 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_pb16h2_Or4PixelStd(u8g_pb_t *b, u8g_dev_arg_pixel_t *arg_pixel) +{ + register uint8_t pixel = arg_pixel->pixel; + do + { + arg_pixel->color = pixel & 0x0c0; + arg_pixel->color >>= 6; + u8g_pb16h2_SetPixel(b, arg_pixel, 1); + 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 <<= 2; + } 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, 0); + break; + case U8G_DEV_MSG_SET_4TPIXEL: + u8g_pb16h2_Or4PixelStd(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_TPIXEL: + u8g_pb16h2_SetPixel(pb, (u8g_dev_arg_pixel_t *)arg, 1); + 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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v1.c new file mode 100644 index 000000000..3716411c1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v2.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb16v2.c new file mode 100644 index 000000000..94ef7e28a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb32h1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb32h1.c new file mode 100644 index 000000000..d40f7ce57 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1.c new file mode 100644 index 000000000..80dc99b58 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1f.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h1f.c new file mode 100644 index 000000000..c7be1fe10 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h2.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h2.c new file mode 100644 index 000000000..aad6e4275 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c new file mode 100644 index 000000000..49dbb8616 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8h8.c @@ -0,0 +1,185 @@ +/* + + u8g_pb8h8.c + + 8 lines per page, horizontal, 8 bits per pixel + (22 May 2013: might also support any number of lines --> needs to be checked) + + 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; + end_ptr += b->width*cnt; + /* + 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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v1.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v1.c new file mode 100644 index 000000000..28ac4e0ea --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v2.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pb8v2.c new file mode 100644 index 000000000..c8e8926b1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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_ENTRY: + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh16.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh16.c new file mode 100644 index 000000000..9e3455346 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh16.c @@ -0,0 +1,184 @@ +/* + + u8g_pbxh16.c + + x lines per page, horizontal, 16 bits per pixel (hi color modes) + + 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. + + +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_xh16_buf[2*WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_xh16_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_xh16_buf}; +u8g_dev_t name = { dev_fn, &u8g_index_color_xh16_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*2; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pbxh16_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pbxh16_Clear(b); +} + +static void u8g_pbxh16_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t low, uint8_t high) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp <<= 1; + ptr += tmp; + *ptr = low; + ptr++; + *ptr = high; +} + +void u8g_pbxh16_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_pbxh16_set_pixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color, arg_pixel->hi_color); +} + + +void u8g_pbxh16_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_pbxh16_SetPixel(b, arg_pixel); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pbxh16_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_pbxh16_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pbxh16_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_pbxh16_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pbxh16_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_ENTRY: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_HICOLOR; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh24.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh24.c new file mode 100644 index 000000000..61ed011a1 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_pbxh24.c @@ -0,0 +1,287 @@ +/* + + u8g_pbxh24.c + + x lines per page, horizontal, 24 bits per pixel (true color modes) + + 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. + + +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_xh16_buf[2*WIDTH*PAGE_HEIGHT] U8G_NOCOMMON ; +u8g_pb_t u8g_index_color_xh16_pb = { {PAGE_HEIGHT, HEIGHT, 0, 0, 0}, WIDTH, u8g_index_color_xh16_buf}; +u8g_dev_t name = { dev_fn, &u8g_index_color_xh16_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*3; + cnt--; + } while( cnt > 0 ); + do + { + *ptr++ = 0; + } while( ptr != end_ptr ); +} + + +void u8g_pbxh24_Init(u8g_pb_t *b, void *buf, u8g_uint_t width) +{ + b->buf = buf; + b->width = width; + u8g_pbxh24_Clear(b); +} + +#ifdef OBSOLETE +static void u8g_pbxh24_set_pixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t r, uint8_t g, uint8_t b) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp *= 3; + ptr += tmp; + *ptr = r; + ptr++; + *ptr = g; + ptr++; + *ptr = b; +} +#endif + +/* + intensity + 0..3 intensity value + 4 replace color +*/ +static void u8g_pbxh24_set_tpixel(u8g_pb_t *b, u8g_uint_t x, u8g_uint_t y, uint8_t red, uint8_t green, uint8_t blue, uint8_t intensity) +{ + uint16_t tmp; + uint8_t *ptr = b->buf; + + if ( intensity == 0 ) + return; + + y -= b->p.page_y0; + tmp = y; + tmp *= b->width; + tmp += x; + tmp *= 3; + ptr += tmp; + + if ( intensity == 4 ) + { + *ptr = red; + ptr++; + *ptr = green; + ptr++; + *ptr = blue; + return; + } + + if ( intensity == 2 ) + { + /* + red = red/4 + red/2; + green = green/4 + green/2; + blue = blue/4 + blue/2; + */ + red >>= 1; + green >>= 1; + blue >>= 1; + } + else if ( intensity == 1 ) + { + red >>= 2; + green >>= 2; + blue >>= 2; + } + + if ( *ptr >= 255-red ) *ptr = 255; + else *ptr += red; + ptr++; + + if ( *ptr >= 255-green ) *ptr = 255; + else *ptr += green; + ptr++; + + if ( *ptr >= 255-blue ) *ptr = 255; + else *ptr += blue; + + /* + if ( *ptr < red ) *ptr = red; + ptr++; + if ( *ptr < green ) *ptr = green; + ptr++; + if ( *ptr < blue ) *ptr = blue; + */ + + +} + +void u8g_pbxh24_SetTPixel(u8g_pb_t *b, const u8g_dev_arg_pixel_t * const arg_pixel, uint8_t intensity) +{ + 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_pbxh24_set_tpixel(b, arg_pixel->x, arg_pixel->y, arg_pixel->color, arg_pixel->hi_color, arg_pixel->blue, intensity); +} + + +void u8g_pbxh24_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_pbxh24_SetTPixel(b, arg_pixel, 4); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 1; + } while( pixel != 0 ); +} + +void u8g_pbxh24_Set4TPixel(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 + { + u8g_pbxh24_SetTPixel(b, arg_pixel, pixel >> 6); + arg_pixel->x += dx; + arg_pixel->y += dy; + pixel <<= 2; + } while( pixel != 0 ); +} + + +uint8_t u8g_dev_pbxh24_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_pbxh24_Set8Pixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_PIXEL: + u8g_pbxh24_SetTPixel(pb, (u8g_dev_arg_pixel_t *)arg, 4); + break; + case U8G_DEV_MSG_SET_4TPIXEL: + u8g_pbxh24_Set4TPixel(pb, (u8g_dev_arg_pixel_t *)arg); + break; + case U8G_DEV_MSG_SET_TPIXEL: + u8g_pbxh24_SetTPixel(pb, (u8g_dev_arg_pixel_t *)arg, ((u8g_dev_arg_pixel_t *)arg)->pixel&3); + break; + case U8G_DEV_MSG_INIT: + break; + case U8G_DEV_MSG_STOP: + break; + case U8G_DEV_MSG_PAGE_FIRST: + u8g_pbxh24_Clear(pb); + u8g_page_First(&(pb->p)); + break; + case U8G_DEV_MSG_PAGE_NEXT: + if ( u8g_page_Next(&(pb->p)) == 0 ) + return 0; + u8g_pbxh24_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_ENTRY: + break; + case U8G_DEV_MSG_SET_XY_CB: + break; + case U8G_DEV_MSG_GET_MODE: + return U8G_MODE_TRUECOLOR; + } + return 1; +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_polygon.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_polygon.c new file mode 100644 index 000000000..f7e9b6596 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_polygon.c @@ -0,0 +1,334 @@ +/* + + u8g_polygon.c + + Implementation of a polygon draw algorithm for "convex" polygons. + + 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. + + See also: + http://www.angelfire.com/linux/myp/ConvexPolRas/ConvexPolRas.html + Computer Graphics, Principles and Practice, Foley, van Dam, Feiner, Hughes (pp 92) + Michael Abrash's Graphics Programming Black Book, Special Edition (Chapter 38 and 39) + + Optimized for embedded systems + - static memory usage only + - consistent data types + - low flash ROM consumption + +*/ + + +#include "u8g.h" + + + + +/*===========================================*/ +/* procedures, which should not be inlined (save as much flash ROM as possible */ + +static uint8_t pge_Next(struct pg_edge_struct *pge) PG_NOINLINE; +static uint8_t pg_inc(pg_struct *pg, uint8_t i) PG_NOINLINE; +static uint8_t pg_dec(pg_struct *pg, uint8_t i) PG_NOINLINE; +static void pg_expand_min_y(pg_struct *pg, pg_word_t min_y, uint8_t pge_idx) PG_NOINLINE; +static void pg_line_init(pg_struct * const pg, uint8_t pge_index) PG_NOINLINE; + +/*===========================================*/ +/* line draw algorithm */ + +static uint8_t pge_Next(struct pg_edge_struct *pge) +{ + if ( pge->current_y >= pge->max_y ) + return 0; + + pge->current_x += pge->current_x_offset; + pge->error += pge->error_offset; + if ( pge->error > 0 ) + { + pge->current_x += pge->x_direction; + pge->error -= pge->height; + } + + pge->current_y++; + return 1; +} + +/* assumes y2 > y1 */ +static void pge_Init(struct pg_edge_struct *pge, pg_word_t x1, pg_word_t y1, pg_word_t x2, pg_word_t y2) +{ + pg_word_t dx = x2 - x1; + pg_word_t width; + + pge->height = y2 - y1; + pge->max_y = y2; + pge->current_y = y1; + pge->current_x = x1; + + if ( dx >= 0 ) + { + pge->x_direction = 1; + width = dx; + pge->error = 0; + } + else + { + pge->x_direction = -1; + width = -dx; + pge->error = 1 - pge->height; + } + + pge->current_x_offset = dx / pge->height; + pge->error_offset = width % pge->height; +} + +/*===========================================*/ +/* convex polygon algorithm */ + +static uint8_t pg_inc(pg_struct *pg, uint8_t i) +{ + i++; + if ( i >= pg->cnt ) + i = 0; + return i; +} + +static uint8_t pg_dec(pg_struct *pg, uint8_t i) +{ + i--; + if ( i >= pg->cnt ) + i = pg->cnt-1; + return i; +} + +static void pg_expand_min_y(pg_struct *pg, pg_word_t min_y, uint8_t pge_idx) +{ + uint8_t i = pg->pge[pge_idx].curr_idx; + for(;;) + { + i = pg->pge[pge_idx].next_idx_fn(pg, i); + if ( pg->list[i].y != min_y ) + break; + pg->pge[pge_idx].curr_idx = i; + } +} + +static uint8_t pg_prepare(pg_struct *pg) +{ + pg_word_t max_y; + pg_word_t min_y; + uint8_t i; + + /* setup the next index procedures */ + pg->pge[PG_RIGHT].next_idx_fn = pg_inc; + pg->pge[PG_LEFT].next_idx_fn = pg_dec; + + /* search for highest and lowest point */ + max_y = pg->list[0].y; + min_y = pg->list[0].y; + pg->pge[PG_LEFT].curr_idx = 0; + for( i = 1; i < pg->cnt; i++ ) + { + if ( max_y < pg->list[i].y ) + { + max_y = pg->list[i].y; + } + if ( min_y > pg->list[i].y ) + { + pg->pge[PG_LEFT].curr_idx = i; + min_y = pg->list[i].y; + } + } + + /* calculate total number of scan lines */ + pg->total_scan_line_cnt = max_y; + pg->total_scan_line_cnt -= min_y; + + /* exit if polygon height is zero */ + if ( pg->total_scan_line_cnt == 0 ) + return 0; + + /* if the minimum y side is flat, try to find the lowest and highest x points */ + pg->pge[PG_RIGHT].curr_idx = pg->pge[PG_LEFT].curr_idx; + pg_expand_min_y(pg, min_y, PG_RIGHT); + pg_expand_min_y(pg, min_y, PG_LEFT); + + /* check if the min side is really flat (depends on the x values) */ + pg->is_min_y_not_flat = 1; + if ( pg->list[pg->pge[PG_LEFT].curr_idx].x != pg->list[pg->pge[PG_RIGHT].curr_idx].x ) + { + pg->is_min_y_not_flat = 0; + } + else + { + pg->total_scan_line_cnt--; + if ( pg->total_scan_line_cnt == 0 ) + return 0; + } + + return 1; +} + +static void pg_hline(pg_struct *pg, u8g_t *u8g) +{ + pg_word_t x1, x2, y; + x1 = pg->pge[PG_LEFT].current_x; + x2 = pg->pge[PG_RIGHT].current_x; + y = pg->pge[PG_RIGHT].current_y; + + if ( y < 0 ) + return; + if ( y >= u8g_GetHeight(u8g) ) + return; + if ( x1 < x2 ) + { + if ( x2 < 0 ) + return; + if ( x1 >= u8g_GetWidth(u8g) ) + return; + if ( x1 < 0 ) + x1 = 0; + if ( x2 >= u8g_GetWidth(u8g) ) + x2 = u8g_GetWidth(u8g); + u8g_DrawHLine(u8g, x1, y, x2 - x1); + } + else + { + if ( x1 < 0 ) + return; + if ( x2 >= u8g_GetWidth(u8g) ) + return; + if ( x2 < 0 ) + x1 = 0; + if ( x1 >= u8g_GetWidth(u8g) ) + x1 = u8g_GetWidth(u8g); + u8g_DrawHLine(u8g, x2, y, x1 - x2); + } +} + +static void pg_line_init(pg_struct * pg, uint8_t pge_index) +{ + struct pg_edge_struct *pge = pg->pge+pge_index; + uint8_t idx; + pg_word_t x1; + pg_word_t y1; + pg_word_t x2; + pg_word_t y2; + + idx = pge->curr_idx; + y1 = pg->list[idx].y; + x1 = pg->list[idx].x; + idx = pge->next_idx_fn(pg, idx); + y2 = pg->list[idx].y; + x2 = pg->list[idx].x; + pge->curr_idx = idx; + + pge_Init(pge, x1, y1, x2, y2); +} + +static void pg_exec(pg_struct *pg, u8g_t *u8g) +{ + pg_word_t i = pg->total_scan_line_cnt; + + /* first line is skipped if the min y line is not flat */ + pg_line_init(pg, PG_LEFT); + pg_line_init(pg, PG_RIGHT); + + if ( pg->is_min_y_not_flat != 0 ) + { + pge_Next(&(pg->pge[PG_LEFT])); + pge_Next(&(pg->pge[PG_RIGHT])); + } + + do + { + pg_hline(pg, u8g); + while ( pge_Next(&(pg->pge[PG_LEFT])) == 0 ) + { + pg_line_init(pg, PG_LEFT); + } + while ( pge_Next(&(pg->pge[PG_RIGHT])) == 0 ) + { + pg_line_init(pg, PG_RIGHT); + } + i--; + } while( i > 0 ); +} + +/*===========================================*/ +/* API procedures */ + +void pg_ClearPolygonXY(pg_struct *pg) +{ + pg->cnt = 0; +} + +void pg_AddPolygonXY(pg_struct *pg, u8g_t *u8g, int16_t x, int16_t y) +{ + if ( pg->cnt < PG_MAX_POINTS ) + { + pg->list[pg->cnt].x = x; + pg->list[pg->cnt].y = y; + pg->cnt++; + } +} + +void pg_DrawPolygon(pg_struct *pg, u8g_t *u8g) +{ + if ( pg_prepare(pg) == 0 ) + return; + pg_exec(pg, u8g); +} + +pg_struct u8g_pg; + +void u8g_ClearPolygonXY(void) +{ + pg_ClearPolygonXY(&u8g_pg); +} + +void u8g_AddPolygonXY(u8g_t *u8g, int16_t x, int16_t y) +{ + pg_AddPolygonXY(&u8g_pg, u8g, x, y); +} + +void u8g_DrawPolygon(u8g_t *u8g) +{ + pg_DrawPolygon(&u8g_pg, u8g); +} + +void u8g_DrawTriangle(u8g_t *u8g, int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2) +{ + u8g_ClearPolygonXY(); + u8g_AddPolygonXY(u8g, x0, y0); + u8g_AddPolygonXY(u8g, x1, y1); + u8g_AddPolygonXY(u8g, x2, y2); + u8g_DrawPolygon(u8g); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rect.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rect.c new file mode 100644 index 000000000..139a43a24 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c new file mode 100644 index 000000000..3791675b6 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_rot.c @@ -0,0 +1,409 @@ +/* + + 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); + +uint8_t u8g_dev_rot_dummy_fn(void *u8g, void *dev, uint8_t msg, void *arg) +{ + return 0; +} + +u8g_dev_t u8g_dev_rot = { u8g_dev_rot_dummy_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_ENTRY: + 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: + case U8G_DEV_MSG_SET_TPIXEL: + { + 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: + case U8G_DEV_MSG_SET_4TPIXEL: + { + 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_ENTRY: + 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: + case U8G_DEV_MSG_SET_TPIXEL: + { + 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: + case U8G_DEV_MSG_SET_4TPIXEL: + { + 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_ENTRY: + 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: + case U8G_DEV_MSG_SET_TPIXEL: + { + 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: + case U8G_DEV_MSG_SET_4TPIXEL: + { + 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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_scale.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_scale.c new file mode 100644 index 000000000..e5b4b634f --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c new file mode 100644 index 000000000..9573c8bf3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_state.c @@ -0,0 +1,158 @@ +/* + + 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); +} + + +/*===============================================================*/ +/* register variable for restoring interrupt state */ + +#if defined(__AVR__) +uint8_t global_SREG_backup; +#endif + + + +/*===============================================================*/ +/* 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_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; + } +} + +#elif defined (U8G_RASPBERRY_PI) + +#include + +void u8g_backup_spi(uint8_t msg) { + printf("u8g_backup_spi %d\r\n",msg); +} + +#elif defined(ARDUINO) && defined(__SAM3X8E__) // Arduino Due, maybe we should better check for __SAM3X8E__ + +#include "sam.h" + +struct sam_backup_struct +{ + uint32_t mr; + uint32_t sr; + uint32_t csr[4]; +} sam_backup[2]; + +void u8g_backup_spi(uint8_t msg) +{ + uint8_t idx = U8G_STATE_MSG_GET_IDX(msg); + if ( U8G_STATE_MSG_IS_BACKUP(msg) ) + { + sam_backup[idx].mr = SPI0->SPI_MR; + sam_backup[idx].sr = SPI0->SPI_SR; + sam_backup[idx].csr[0] = SPI0->SPI_CSR[0]; + sam_backup[idx].csr[1] = SPI0->SPI_CSR[1]; + sam_backup[idx].csr[2] = SPI0->SPI_CSR[2]; + sam_backup[idx].csr[3] = SPI0->SPI_CSR[3]; + } + else + { + SPI0->SPI_MR = sam_backup[idx].mr; + SPI0->SPI_CSR[0] = sam_backup[idx].csr[0]; + SPI0->SPI_CSR[1] = sam_backup[idx].csr[1]; + SPI0->SPI_CSR[2] = sam_backup[idx].csr[2]; + SPI0->SPI_CSR[3] = sam_backup[idx].csr[3]; + } +} + +#else + +void u8g_backup_spi(uint8_t msg) +{ +} + +#endif + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u16toa.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u16toa.c new file mode 100644 index 000000000..f1d1803cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u8toa.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_u8toa.c new file mode 100644 index 000000000..f3a2c06fa --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_virtual_screen.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/U8glib/utility/u8g_virtual_screen.c new file mode 100644 index 000000000..8000506b4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/libraries/Wire/Wire.cpp b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/Wire.cpp new file mode 100644 index 000000000..553add782 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/Wire.cpp @@ -0,0 +1,303 @@ +/* + TwoWire.cpp - TWI/I2C library for Wiring & Arduino + 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 2012 by Todd Krein (todd@krein.org) to implement repeated starts +*/ + +extern "C" { + #include + #include + #include + #include "twi.h" +} + +#include "Wire.h" + +// Initialize Class Variables ////////////////////////////////////////////////// + +uint8_t TwoWire::rxBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::rxBufferIndex = 0; +uint8_t TwoWire::rxBufferLength = 0; + +uint8_t TwoWire::txAddress = 0; +uint8_t TwoWire::txBuffer[BUFFER_LENGTH]; +uint8_t TwoWire::txBufferIndex = 0; +uint8_t TwoWire::txBufferLength = 0; + +uint8_t TwoWire::transmitting = 0; +void (*TwoWire::user_onRequest)(void); +void (*TwoWire::user_onReceive)(int); + +// Constructors //////////////////////////////////////////////////////////////// + +TwoWire::TwoWire() +{ +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void TwoWire::begin(void) +{ + rxBufferIndex = 0; + rxBufferLength = 0; + + txBufferIndex = 0; + txBufferLength = 0; + + twi_init(); +} + +void TwoWire::begin(uint8_t address) +{ + twi_setAddress(address); + twi_attachSlaveTxEvent(onRequestService); + twi_attachSlaveRxEvent(onReceiveService); + begin(); +} + +void TwoWire::begin(int address) +{ + begin((uint8_t)address); +} + +void TwoWire::setClock(uint32_t frequency) +{ + TWBR = ((F_CPU / frequency) - 16) / 2; +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, uint8_t sendStop) +{ + // clamp to buffer length + if(quantity > BUFFER_LENGTH){ + quantity = BUFFER_LENGTH; + } + // perform blocking read into buffer + uint8_t read = twi_readFrom(address, rxBuffer, quantity, sendStop); + // set rx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = read; + + return read; +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) +{ + return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) +{ + return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) +{ + return requestFrom((uint8_t)address, (uint8_t)quantity, (uint8_t)sendStop); +} + +void TwoWire::beginTransmission(uint8_t address) +{ + // indicate that we are transmitting + transmitting = 1; + // set address of targeted slave + txAddress = address; + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; +} + +void TwoWire::beginTransmission(int address) +{ + beginTransmission((uint8_t)address); +} + +// +// Originally, 'endTransmission' was an f(void) function. +// It has been modified to take one parameter indicating +// whether or not a STOP should be performed on the bus. +// Calling endTransmission(false) allows a sketch to +// perform a repeated start. +// +// WARNING: Nothing in the library keeps track of whether +// the bus tenure has been properly ended with a STOP. It +// is very possible to leave the bus in a hung state if +// no call to endTransmission(true) is made. Some I2C +// devices will behave oddly if they do not see a STOP. +// +uint8_t TwoWire::endTransmission(uint8_t sendStop) +{ + // transmit buffer (blocking) + int8_t ret = twi_writeTo(txAddress, txBuffer, txBufferLength, 1, sendStop); + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + // indicate that we are done transmitting + transmitting = 0; + return ret; +} + +// This provides backwards compatibility with the original +// definition, and expected behaviour, of endTransmission +// +uint8_t TwoWire::endTransmission(void) +{ + return endTransmission(true); +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +size_t TwoWire::write(uint8_t data) +{ + if(transmitting){ + // in master transmitter mode + // don't bother if buffer is full + if(txBufferLength >= BUFFER_LENGTH){ + setWriteError(); + return 0; + } + // put byte in tx buffer + txBuffer[txBufferIndex] = data; + ++txBufferIndex; + // update amount in buffer + txBufferLength = txBufferIndex; + }else{ + // in slave send mode + // reply to master + twi_transmit(&data, 1); + } + return 1; +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +size_t TwoWire::write(const uint8_t *data, size_t quantity) +{ + if(transmitting){ + // in master transmitter mode + for(size_t i = 0; i < quantity; ++i){ + write(data[i]); + } + }else{ + // in slave send mode + // reply to master + twi_transmit(data, quantity); + } + return quantity; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::available(void) +{ + return rxBufferLength - rxBufferIndex; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::read(void) +{ + int value = -1; + + // get each successive byte on each call + if(rxBufferIndex < rxBufferLength){ + value = rxBuffer[rxBufferIndex]; + ++rxBufferIndex; + } + + return value; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::peek(void) +{ + int value = -1; + + if(rxBufferIndex < rxBufferLength){ + value = rxBuffer[rxBufferIndex]; + } + + return value; +} + +void TwoWire::flush(void) +{ + // XXX: to be implemented. +} + +// behind the scenes function that is called when data is received +void TwoWire::onReceiveService(uint8_t* inBytes, int numBytes) +{ + // don't bother if user hasn't registered a callback + if(!user_onReceive){ + return; + } + // don't bother if rx buffer is in use by a master requestFrom() op + // i know this drops data, but it allows for slight stupidity + // meaning, they may not have read all the master requestFrom() data yet + if(rxBufferIndex < rxBufferLength){ + return; + } + // copy twi rx buffer into local read buffer + // this enables new reads to happen in parallel + for(uint8_t i = 0; i < numBytes; ++i){ + rxBuffer[i] = inBytes[i]; + } + // set rx iterator vars + rxBufferIndex = 0; + rxBufferLength = numBytes; + // alert user program + user_onReceive(numBytes); +} + +// behind the scenes function that is called when data is requested +void TwoWire::onRequestService(void) +{ + // don't bother if user hasn't registered a callback + if(!user_onRequest){ + return; + } + // reset tx buffer iterator vars + // !!! this will kill any pending pre-master sendTo() activity + txBufferIndex = 0; + txBufferLength = 0; + // alert user program + user_onRequest(); +} + +// sets function called on slave write +void TwoWire::onReceive( void (*function)(int) ) +{ + user_onReceive = function; +} + +// sets function called on slave read +void TwoWire::onRequest( void (*function)(void) ) +{ + user_onRequest = function; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +TwoWire Wire = TwoWire(); + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/Wire.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/Wire.h new file mode 100644 index 000000000..732bdc314 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/Wire.h @@ -0,0 +1,80 @@ +/* + TwoWire.h - TWI/I2C library for Arduino & 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 2012 by Todd Krein (todd@krein.org) to implement repeated starts +*/ + +#ifndef TwoWire_h +#define TwoWire_h + +#include +#include "Stream.h" + +#define BUFFER_LENGTH 32 + +class TwoWire : public Stream +{ + private: + static uint8_t rxBuffer[]; + static uint8_t rxBufferIndex; + static uint8_t rxBufferLength; + + static uint8_t txAddress; + static uint8_t txBuffer[]; + static uint8_t txBufferIndex; + static uint8_t txBufferLength; + + static uint8_t transmitting; + static void (*user_onRequest)(void); + static void (*user_onReceive)(int); + static void onRequestService(void); + static void onReceiveService(uint8_t*, int); + public: + TwoWire(); + void begin(); + void begin(uint8_t); + void begin(int); + void setClock(uint32_t); + void beginTransmission(uint8_t); + void beginTransmission(int); + uint8_t endTransmission(void); + uint8_t endTransmission(uint8_t); + uint8_t requestFrom(uint8_t, uint8_t); + uint8_t requestFrom(uint8_t, uint8_t, uint8_t); + uint8_t requestFrom(int, int); + uint8_t requestFrom(int, int, int); + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t *, size_t); + virtual int available(void); + virtual int read(void); + virtual int peek(void); + virtual void flush(void); + void onReceive( void (*)(int) ); + void onRequest( void (*)(void) ); + + 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; +}; + +extern TwoWire Wire; + +#endif + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino new file mode 100644 index 000000000..d97a9e3cf --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/SFRRanger_reader/SFRRanger_reader.ino @@ -0,0 +1,87 @@ +// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder +// by Nicholas Zambetti +// and James Tichenor + +// Demonstrates use of the Wire library reading data from the +// Devantech Utrasonic Rangers SFR08 and SFR10 + +// Created 29 April 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial communication at 9600bps +} + +int reading = 0; + +void loop() +{ + // step 1: instruct sensor to read echoes + Wire.beginTransmission(112); // transmit to device #112 (0x70) + // the address specified in the datasheet is 224 (0xE0) + // but i2c adressing uses the high 7 bits so it's 112 + Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) + Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) + // use 0x51 for centimeters + // use 0x52 for ping microseconds + Wire.endTransmission(); // stop transmitting + + // step 2: wait for readings to happen + delay(70); // datasheet suggests at least 65 milliseconds + + // step 3: instruct sensor to return a particular echo reading + Wire.beginTransmission(112); // transmit to device #112 + Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) + Wire.endTransmission(); // stop transmitting + + // step 4: request reading from sensor + Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 + + // step 5: receive reading from sensor + if (2 <= Wire.available()) // if two bytes were received + { + reading = Wire.read(); // receive high byte (overwrites previous reading) + reading = reading << 8; // shift high byte to be high 8 bits + reading |= Wire.read(); // receive low byte as lower 8 bits + Serial.println(reading); // print the reading + } + + delay(250); // wait a bit since people have to read the output :) +} + + +/* + +// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) +// usage: changeAddress(0x70, 0xE6); + +void changeAddress(byte oldAddress, byte newAddress) +{ + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA0)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xAA)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA5)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(newAddress); + Wire.endTransmission(); +} + +*/ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.ino new file mode 100644 index 000000000..4d1580a61 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/digital_potentiometer/digital_potentiometer.ino @@ -0,0 +1,39 @@ +// I2C Digital Potentiometer +// by Nicholas Zambetti +// and Shawn Bonkowski + +// Demonstrates use of the Wire library +// Controls AD5171 digital potentiometer via I2C/TWI + +// Created 31 March 2006 + +// This example code is in the public domain. + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte val = 0; + +void loop() +{ + Wire.beginTransmission(44); // transmit to device #44 (0x2c) + // device address is specified in datasheet + Wire.write(byte(0x00)); // sends instruction byte + Wire.write(val); // sends potentiometer value byte + Wire.endTransmission(); // stop transmitting + + val++; // increment value + if (val == 64) // if reached 64th position (max) + { + val = 0; // start over from lowest value + } + delay(500); +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_reader/master_reader.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_reader/master_reader.ino new file mode 100644 index 000000000..74f0155f8 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_reader/master_reader.ino @@ -0,0 +1,32 @@ +// Wire Master Reader +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Reads data from an I2C/TWI slave device +// Refer to the "Wire Slave Sender" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial for output +} + +void loop() +{ + Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 + + while (Wire.available()) // slave may send less than requested + { + char c = Wire.read(); // receive a byte as character + Serial.print(c); // print the character + } + + delay(500); +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_writer/master_writer.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_writer/master_writer.ino new file mode 100644 index 000000000..482e92237 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/master_writer/master_writer.ino @@ -0,0 +1,31 @@ +// Wire Master Writer +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Writes data to an I2C/TWI slave device +// Refer to the "Wire Slave Receiver" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte x = 0; + +void loop() +{ + Wire.beginTransmission(4); // transmit to device #4 + Wire.write("x is "); // sends five bytes + Wire.write(x); // sends one byte + Wire.endTransmission(); // stop transmitting + + x++; + delay(500); +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_receiver/slave_receiver.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_receiver/slave_receiver.ino new file mode 100644 index 000000000..15eff9a54 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_receiver/slave_receiver.ino @@ -0,0 +1,38 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(4); // join i2c bus with address #4 + Wire.onReceive(receiveEvent); // register event + Serial.begin(9600); // start serial for output +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +void receiveEvent(int howMany) +{ + while (1 < Wire.available()) // loop through all but the last + { + char c = Wire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = Wire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_sender/slave_sender.ino b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_sender/slave_sender.ino new file mode 100644 index 000000000..4437ab152 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/examples/slave_sender/slave_sender.ino @@ -0,0 +1,32 @@ +// Wire Slave Sender +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Sends data as an I2C/TWI slave device +// Refer to the "Wire Master Reader" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(2); // join i2c bus with address #2 + Wire.onRequest(requestEvent); // register event +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is requested by master +// this function is registered as an event, see setup() +void requestEvent() +{ + Wire.write("hello "); // respond with message of 6 bytes + // as expected by master +} diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/keywords.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/keywords.txt new file mode 100644 index 000000000..ff3147592 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/keywords.txt @@ -0,0 +1,32 @@ +####################################### +# Syntax Coloring Map For Wire +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +setClock KEYWORD2 +beginTransmission KEYWORD2 +endTransmission KEYWORD2 +requestFrom KEYWORD2 +send KEYWORD2 +receive KEYWORD2 +onReceive KEYWORD2 +onRequest KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +Wire KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/library.properties b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/library.properties new file mode 100644 index 000000000..3246a7509 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/library.properties @@ -0,0 +1,8 @@ +name=Wire +version=1.0 +author=Arduino +maintainer=Arduino +sentence=Allows the communication between devices or sensors connected via Two Wire Interface Bus. For all Arduino boards, BUT Arduino DUE. +paragraph= +url=http://arduino.cc/en/Reference/Wire +architectures=avr diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.c b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.c new file mode 100644 index 000000000..201d7d1bb --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.c @@ -0,0 +1,527 @@ +/* + twi.c - TWI/I2C library for Wiring & Arduino + 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 2012 by Todd Krein (todd@krein.org) to implement repeated starts +*/ + +#include +#include +#include +#include +#include +#include +#include "Arduino.h" // for digitalWrite + +#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 "pins_arduino.h" +#include "twi.h" + +static volatile uint8_t twi_state; +static volatile uint8_t twi_slarw; +static volatile uint8_t twi_sendStop; // should the transaction end with a stop +static volatile uint8_t twi_inRepStart; // in the middle of a repeated start + +static void (*twi_onSlaveTransmit)(void); +static void (*twi_onSlaveReceive)(uint8_t*, int); + +static uint8_t twi_masterBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_masterBufferIndex; +static volatile uint8_t twi_masterBufferLength; + +static uint8_t twi_txBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_txBufferIndex; +static volatile uint8_t twi_txBufferLength; + +static uint8_t twi_rxBuffer[TWI_BUFFER_LENGTH]; +static volatile uint8_t twi_rxBufferIndex; + +static volatile uint8_t twi_error; + +/* + * Function twi_init + * Desc readys twi pins and sets twi bitrate + * Input none + * Output none + */ +void twi_init(void) +{ + // initialize state + twi_state = TWI_READY; + twi_sendStop = true; // default value + twi_inRepStart = false; + + // activate internal pullups for twi. + digitalWrite(SDA, 1); + digitalWrite(SCL, 1); + + // initialize twi prescaler and bit rate + cbi(TWSR, TWPS0); + cbi(TWSR, TWPS1); + TWBR = ((F_CPU / TWI_FREQ) - 16) / 2; + + /* twi bit rate formula from atmega128 manual pg 204 + SCL Frequency = CPU Clock Frequency / (16 + (2 * TWBR)) + note: TWBR should be 10 or higher for master mode + It is 72 for a 16mhz Wiring board with 100kHz TWI */ + + // enable twi module, acks, and twi interrupt + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA); +} + +/* + * Function twi_slaveInit + * Desc sets slave address and enables interrupt + * Input none + * Output none + */ +void twi_setAddress(uint8_t address) +{ + // set twi slave address (skip over TWGCE bit) + TWAR = address << 1; +} + +/* + * Function twi_readFrom + * Desc attempts to become twi bus master and read a + * series of bytes from a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes to read into array + * sendStop: Boolean indicating whether to send a stop at the end + * Output number of bytes read + */ +uint8_t twi_readFrom(uint8_t address, uint8_t* data, uint8_t length, uint8_t sendStop) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 0; + } + + // wait until twi is ready, become master receiver + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MRX; + twi_sendStop = sendStop; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length-1; // This is not intuitive, read on... + // On receive, the previously configured ACK/NACK setting is transmitted in + // response to the received byte before the interrupt is signalled. + // Therefor we must actually set NACK when the _next_ to last byte is + // received, causing that NACK to be sent in response to receiving the last + // expected byte of data. + + // build sla+w, slave device address + w bit + twi_slarw = TW_READ; + twi_slarw |= address << 1; + + if (true == twi_inRepStart) { + // if we're in the repeated start state, then we've already sent the start, + // (@@@ we hope), and the TWI statemachine is just waiting for the address byte. + // We need to remove ourselves from the repeated start state before we enable interrupts, + // since the ISR is ASYNC, and we could get confused if we hit the ISR before cleaning + // up. Also, don't enable the START interrupt. There may be one pending from the + // repeated start that we sent outselves, and that would really confuse things. + twi_inRepStart = false; // remember, we're dealing with an ASYNC ISR + TWDR = twi_slarw; + TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START + } + else + // send start condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTA); + + // wait for read operation to complete + while(TWI_MRX == twi_state){ + continue; + } + + if (twi_masterBufferIndex < length) + length = twi_masterBufferIndex; + + // copy twi buffer to data + for(i = 0; i < length; ++i){ + data[i] = twi_masterBuffer[i]; + } + + return length; +} + +/* + * Function twi_writeTo + * Desc attempts to become twi bus master and write a + * series of bytes to a device on the bus + * Input address: 7bit i2c device address + * data: pointer to byte array + * length: number of bytes in array + * wait: boolean indicating to wait for write or not + * sendStop: boolean indicating whether or not to send a stop at the end + * Output 0 .. success + * 1 .. length to long for buffer + * 2 .. address send, NACK received + * 3 .. data send, NACK received + * 4 .. other twi error (lost bus arbitration, bus error, ..) + */ +uint8_t twi_writeTo(uint8_t address, uint8_t* data, uint8_t length, uint8_t wait, uint8_t sendStop) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // wait until twi is ready, become master transmitter + while(TWI_READY != twi_state){ + continue; + } + twi_state = TWI_MTX; + twi_sendStop = sendStop; + // reset error state (0xFF.. no error occured) + twi_error = 0xFF; + + // initialize buffer iteration vars + twi_masterBufferIndex = 0; + twi_masterBufferLength = length; + + // copy data to twi buffer + for(i = 0; i < length; ++i){ + twi_masterBuffer[i] = data[i]; + } + + // build sla+w, slave device address + w bit + twi_slarw = TW_WRITE; + twi_slarw |= address << 1; + + // if we're in a repeated start, then we've already sent the START + // in the ISR. Don't do it again. + // + if (true == twi_inRepStart) { + // if we're in the repeated start state, then we've already sent the start, + // (@@@ we hope), and the TWI statemachine is just waiting for the address byte. + // We need to remove ourselves from the repeated start state before we enable interrupts, + // since the ISR is ASYNC, and we could get confused if we hit the ISR before cleaning + // up. Also, don't enable the START interrupt. There may be one pending from the + // repeated start that we sent outselves, and that would really confuse things. + twi_inRepStart = false; // remember, we're dealing with an ASYNC ISR + TWDR = twi_slarw; + TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE); // enable INTs, but not START + } + else + // send start condition + TWCR = _BV(TWINT) | _BV(TWEA) | _BV(TWEN) | _BV(TWIE) | _BV(TWSTA); // enable INTs + + // wait for write operation to complete + while(wait && (TWI_MTX == twi_state)){ + continue; + } + + if (twi_error == 0xFF) + return 0; // success + else if (twi_error == TW_MT_SLA_NACK) + return 2; // error: address send, nack received + else if (twi_error == TW_MT_DATA_NACK) + return 3; // error: data send, nack received + else + return 4; // other twi error +} + +/* + * Function twi_transmit + * Desc fills slave tx buffer with data + * must be called in slave tx event callback + * Input data: pointer to byte array + * length: number of bytes in array + * Output 1 length too long for buffer + * 2 not slave transmitter + * 0 ok + */ +uint8_t twi_transmit(const uint8_t* data, uint8_t length) +{ + uint8_t i; + + // ensure data will fit into buffer + if(TWI_BUFFER_LENGTH < length){ + return 1; + } + + // ensure we are currently a slave transmitter + if(TWI_STX != twi_state){ + return 2; + } + + // set length and copy data into tx buffer + twi_txBufferLength = length; + for(i = 0; i < length; ++i){ + twi_txBuffer[i] = data[i]; + } + + return 0; +} + +/* + * Function twi_attachSlaveRxEvent + * Desc sets function called before a slave read operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveRxEvent( void (*function)(uint8_t*, int) ) +{ + twi_onSlaveReceive = function; +} + +/* + * Function twi_attachSlaveTxEvent + * Desc sets function called before a slave write operation + * Input function: callback function to use + * Output none + */ +void twi_attachSlaveTxEvent( void (*function)(void) ) +{ + twi_onSlaveTransmit = function; +} + +/* + * Function twi_reply + * Desc sends byte or readys receive line + * Input ack: byte indicating to ack or to nack + * Output none + */ +void twi_reply(uint8_t ack) +{ + // transmit master read ready signal, with or without ack + if(ack){ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT) | _BV(TWEA); + }else{ + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWINT); + } +} + +/* + * Function twi_stop + * Desc relinquishes bus master status + * Input none + * Output none + */ +void twi_stop(void) +{ + // send stop condition + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT) | _BV(TWSTO); + + // wait for stop condition to be exectued on bus + // TWINT is not set after a stop condition! + while(TWCR & _BV(TWSTO)){ + continue; + } + + // update twi state + twi_state = TWI_READY; +} + +/* + * Function twi_releaseBus + * Desc releases bus control + * Input none + * Output none + */ +void twi_releaseBus(void) +{ + // release bus + TWCR = _BV(TWEN) | _BV(TWIE) | _BV(TWEA) | _BV(TWINT); + + // update twi state + twi_state = TWI_READY; +} + +ISR(TWI_vect) +{ + switch(TW_STATUS){ + // All Master + case TW_START: // sent start condition + case TW_REP_START: // sent repeated start condition + // copy device address and r/w bit to output register and ack + TWDR = twi_slarw; + twi_reply(1); + break; + + // Master Transmitter + case TW_MT_SLA_ACK: // slave receiver acked address + case TW_MT_DATA_ACK: // slave receiver acked data + // if there is data to send, send it, otherwise stop + if(twi_masterBufferIndex < twi_masterBufferLength){ + // copy data to output register and ack + TWDR = twi_masterBuffer[twi_masterBufferIndex++]; + twi_reply(1); + }else{ + if (twi_sendStop) + twi_stop(); + else { + twi_inRepStart = true; // we're gonna send the START + // don't enable the interrupt. We'll generate the start, but we + // avoid handling the interrupt until we're in the next transaction, + // at the point where we would normally issue the start. + TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ; + twi_state = TWI_READY; + } + } + break; + case TW_MT_SLA_NACK: // address sent, nack received + twi_error = TW_MT_SLA_NACK; + twi_stop(); + break; + case TW_MT_DATA_NACK: // data sent, nack received + twi_error = TW_MT_DATA_NACK; + twi_stop(); + break; + case TW_MT_ARB_LOST: // lost bus arbitration + twi_error = TW_MT_ARB_LOST; + twi_releaseBus(); + break; + + // Master Receiver + case TW_MR_DATA_ACK: // data received, ack sent + // put byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + case TW_MR_SLA_ACK: // address sent, ack received + // ack if more bytes are expected, otherwise nack + if(twi_masterBufferIndex < twi_masterBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_MR_DATA_NACK: // data received, nack sent + // put final byte into buffer + twi_masterBuffer[twi_masterBufferIndex++] = TWDR; + if (twi_sendStop) + twi_stop(); + else { + twi_inRepStart = true; // we're gonna send the START + // don't enable the interrupt. We'll generate the start, but we + // avoid handling the interrupt until we're in the next transaction, + // at the point where we would normally issue the start. + TWCR = _BV(TWINT) | _BV(TWSTA)| _BV(TWEN) ; + twi_state = TWI_READY; + } + break; + case TW_MR_SLA_NACK: // address sent, nack received + twi_stop(); + break; + // TW_MR_ARB_LOST handled by TW_MT_ARB_LOST case + + // Slave Receiver + case TW_SR_SLA_ACK: // addressed, returned ack + case TW_SR_GCALL_ACK: // addressed generally, returned ack + case TW_SR_ARB_LOST_SLA_ACK: // lost arbitration, returned ack + case TW_SR_ARB_LOST_GCALL_ACK: // lost arbitration, returned ack + // enter slave receiver mode + twi_state = TWI_SRX; + // indicate that rx buffer can be overwritten and ack + twi_rxBufferIndex = 0; + twi_reply(1); + break; + case TW_SR_DATA_ACK: // data received, returned ack + case TW_SR_GCALL_DATA_ACK: // data received generally, returned ack + // if there is still room in the rx buffer + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + // put byte in buffer and ack + twi_rxBuffer[twi_rxBufferIndex++] = TWDR; + twi_reply(1); + }else{ + // otherwise nack + twi_reply(0); + } + break; + case TW_SR_STOP: // stop or repeated start condition received + // put a null char after data if there's room + if(twi_rxBufferIndex < TWI_BUFFER_LENGTH){ + twi_rxBuffer[twi_rxBufferIndex] = '\0'; + } + // sends ack and stops interface for clock stretching + twi_stop(); + // callback to user defined callback + twi_onSlaveReceive(twi_rxBuffer, twi_rxBufferIndex); + // since we submit rx buffer to "wire" library, we can reset it + twi_rxBufferIndex = 0; + // ack future responses and leave slave receiver state + twi_releaseBus(); + break; + case TW_SR_DATA_NACK: // data received, returned nack + case TW_SR_GCALL_DATA_NACK: // data received generally, returned nack + // nack back at master + twi_reply(0); + break; + + // Slave Transmitter + case TW_ST_SLA_ACK: // addressed, returned ack + case TW_ST_ARB_LOST_SLA_ACK: // arbitration lost, returned ack + // enter slave transmitter mode + twi_state = TWI_STX; + // ready the tx buffer index for iteration + twi_txBufferIndex = 0; + // set tx buffer length to be zero, to verify if user changes it + twi_txBufferLength = 0; + // request for txBuffer to be filled and length to be set + // note: user must call twi_transmit(bytes, length) to do this + twi_onSlaveTransmit(); + // if they didn't change buffer & length, initialize it + if(0 == twi_txBufferLength){ + twi_txBufferLength = 1; + twi_txBuffer[0] = 0x00; + } + // transmit first byte from buffer, fall + case TW_ST_DATA_ACK: // byte sent, ack returned + // copy data to output register + TWDR = twi_txBuffer[twi_txBufferIndex++]; + // if there is more to send, ack, otherwise nack + if(twi_txBufferIndex < twi_txBufferLength){ + twi_reply(1); + }else{ + twi_reply(0); + } + break; + case TW_ST_DATA_NACK: // received nack, we are done + case TW_ST_LAST_DATA: // received ack, but we are done already! + // ack future responses + twi_reply(1); + // leave slave receiver state + twi_state = TWI_READY; + break; + + // All + case TW_NO_INFO: // no state information + break; + case TW_BUS_ERROR: // bus error, illegal stop/start + twi_error = TW_BUS_ERROR; + twi_stop(); + break; + } +} + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.h new file mode 100644 index 000000000..652659339 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/libraries/Wire/utility/twi.h @@ -0,0 +1,53 @@ +/* + twi.h - TWI/I2C library for Wiring & Arduino + 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 twi_h +#define twi_h + + #include + + //#define ATMEGA8 + + #ifndef TWI_FREQ + #define TWI_FREQ 100000L + #endif + + #ifndef TWI_BUFFER_LENGTH + #define TWI_BUFFER_LENGTH 32 + #endif + + #define TWI_READY 0 + #define TWI_MRX 1 + #define TWI_MTX 2 + #define TWI_SRX 3 + #define TWI_STX 4 + + void twi_init(void); + void twi_setAddress(uint8_t); + uint8_t twi_readFrom(uint8_t, uint8_t*, uint8_t, uint8_t); + uint8_t twi_writeTo(uint8_t, uint8_t*, uint8_t, uint8_t, uint8_t); + uint8_t twi_transmit(const uint8_t*, uint8_t); + void twi_attachSlaveRxEvent( void (*)(uint8_t*, int) ); + void twi_attachSlaveTxEvent( void (*)(void) ); + void twi_reply(uint8_t); + void twi_stop(void); + void twi_releaseBus(void); + +#endif + diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.local.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.local.txt new file mode 100644 index 000000000..61094db8e --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.local.txt @@ -0,0 +1,6 @@ +compiler.cpp.extra_flags=-DHAS_AUTOMATIC_VERSIONING +build.custom_bin.path.macosx=/usr/local/bin/ +build.custom_bin.path.linux= +recipe.hooks.prebuild0.pattern={build.custom_bin.path}generate_version_header_for_marlin "{build.source.path}" "{build.path}/_Version.h" +# Please help -- We need an implementation on Windows +recipe.hooks.prebuild0.pattern.windows= diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.txt b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.txt new file mode 100644 index 000000000..d4d7b06ab --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/platform.txt @@ -0,0 +1,120 @@ + +# Arduino 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 + +# AVR compile variables +# --------------------- + +# Default "compiler.path" is correct, change only if you want to overidde the initial value +compiler.path={runtime.tools.avr-gcc.path}/bin/ +compiler.c.cmd=avr-gcc +compiler.c.flags=-c -g -Os -w -ffunction-sections -fdata-sections -MMD +# -w flag added to avoid printing a wrong warning http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396 +# This is fixed in gcc 4.8.3 and will be removed as soon as we update the toolchain +compiler.c.elf.flags=-w -Os -Wl,--gc-sections +compiler.c.elf.cmd=avr-gcc +compiler.S.flags=-c -g -x assembler-with-cpp +compiler.cpp.cmd=avr-g++ +compiler.cpp.flags=-c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD +compiler.ar.cmd=avr-ar +compiler.ar.flags=rcs +compiler.objcopy.cmd=avr-objcopy +compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 +compiler.elf2hex.flags=-O ihex -R .eeprom +compiler.elf2hex.cmd=avr-objcopy +compiler.ldflags= +compiler.size.cmd=avr-size + +# This can be overriden in boards.txt +build.extra_flags= + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.S.extra_flags= +compiler.cpp.extra_flags= +compiler.ar.extra_flags= +compiler.objcopy.eep.extra_flags= +compiler.elf2hex.extra_flags= + +# AVR compile patterns +# -------------------- + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {compiler.cpp.extra_flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/{archive_file}" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mmcu={build.mcu} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" {object_files} "{build.path}/{archive_file}" "-L{build.path}" -lm + +## Create eeprom +recipe.objcopy.eep.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.objcopy.eep.flags} {compiler.objcopy.eep.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.eep" + +## Create hex +recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.text|\.data|\.bootloader)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* +recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + + +# AVR Uploader/Programmers tools +# ------------------------------ + +tools.avrdude.path={runtime.tools.avrdude.path} +tools.avrdude.cmd.path={path}/bin/avrdude +tools.avrdude.config.path={path}/etc/avrdude.conf + +tools.avrdude.upload.params.verbose=-v +tools.avrdude.upload.params.quiet=-q -q +tools.avrdude.upload.pattern="{cmd.path}" "-C{config.path}" {upload.verbose} -p{build.mcu} -c{upload.protocol} -P{serial.port} -b{upload.speed} -D "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.program.params.verbose=-v +tools.avrdude.program.params.quiet=-q -q +tools.avrdude.program.pattern="{cmd.path}" "-C{config.path}" {program.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{build.path}/{build.project_name}.hex:i" + +tools.avrdude.erase.params.verbose=-v +tools.avrdude.erase.params.quiet=-q -q +tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m + +tools.avrdude.bootloader.params.verbose=-v +tools.avrdude.bootloader.params.quiet=-q -q +tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.path}/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m + +tools.hidloader.cmd.path=/usr/local/bin/HIDUploader + +tools.hidloader.upload.params.verbose=-v +tools.hidloader.upload.params.quiet= +tools.hidloader.upload.pattern="{cmd.path}" --upload -mmcu={build.mcu} {upload.verbose} -w "{build.path}/{build.project_name}.hex" +tools.nativehid.program.params.verbose=-v +tools.nativehid.program.params.quiet=-q -q + +tools.hidloader.program.params.verbose=-v +tools.hidloader.program.params.quiet=-q -q +tools.hidloader.program.pattern="{cmd.path}" -mmcu={build.mcu} {upload.verbose} -w "{build.path}/{build.project_name}.hex" + +tools.hidloader.erase.params.verbose=-v +tools.hidloader.erase.params.quiet=-q -q +tools.hidloader.erase.pattern="{cmd.path}" --erase "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m + +# USB Default Flags +# Default blank usb manufacturer will be filled it at compile time +# - from numeric vendor ID, set to Unknown otherwise +build.usb_manufacturer= +build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/at90usb/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/at90usb/pins_arduino.h new file mode 100644 index 000000000..8fef38320 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/at90usb/pins_arduino.h @@ -0,0 +1,278 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + Modified 2012 by Fredrik Hubinette + Modified 2014-2015 by Matthew Wilson + + 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 48 +#define NUM_ANALOG_INPUTS 8 + +// PE7 is our status LED +#define TX_RX_LED_INIT DDRE |= (1<<7) +#define TXLED0 0 +#define TXLED1 0 +#define RXLED0 PORTE |= (1<<7) +#define RXLED1 PORTE &= ~(1<<7) + +static const uint8_t SDA = 1; +static const uint8_t SCL = 0; + +// Map SPI port to 'new' pins D14..D17 +static const uint8_t SS = 20; +static const uint8_t MOSI = 22; +static const uint8_t MISO = 23; +static const uint8_t SCK = 21; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +static const uint8_t A0 = 38; // F0 +static const uint8_t A1 = 39; // F1 +static const uint8_t A2 = 40; // F2 +static const uint8_t A3 = 41; // F3 +static const uint8_t A4 = 42; // F4 +static const uint8_t A5 = 43; // F5 +static const uint8_t A6 = 44; // F6 +static const uint8_t A7 = 45; // F7 + +#define analogInputToDigitalPin(p) ((p < 8) ? (p) + 38 : -1) + +// Pins below still needs to be configured - Hubbe. + +#define digitalPinToPCICR(p) ((((p) >= 0 && (p) <= 3) || ((p) >= 18 && (p) <= 19) || ((p) >= 36 && (p) <= 37)) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((((p) >= 0 && (p) <= 3) || ((p) >= 18 && (p) <= 19) || ((p) >= 36 && (p) <= 37)) ? (&PCMSK0) : ((uint8_t *)0)) +#define digitalPinToPCMSKbit(p) ( ((p) >= 0 && (p) <= 3) ? (p) : ((p) == 18 ? 6 : ((p) == 19 ? 7 : ((p) == 36 ? 4 : ((p) == 37 ? 5 : (-1)))))) + +#define digitalPinHasPWM(p) ((p) == 0 || (p) == 1 || (p) == 14 || (p) == 15 || (p) == 16 || (p) == 24 || (p) == 25 || (p) == 26 || (p) == 27) + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#ifdef ARDUINO_MAIN + + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +// Note PA == 1, PB == 2, etc. (GAH!) +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, +}; + +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, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, // 0 - PD0 - INT0 - PWM + PD, // 1 - PD1 - INT1 - PWM + PD, // 2 - PD2 - INT2 - RX + PD, // 3 - PD3 - INT3 - TX + PD, // 4 - PD4 + PD, // 5 - PD5 + PD, // 6 - PD6 + PD, // 7 - PD7 + PE, // 8 - PE0 + PE, // 9 - PE1 + PC, // 10 - PC0 + PC, // 11 - PC1 + PC, // 12 - PC2 + PC, // 13 - PC3 + PC, // 14 - PC4 - PWM + PC, // 15 - PC5 - PWM + PC, // 16 - PC6 - PWM + PC, // 17 - PC7 + PE, // 18 - PE6 - INT6 + PE, // 19 - PE7 - INT7 + PB, // 20 - PB0 + PB, // 21 - PB1 + PB, // 22 - PB2 + PB, // 23 - PB3 + PB, // 24 - PB4 - PWM + PB, // 25 - PB5 - PWM + PB, // 26 - PB6 - PWM + PB, // 27 - PB7 - PWM + PA, // 28 - PA0 + PA, // 29 - PA1 + PA, // 30 - PA2 + PA, // 31 - PA3 + PA, // 32 - PA4 + PA, // 33 - PA5 + PA, // 34 - PA6 + PA, // 35 - PA7 + PE, // 36 - PE4 - INT4 + PE, // 37 - PE5 - INT5 + PF, // 38 - PF0 - A0 + PF, // 39 - PF1 - A1 + PF, // 40 - PF2 - A2 + PF, // 41 - PF3 - A3 + PF, // 42 - PF4 - A4 + PF, // 43 - PF5 - A5 + PF, // 44 - PF6 - A6 + PF, // 45 - PF7 - A7 + PE, // 46 - PE2 (not defined in teensy) + PE, // 47 - PE3 (not defined in teensy) +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), // 0 - PD0 - INT0 - PWM + _BV(1), // 1 - PD1 - INT1 - PWM + _BV(2), // 2 - PD2 - INT2 - RX + _BV(3), // 3 - PD3 - INT3 - TX + _BV(4), // 4 - PD4 + _BV(5), // 5 - PD5 + _BV(6), // 6 - PD6 + _BV(7), // 7 - PD7 + _BV(0), // 8 - PE0 + _BV(1), // 9 - PE1 + _BV(0), // 10 - PC0 + _BV(1), // 11 - PC1 + _BV(2), // 12 - PC2 + _BV(3), // 13 - PC3 + _BV(4), // 14 - PC4 - PWM + _BV(5), // 15 - PC5 - PWM + _BV(6), // 16 - PC6 - PWM + _BV(7), // 17 - PC7 + _BV(6), // 18 - PE6 - INT6 + _BV(7), // 19 - PE7 - INT7 + _BV(0), // 20 - PB0 + _BV(1), // 21 - PB1 + _BV(2), // 22 - PB2 + _BV(3), // 23 - PB3 + _BV(4), // 24 - PB4 - PWM + _BV(5), // 25 - PB5 - PWM + _BV(6), // 26 - PB6 - PWM + _BV(7), // 27 - PB7 - PWM + _BV(0), // 28 - PA0 + _BV(1), // 29 - PA1 + _BV(2), // 30 - PA2 + _BV(3), // 31 - PA3 + _BV(4), // 32 - PA4 + _BV(5), // 33 - PA5 + _BV(6), // 34 - PA6 + _BV(7), // 35 - PA7 + _BV(4), // 36 - PE4 - INT4 + _BV(5), // 37 - PE5 - INT5 + _BV(0), // 38 - PF0 - A0 + _BV(1), // 39 - PF1 - A1 + _BV(2), // 40 - PF2 - A2 + _BV(3), // 41 - PF3 - A3 + _BV(4), // 42 - PF4 - A4 + _BV(5), // 43 - PF5 - A5 + _BV(6), // 44 - PF6 - A6 + _BV(7), // 45 - PF7 - A7 + _BV(2), // 46 - PE2 (not defined in teensy) + _BV(3), // 47 - PE3 (not defined in teensy) +}; + + +// TODO(unrepentantgeek) complete this map of PWM capable pins +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + TIMER0A, // 0 - PD0 - INT0 - PWM + TIMER2B, // 1 - PD1 - INT1 - PWM + NOT_ON_TIMER, // 2 - PD2 - INT2 - RX + NOT_ON_TIMER, // 3 - PD3 - INT3 - TX + NOT_ON_TIMER, // 4 - PD4 + NOT_ON_TIMER, // 5 - PD5 + NOT_ON_TIMER, // 6 - PD6 + NOT_ON_TIMER, // 7 - PD7 + NOT_ON_TIMER, // 8 - PE0 + NOT_ON_TIMER, // 9 - PE1 + NOT_ON_TIMER, // 10 - PC0 + NOT_ON_TIMER, // 11 - PC1 + NOT_ON_TIMER, // 12 - PC2 + NOT_ON_TIMER, // 13 - PC3 + TIMER3C, // 14 - PC4 - PWM + TIMER3B, // 15 - PC5 - PWM + TIMER3A, // 16 - PC6 - PWM + NOT_ON_TIMER, // 17 - PC7 + NOT_ON_TIMER, // 18 - PE6 - INT6 + NOT_ON_TIMER, // 19 - PE7 - INT7 + NOT_ON_TIMER, // 20 - PB0 + NOT_ON_TIMER, // 21 - PB1 + NOT_ON_TIMER, // 22 - PB2 + NOT_ON_TIMER, // 23 - PB3 + TIMER2A, // 24 - PB4 - PWM + TIMER1A, // 25 - PB5 - PWM + TIMER1B, // 26 - PB6 - PWM + NOT_ON_TIMER, // 27 - PB7 - PWM // This should be on TIMER1C + NOT_ON_TIMER, // 28 - PA0 + NOT_ON_TIMER, // 29 - PA1 + NOT_ON_TIMER, // 30 - PA2 + NOT_ON_TIMER, // 31 - PA3 + NOT_ON_TIMER, // 32 - PA4 + NOT_ON_TIMER, // 33 - PA5 + NOT_ON_TIMER, // 34 - PA6 + NOT_ON_TIMER, // 35 - PA7 + NOT_ON_TIMER, // 36 - PE4 - INT4 + NOT_ON_TIMER, // 37 - PE5 - INT5 + NOT_ON_TIMER, // 38 - PF0 - A0 + NOT_ON_TIMER, // 39 - PF1 - A1 + NOT_ON_TIMER, // 40 - PF2 - A2 + NOT_ON_TIMER, // 41 - PF3 - A3 + NOT_ON_TIMER, // 42 - PF4 - A4 + NOT_ON_TIMER, // 43 - PF5 - A5 + NOT_ON_TIMER, // 44 - PF6 - A6 + NOT_ON_TIMER, // 45 - PF7 - A7 + NOT_ON_TIMER, // 46 - PE2 (not defined in teensy) + NOT_ON_TIMER, // 47 - PE3 (not defined in teensy) +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[8] = { + 0, // A0 PF0 ADC0 + 1, // A1 PF1 ADC1 + 2, // A2 PF2 ADC2 + 3, // A3 PF3 ADC3 + 4, // A4 PF4 ADC4 + 5, // A5 PF5 ADC5 + 6, // A6 PD6 ADC6 + 7, // A7 PD7 ADC7 +}; + +#endif /* ARDUINO_MAIN */ +#endif /* Pins_Arduino_h */ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/brainwave/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/brainwave/pins_arduino.h new file mode 100644 index 000000000..83a04fc96 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/brainwave/pins_arduino.h @@ -0,0 +1,281 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + Modified 2012 by Fredrik Hubinette + + 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 48 +#define NUM_ANALOG_INPUTS 8 + +#define TX_RX_LED_INIT DDRE |= (1<<7) +#define TXLED0 0 +#define TXLED1 0 +#define RXLED0 PORTE |= (1<<7) +#define RXLED1 PORTE &= ~(1<<7) + +static const uint8_t SDA = 0; +static const uint8_t SCL = 1; + +// Map SPI port to 'new' pins D14..D17 +static const uint8_t SS = 20; +static const uint8_t MOSI = 22; +static const uint8_t MISO = 23; +static const uint8_t SCK = 21; + +// Mapping of analog pins as digital I/O +// A6-A11 share with digital pins +static const uint8_t A0 = 38; // F0 +static const uint8_t A1 = 39; // F1 +static const uint8_t A2 = 40; // F2 +static const uint8_t A3 = 41; // F3 +static const uint8_t A4 = 42; // F4 +static const uint8_t A5 = 43; // F5 +static const uint8_t A6 = 44; // F6 +static const uint8_t A7 = 45; // F7 + +#define analogInputToDigitalPin(p) ((p < 16) ? (p) + 54 : -1) + +// Pins below still needs to be configured - Hubbe. + +#define digitalPinToPCICR(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((((p) >= 8 && (p) <= 11) || ((p) >= 14 && (p) <= 17) || ((p) >= A8 && (p) <= A10)) ? (&PCMSK0) : ((uint8_t *)0)) +#define digitalPinToPCMSKbit(p) ( ((p) >= 8 && (p) <= 11) ? (p) - 4 : ((p) == 14 ? 3 : ((p) == 15 ? 1 : ((p) == 16 ? 2 : ((p) == 17 ? 0 : (p - A8 + 4)))))) + + +#define digitalPinHasPWM(p) ((p) == 12 || (p) == 13 || (p) == 14 || (p) == 20 || (p) == 21 || (p) == 22) + +// __AVR_ATmega32U4__ has an unusual mapping of pins to channels +extern const uint8_t PROGMEM analog_pin_to_channel_PGM[]; +#define analogPinToChannel(P) ( pgm_read_byte( analog_pin_to_channel_PGM + (P) ) ) + +#ifdef ARDUINO_MAIN + + +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +// Note PA == 1, PB == 2, etc. (GAH!) +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, +}; + +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, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + (uint16_t) &PINA, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &PIND, + (uint16_t) &PINE, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PA, // 0 + PA, + PA, + PA, + PA, + PA, + PA, + PA, + PB, // 8 + PB, + PB, + PB, + PB, + PB, + PB, + PB, + PC, // 16 + PC, + PC, + PC, + PC, + PC, + PC, + PC, + PD, // 24 + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PE, // 32 + PE, + PE, + PE, + PE, + PE, + PE, + PE, // 39 - PE7 + PF, // 40 - A0 - PF0 + PF, + PF, + PF, + PF, + PF, + PF, + PF, // 47 - A7 - PF7 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), // PA0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), // PB0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), // PC0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), // PD0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), // PE0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), // PF0 + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), +}; + + +// TODO(unrepentantgeek) complete this map of PWM capable pins +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, // 0 - PA0 + NOT_ON_TIMER, // 1 - PA1 + NOT_ON_TIMER, // 2 - PA2 + NOT_ON_TIMER, // 3 - PA3 + NOT_ON_TIMER, // 4 - PA4 + NOT_ON_TIMER, // 5 - PA5 + NOT_ON_TIMER, // 6 - PA6 + NOT_ON_TIMER, // 7 - PA7 + NOT_ON_TIMER, // 8 - PB0 + NOT_ON_TIMER, // 9 - PB1 + NOT_ON_TIMER, // 10 - PB2 + NOT_ON_TIMER, // 11 - PB3 + TIMER2A, // 12 - PB4 + TIMER1A, // 13 - PB5 + TIMER1B, // 14 - PB6 + NOT_ON_TIMER, // 15 - PB7 + NOT_ON_TIMER, // 16 - PC0 + NOT_ON_TIMER, // 17 - PC1 + NOT_ON_TIMER, // 18 - PC2 + NOT_ON_TIMER, // 19 - PC3 + TIMER3C, // 20 - PC4 + TIMER3B, // 21 - PC5 + TIMER3A, // 22 - PC6 + NOT_ON_TIMER, // 23 - PC7 + NOT_ON_TIMER, // 24 - PD0 + NOT_ON_TIMER, // 25 - PD1 + NOT_ON_TIMER, // 26 - PD2 + NOT_ON_TIMER, // 27 - PD3 + NOT_ON_TIMER, // 28 - PD4 + NOT_ON_TIMER, // 29 - PD5 + NOT_ON_TIMER, // 30 - PD6 + NOT_ON_TIMER, // 31 - PD7 + NOT_ON_TIMER, // 32 - PE0 + NOT_ON_TIMER, // 33 - PE1 + NOT_ON_TIMER, // 34 - PE2 + NOT_ON_TIMER, // 35 - PE3 + NOT_ON_TIMER, // 36 - PE4 + NOT_ON_TIMER, // 37 - PE5 + NOT_ON_TIMER, // 38 - PE6 + NOT_ON_TIMER, // 39 - PE7 + NOT_ON_TIMER, // 40 - A0 - PF0 + NOT_ON_TIMER, // 41 - A1 - PF1 + NOT_ON_TIMER, // 42 - A2 - PF2 + NOT_ON_TIMER, // 43 - A3 - PF3 + NOT_ON_TIMER, // 44 - A4 - PF4 + NOT_ON_TIMER, // 45 - A5 - PF5 + NOT_ON_TIMER, // 46 - A6 - PF6 + NOT_ON_TIMER, // 47 - A7 - PF7 +}; + +const uint8_t PROGMEM analog_pin_to_channel_PGM[12] = { + 7, // A0 PF7 ADC7 + 6, // A1 PF6 ADC6 + 5, // A2 PF5 ADC5 + 4, // A3 PF4 ADC4 + 1, // A4 PF1 ADC1 + 0, // A5 PF0 ADC0 + 8, // A6 D4 PD4 ADC8 + 10, // A7 D6 PD7 ADC10 + 11, // A8 D8 PB4 ADC11 + 12, // A9 D9 PB5 ADC12 + 13, // A10 D10 PB6 ADC13 + 9 // A11 D12 PD6 ADC9 +}; + +#endif /* ARDUINO_MAIN */ +#endif /* Pins_Arduino_h */ diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/mega/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/mega/pins_arduino.h new file mode 100644 index 000000000..a80991b3c --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/mega/pins_arduino.h @@ -0,0 +1,389 @@ +/* + 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 70 +#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; +#define 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 ) ) ) ) ) ) + +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : ((p) >= 18 && (p) <= 21 ? 23 - (p) : NOT_AN_INTERRUPT))) + +#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 +}; + +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 +}; + +#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_HARDWARE2 Serial2 +#define SERIAL_PORT_HARDWARE3 Serial3 +#define SERIAL_PORT_HARDWARE_OPEN Serial1 +#define SERIAL_PORT_HARDWARE_OPEN1 Serial2 +#define SERIAL_PORT_HARDWARE_OPEN2 Serial3 + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/rambo/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/rambo/pins_arduino.h new file mode 100644 index 000000000..f49a23fc0 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/variants/sanguino/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/sanguino/pins_arduino.h new file mode 100644 index 000000000..499952dc9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.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.6.x/hardware/marlin/avr/variants/standard/pins_arduino.h b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/standard/pins_arduino.h new file mode 100644 index 000000000..3d4a9f6c7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/hardware/marlin/avr/variants/standard/pins_arduino.h @@ -0,0 +1,238 @@ +/* + 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 20 +#define NUM_ANALOG_INPUTS 6 +#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1) + +#if defined(__AVR_ATmega8__) +#define digitalPinHasPWM(p) ((p) == 9 || (p) == 10 || (p) == 11) +#else +#define digitalPinHasPWM(p) ((p) == 3 || (p) == 5 || (p) == 6 || (p) == 9 || (p) == 10 || (p) == 11) +#endif + +static const uint8_t SS = 10; +static const uint8_t MOSI = 11; +static const uint8_t MISO = 12; +static const uint8_t SCK = 13; + +static const uint8_t SDA = 18; +static const uint8_t SCL = 19; +#define LED_BUILTIN 13 + +static const uint8_t A0 = 14; +static const uint8_t A1 = 15; +static const uint8_t A2 = 16; +static const uint8_t A3 = 17; +static const uint8_t A4 = 18; +static const uint8_t A5 = 19; +static const uint8_t A6 = 20; +static const uint8_t A7 = 21; + +#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)0)) +#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) +#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)0)))) +#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) + +#define digitalPinToInterrupt(p) ((p) == 2 ? 0 : ((p) == 3 ? 1 : NOT_AN_INTERRUPT)) + +#ifdef ARDUINO_MAIN + +// 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 + + +// 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, + (uint16_t) &DDRB, + (uint16_t) &DDRC, + (uint16_t) &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PORTB, + (uint16_t) &PORTC, + (uint16_t) &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + (uint16_t) &PINB, + (uint16_t) &PINC, + (uint16_t) &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 + +// 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 + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.cpp b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.cpp new file mode 100644 index 000000000..8278c19ae --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.cpp @@ -0,0 +1,723 @@ +//////////////////////////////////////////////////////////// +//ORIGINAL CODE 12/12/2011- Mike Hord, SparkFun Electronics +//LIBRARY Created by Adam Meyer of bildr Aug 18th 2012 +//Released as MIT license +//////////////////////////////////////////////////////////// + +#include +#include "L6470.h" +#include + +#define ENABLE_RESET_PIN 0 +#define K_VALUE 100 + +L6470::L6470(int SSPin){ + _SSPin = SSPin; + // Serial.begin(9600); +} + +void L6470::init(int k_value){ + // This is the generic initialization function to set up the Arduino to + // communicate with the dSPIN chip. + + // set up the input/output pins for the application. + pinMode(SLAVE_SELECT_PIN, OUTPUT); // The SPI peripheral REQUIRES the hardware SS pin- + // pin 10- to be an output. This is in here just + // in case some future user makes something other + // than pin 10 the SS pin. + + pinMode(_SSPin, OUTPUT); + digitalWrite(_SSPin, HIGH); + pinMode(MOSI, OUTPUT); + pinMode(MISO, INPUT); + pinMode(SCK, OUTPUT); + pinMode(BUSYN, INPUT); +#if (ENABLE_RESET_PIN == 1) + pinMode(RESET, OUTPUT); + // reset the dSPIN chip. This could also be accomplished by + // calling the "L6470::ResetDev()" function after SPI is initialized. + digitalWrite(RESET, HIGH); + delay(10); + digitalWrite(RESET, LOW); + delay(10); + digitalWrite(RESET, HIGH); + delay(10); +#endif + + + // initialize SPI for the dSPIN chip's needs: + // most significant bit first, + // SPI clock not to exceed 5MHz, + // SPI_MODE3 (clock idle high, latch data on rising edge of clock) + SPI.begin(); + SPI.setBitOrder(MSBFIRST); + SPI.setClockDivider(SPI_CLOCK_DIV16); // or 2, 8, 16, 32, 64 + SPI.setDataMode(SPI_MODE3); + + // First things first: let's check communications. The CONFIG register should + // power up to 0x2E88, so we can use that to check the communications. + if (GetParam(CONFIG) == 0x2E88){ + //Serial.println('good to go'); + } + else{ + //Serial.println('Comm issue'); + } + +#if (ENABLE_RESET_PIN == 0) + resetDev(); +#endif + // First, let's set the step mode register: + // - SYNC_EN controls whether the BUSY/SYNC pin reflects the step + // frequency or the BUSY status of the chip. We want it to be the BUSY + // status. + // - STEP_SEL_x is the microstepping rate- we'll go full step. + // - SYNC_SEL_x is the ratio of (micro)steps to toggles on the + // BUSY/SYNC pin (when that pin is used for SYNC). Make it 1:1, despite + // not using that pin. + //SetParam(STEP_MODE, !SYNC_EN | STEP_SEL_1 | SYNC_SEL_1); + + + SetParam(KVAL_RUN, k_value); + SetParam(KVAL_ACC, k_value); + SetParam(KVAL_DEC, k_value); + SetParam(KVAL_HOLD, k_value); + + // Set up the CONFIG register as follows: + // PWM frequency divisor = 1 + // PWM frequency multiplier = 2 (62.5kHz PWM frequency) + // Slew rate is 290V/us + // Do NOT shut down bridges on overcurrent + // Disable motor voltage compensation + // Hard stop on switch low + // 16MHz internal oscillator, nothing on output + SetParam(CONFIG, CONFIG_PWM_DIV_1 | CONFIG_PWM_MUL_2 | CONFIG_SR_290V_us| CONFIG_OC_SD_DISABLE | CONFIG_VS_COMP_DISABLE | CONFIG_SW_HARD_STOP | CONFIG_INT_16MHZ); + // Configure the RUN KVAL. This defines the duty cycle of the PWM of the bridges + // during running. 0xFF means that they are essentially NOT PWMed during run; this + // MAY result in more power being dissipated than you actually need for the task. + // Setting this value too low may result in failure to turn. + // There are ACC, DEC, and HOLD KVAL registers as well; you may need to play with + // those values to get acceptable performance for a given application. + //SetParam(KVAL_RUN, 0xFF); + // Calling GetStatus() clears the UVLO bit in the status register, which is set by + // default on power-up. The driver may not run without that bit cleared by this + // read operation. + getStatus(); + + hardStop(); //engage motors +} + +boolean L6470::isBusy(){ + int status = getStatus(); + return !((status >> 1) & 0b1); +} + +void L6470::setMicroSteps(int microSteps){ + byte stepVal = 0; + + for(stepVal = 0; stepVal < 8; stepVal++){ + if(microSteps == 1) break; + microSteps = microSteps >> 1; + } + + SetParam(STEP_MODE, !SYNC_EN | stepVal | SYNC_SEL_1); +} + +void L6470::setThresholdSpeed(float thresholdSpeed){ + // Configure the FS_SPD register- this is the speed at which the driver ceases + // microstepping and goes to full stepping. FSCalc() converts a value in steps/s + // to a value suitable for this register; to disable full-step switching, you + // can pass 0x3FF to this register. + + if(thresholdSpeed == 0.0){ + SetParam(FS_SPD, 0x3FF); + } + else{ + SetParam(FS_SPD, FSCalc(thresholdSpeed)); + } +} + + +void L6470::setCurrent(int current){} + + + +void L6470::setMaxSpeed(int speed){ + // Configure the MAX_SPEED register- this is the maximum number of (micro)steps per + // second allowed. You'll want to mess around with your desired application to see + // how far you can push it before the motor starts to slip. The ACTUAL parameter + // passed to this function is in steps/tick; MaxSpdCalc() will convert a number of + // steps/s into an appropriate value for this function. Note that for any move or + // goto type function where no speed is specified, this value will be used. + SetParam(MAX_SPEED, MaxSpdCalc(speed)); +} + + +void L6470::setMinSpeed(int speed){ + // Configure the MAX_SPEED register- this is the maximum number of (micro)steps per + // second allowed. You'll want to mess around with your desired application to see + // how far you can push it before the motor starts to slip. The ACTUAL parameter + // passed to this function is in steps/tick; MaxSpdCalc() will convert a number of + // steps/s into an appropriate value for this function. Note that for any move or + // goto type function where no speed is specified, this value will be used. + SetParam(MIN_SPEED, MinSpdCalc(speed)); +} + + + + +void L6470::setAcc(float acceleration){ + // Configure the acceleration rate, in steps/tick/tick. There is also a DEC register; + // both of them have a function (AccCalc() and DecCalc() respectively) that convert + // from steps/s/s into the appropriate value for the register. Writing ACC to 0xfff + // sets the acceleration and deceleration to 'infinite' (or as near as the driver can + // manage). If ACC is set to 0xfff, DEC is ignored. To get infinite deceleration + // without infinite acceleration, only hard stop will work. + unsigned long accelerationBYTES = AccCalc(acceleration); + SetParam(ACC, accelerationBYTES); +} + + +void L6470::setDec(float deceleration){ + unsigned long decelerationBYTES = DecCalc(deceleration); + SetParam(DEC, decelerationBYTES); +} + + +long L6470::getPos(){ + unsigned long position = GetParam(ABS_POS); + return convert(position); +} + +float L6470::getSpeed(){ + /* + SPEED + The SPEED register contains the current motor speed, expressed in step/tick (format unsigned fixed point 0.28). + In order to convert the SPEED value in step/s the following formula can be used: + Equation 4 + where SPEED is the integer number stored into the register and tick is 250 ns. + The available range is from 0 to 15625 step/s with a resolution of 0.015 step/s. + Note: The range effectively available to the user is limited by the MAX_SPEED parameter. + */ + + return (float) GetParam(SPEED); + //return (float) speed * pow(8, -22); + //return FSCalc(speed); NEEDS FIX +} + + +void L6470::setOverCurrent(unsigned int ma_current){ + // Configure the overcurrent detection threshold. + byte OCValue = floor(ma_current / 375); + if(OCValue > 0x0F)OCValue = 0x0F; + SetParam(OCD_TH, OCValue); +} + +void L6470::setStallCurrent(float ma_current){ + byte STHValue = (byte)floor(ma_current / 31.25); + if(STHValue > 0x80)STHValue = 0x80; + if(STHValue < 0)STHValue = 0; + SetParam(STALL_TH, STHValue); +} + +void L6470::SetLowSpeedOpt(boolean enable){ + // Enable or disable the low-speed optimization option. If enabling, + // the other 12 bits of the register will be automatically zero. + // When disabling, the value will have to be explicitly written by + // the user with a SetParam() call. See the datasheet for further + // information about low-speed optimization. + Xfer(SET_PARAM | MIN_SPEED); + if (enable) Param(0x1000, 13); + else Param(0, 13); +} + + +void L6470::run(byte dir, float spd){ + // RUN sets the motor spinning in a direction (defined by the constants + // FWD and REV). Maximum speed and minimum speed are defined + // by the MAX_SPEED and MIN_SPEED registers; exceeding the FS_SPD value + // will switch the device into full-step mode. + // The SpdCalc() function is provided to convert steps/s values into + // appropriate integer values for this function. + unsigned long speedVal = SpdCalc(spd); + + Xfer(RUN | dir); + if (speedVal > 0xFFFFF) speedVal = 0xFFFFF; + Xfer((byte)(speedVal >> 16)); + Xfer((byte)(speedVal >> 8)); + Xfer((byte)(speedVal)); +} + + +void L6470::Step_Clock(byte dir){ + // STEP_CLOCK puts the device in external step clocking mode. When active, + // pin 25, STCK, becomes the step clock for the device, and steps it in + // the direction (set by the FWD and REV constants) imposed by the call + // of this function. Motion commands (RUN, MOVE, etc) will cause the device + // to exit step clocking mode. + Xfer(STEP_CLOCK | dir); +} + +void L6470::move(long n_step){ + // MOVE will send the motor n_step steps (size based on step mode) in the + // direction imposed by dir (FWD or REV constants may be used). The motor + // will accelerate according the acceleration and deceleration curves, and + // will run at MAX_SPEED. Stepping mode will adhere to FS_SPD value, as well. + + byte dir; + + if(n_step >= 0){ + dir = FWD; + } + else{ + dir = REV; + } + + long n_stepABS = abs(n_step); + + Xfer(MOVE | dir); //set direction + if (n_stepABS > 0x3FFFFF) n_step = 0x3FFFFF; + Xfer((byte)(n_stepABS >> 16)); + Xfer((byte)(n_stepABS >> 8)); + Xfer((byte)(n_stepABS)); +} + +void L6470::goTo(long pos){ + // GOTO operates much like MOVE, except it produces absolute motion instead + // of relative motion. The motor will be moved to the indicated position + // in the shortest possible fashion. + + Xfer(GOTO); + if (pos > 0x3FFFFF) pos = 0x3FFFFF; + Xfer((byte)(pos >> 16)); + Xfer((byte)(pos >> 8)); + Xfer((byte)(pos)); +} + + +void L6470::goTo_DIR(byte dir, long pos){ + // Same as GOTO, but with user constrained rotational direction. + + Xfer(GOTO_DIR); + if (pos > 0x3FFFFF) pos = 0x3FFFFF; + Xfer((byte)(pos >> 16)); + Xfer((byte)(pos >> 8)); + Xfer((byte)(pos)); +} + +void L6470::goUntil(byte act, byte dir, unsigned long spd){ + // GoUntil will set the motor running with direction dir (REV or + // FWD) until a falling edge is detected on the SW pin. Depending + // on bit SW_MODE in CONFIG, either a hard stop or a soft stop is + // performed at the falling edge, and depending on the value of + // act (either RESET or COPY) the value in the ABS_POS register is + // either RESET to 0 or COPY-ed into the MARK register. + Xfer(GO_UNTIL | act | dir); + if (spd > 0x3FFFFF) spd = 0x3FFFFF; + Xfer((byte)(spd >> 16)); + Xfer((byte)(spd >> 8)); + Xfer((byte)(spd)); +} + +void L6470::releaseSW(byte act, byte dir){ + // Similar in nature to GoUntil, ReleaseSW produces motion at the + // higher of two speeds: the value in MIN_SPEED or 5 steps/s. + // The motor continues to run at this speed until a rising edge + // is detected on the switch input, then a hard stop is performed + // and the ABS_POS register is either COPY-ed into MARK or RESET to + // 0, depending on whether RESET or COPY was passed to the function + // for act. + Xfer(RELEASE_SW | act | dir); +} + +void L6470::goHome(){ + // GoHome is equivalent to GoTo(0), but requires less time to send. + // Note that no direction is provided; motion occurs through shortest + // path. If a direction is required, use GoTo_DIR(). + Xfer(GO_HOME); +} + +void L6470::goMark(){ + // GoMark is equivalent to GoTo(MARK), but requires less time to send. + // Note that no direction is provided; motion occurs through shortest + // path. If a direction is required, use GoTo_DIR(). + Xfer(GO_MARK); +} + + +void L6470::setMark(long value){ + + Xfer(MARK); + if (value > 0x3FFFFF) value = 0x3FFFFF; + if (value < -0x3FFFFF) value = -0x3FFFFF; + + + Xfer((byte)(value >> 16)); + Xfer((byte)(value >> 8)); + Xfer((byte)(value)); +} + + +void L6470::setMark(){ + long value = getPos(); + + Xfer(MARK); + if (value > 0x3FFFFF) value = 0x3FFFFF; + if (value < -0x3FFFFF) value = -0x3FFFFF; + + + Xfer((byte)(value >> 16)); + Xfer((byte)(value >> 8)); + Xfer((byte)(value)); +} + +void L6470::setAsHome(){ + // Sets the ABS_POS register to 0, effectively declaring the current + // position to be "HOME". + Xfer(RESET_POS); +} + +void L6470::resetDev(){ + // Reset device to power up conditions. Equivalent to toggling the STBY + // pin or cycling power. + Xfer(RESET_DEVICE); +} + +void L6470::softStop(){ + // Bring the motor to a halt using the deceleration curve. + Xfer(SOFT_STOP); +} + +void L6470::hardStop(){ + // Stop the motor right away. No deceleration. + Xfer(HARD_STOP); +} + +void L6470::softFree(){ + // Decelerate the motor and disengage + Xfer(SOFT_HIZ); +} + +void L6470::free(){ + // disengage the motor immediately with no deceleration. + Xfer(HARD_HIZ); +} + +int L6470::getStatus(){ + // Fetch and return the 16-bit value in the STATUS register. Resets + // any warning flags and exits any error states. Using GetParam() + // to read STATUS does not clear these values. + int temp = 0; + Xfer(GET_STATUS); + temp = Xfer(0)<<8; + temp |= Xfer(0); + return temp; +} + +unsigned long L6470::AccCalc(float stepsPerSecPerSec){ + // The value in the ACC register is [(steps/s/s)*(tick^2)]/(2^-40) where tick is + // 250ns (datasheet value)- 0x08A on boot. + // Multiply desired steps/s/s by .137438 to get an appropriate value for this register. + // This is a 12-bit value, so we need to make sure the value is at or below 0xFFF. + float temp = stepsPerSecPerSec * 0.137438; + if( (unsigned long) long(temp) > 0x00000FFF) return 0x00000FFF; + else return (unsigned long) long(temp); +} + + +unsigned long L6470::DecCalc(float stepsPerSecPerSec){ + // The calculation for DEC is the same as for ACC. Value is 0x08A on boot. + // This is a 12-bit value, so we need to make sure the value is at or below 0xFFF. + float temp = stepsPerSecPerSec * 0.137438; + if( (unsigned long) long(temp) > 0x00000FFF) return 0x00000FFF; + else return (unsigned long) long(temp); +} + +unsigned long L6470::MaxSpdCalc(float stepsPerSec){ + // The value in the MAX_SPD register is [(steps/s)*(tick)]/(2^-18) where tick is + // 250ns (datasheet value)- 0x041 on boot. + // Multiply desired steps/s by .065536 to get an appropriate value for this register + // This is a 10-bit value, so we need to make sure it remains at or below 0x3FF + float temp = stepsPerSec * .065536; + if( (unsigned long) long(temp) > 0x000003FF) return 0x000003FF; + else return (unsigned long) long(temp); +} + +unsigned long L6470::MinSpdCalc(float stepsPerSec){ + // The value in the MIN_SPD register is [(steps/s)*(tick)]/(2^-24) where tick is + // 250ns (datasheet value)- 0x000 on boot. + // Multiply desired steps/s by 4.1943 to get an appropriate value for this register + // This is a 12-bit value, so we need to make sure the value is at or below 0xFFF. + float temp = stepsPerSec * 4.1943; + if( (unsigned long) long(temp) > 0x00000FFF) return 0x00000FFF; + else return (unsigned long) long(temp); +} + +unsigned long L6470::FSCalc(float stepsPerSec){ + // The value in the FS_SPD register is ([(steps/s)*(tick)]/(2^-18))-0.5 where tick is + // 250ns (datasheet value)- 0x027 on boot. + // Multiply desired steps/s by .065536 and subtract .5 to get an appropriate value for this register + // This is a 10-bit value, so we need to make sure the value is at or below 0x3FF. + float temp = (stepsPerSec * .065536)-.5; + if( (unsigned long) long(temp) > 0x000003FF) return 0x000003FF; + else return (unsigned long) long(temp); +} + +unsigned long L6470::IntSpdCalc(float stepsPerSec){ + // The value in the INT_SPD register is [(steps/s)*(tick)]/(2^-24) where tick is + // 250ns (datasheet value)- 0x408 on boot. + // Multiply desired steps/s by 4.1943 to get an appropriate value for this register + // This is a 14-bit value, so we need to make sure the value is at or below 0x3FFF. + float temp = stepsPerSec * 4.1943; + if( (unsigned long) long(temp) > 0x00003FFF) return 0x00003FFF; + else return (unsigned long) long(temp); +} + +unsigned long L6470::SpdCalc(float stepsPerSec){ + // When issuing RUN command, the 20-bit speed is [(steps/s)*(tick)]/(2^-28) where tick is + // 250ns (datasheet value). + // Multiply desired steps/s by 67.106 to get an appropriate value for this register + // This is a 20-bit value, so we need to make sure the value is at or below 0xFFFFF. + + float temp = stepsPerSec * 67.106; + if( (unsigned long) long(temp) > 0x000FFFFF) return 0x000FFFFF; + else return (unsigned long)temp; +} + +unsigned long L6470::Param(unsigned long value, byte bit_len){ + // Generalization of the subsections of the register read/write functionality. + // We want the end user to just write the value without worrying about length, + // so we pass a bit length parameter from the calling function. + unsigned long ret_val=0; // We'll return this to generalize this function + // for both read and write of registers. + byte byte_len = bit_len/8; // How many BYTES do we have? + if (bit_len%8 > 0) byte_len++; // Make sure not to lose any partial byte values. + // Let's make sure our value has no spurious bits set, and if the value was too + // high, max it out. + unsigned long mask = 0xffffffff >> (32-bit_len); + if (value > mask) value = mask; + // The following three if statements handle the various possible byte length + // transfers- it'll be no less than 1 but no more than 3 bytes of data. + // L6470::Xfer() sends a byte out through SPI and returns a byte received + // over SPI- when calling it, we typecast a shifted version of the masked + // value, then we shift the received value back by the same amount and + // store it until return time. + if (byte_len == 3) { + ret_val |= long(Xfer((byte)(value>>16))) << 16; + //Serial.println(ret_val, HEX); + } + if (byte_len >= 2) { + ret_val |= long(Xfer((byte)(value>>8))) << 8; + //Serial.println(ret_val, HEX); + } + if (byte_len >= 1) { + ret_val |= Xfer((byte)value); + //Serial.println(ret_val, HEX); + } + // Return the received values. Mask off any unnecessary bits, just for + // the sake of thoroughness- we don't EXPECT to see anything outside + // the bit length range but better to be safe than sorry. + return (ret_val & mask); +} + +byte L6470::Xfer(byte data){ + // This simple function shifts a byte out over SPI and receives a byte over + // SPI. Unusually for SPI devices, the dSPIN requires a toggling of the + // CS (slaveSelect) pin after each byte sent. That makes this function + // a bit more reasonable, because we can include more functionality in it. + byte data_out; + digitalWrite(_SSPin,LOW); + // SPI.transfer() both shifts a byte out on the MOSI pin AND receives a + // byte in on the MISO pin. + data_out = SPI.transfer(data); + digitalWrite(_SSPin,HIGH); + return data_out; +} + + + +void L6470::SetParam(byte param, unsigned long value){ + Xfer(SET_PARAM | param); + ParamHandler(param, value); +} + +unsigned long L6470::GetParam(byte param){ + // Realize the "get parameter" function, to read from the various registers in + // the dSPIN chip. + Xfer(GET_PARAM | param); + return ParamHandler(param, 0); +} + +long L6470::convert(unsigned long val){ + //convert 22bit 2s comp to signed long + int MSB = val >> 21; + + val = val << 11; + val = val >> 11; + + if(MSB == 1) val = val | 0b11111111111000000000000000000000; + return val; +} + +unsigned long L6470::ParamHandler(byte param, unsigned long value){ + // Much of the functionality between "get parameter" and "set parameter" is + // very similar, so we deal with that by putting all of it in one function + // here to save memory space and simplify the program. + unsigned long ret_val = 0; // This is a temp for the value to return. + // This switch structure handles the appropriate action for each register. + // This is necessary since not all registers are of the same length, either + // bit-wise or byte-wise, so we want to make sure we mask out any spurious + // bits and do the right number of transfers. That is handled by the dSPIN_Param() + // function, in most cases, but for 1-byte or smaller transfers, we call + // Xfer() directly. + switch (param) + { + // ABS_POS is the current absolute offset from home. It is a 22 bit number expressed + // in two's complement. At power up, this value is 0. It cannot be written when + // the motor is running, but at any other time, it can be updated to change the + // interpreted position of the motor. + case ABS_POS: + ret_val = Param(value, 22); + break; + // EL_POS is the current electrical position in the step generation cycle. It can + // be set when the motor is not in motion. Value is 0 on power up. + case EL_POS: + ret_val = Param(value, 9); + break; + // MARK is a second position other than 0 that the motor can be told to go to. As + // with ABS_POS, it is 22-bit two's complement. Value is 0 on power up. + case MARK: + ret_val = Param(value, 22); + break; + // SPEED contains information about the current speed. It is read-only. It does + // NOT provide direction information. + case SPEED: + ret_val = Param(0, 20); + break; + // ACC and DEC set the acceleration and deceleration rates. Set ACC to 0xFFF + // to get infinite acceleration/decelaeration- there is no way to get infinite + // deceleration w/o infinite acceleration (except the HARD STOP command). + // Cannot be written while motor is running. Both default to 0x08A on power up. + // AccCalc() and DecCalc() functions exist to convert steps/s/s values into + // 12-bit values for these two registers. + case ACC: + ret_val = Param(value, 12); + break; + case DEC: + ret_val = Param(value, 12); + break; + // MAX_SPEED is just what it says- any command which attempts to set the speed + // of the motor above this value will simply cause the motor to turn at this + // speed. Value is 0x041 on power up. + // MaxSpdCalc() function exists to convert steps/s value into a 10-bit value + // for this register. + case MAX_SPEED: + ret_val = Param(value, 10); + break; + // MIN_SPEED controls two things- the activation of the low-speed optimization + // feature and the lowest speed the motor will be allowed to operate at. LSPD_OPT + // is the 13th bit, and when it is set, the minimum allowed speed is automatically + // set to zero. This value is 0 on startup. + // MinSpdCalc() function exists to convert steps/s value into a 12-bit value for this + // register. SetLowSpeedOpt() function exists to enable/disable the optimization feature. + case MIN_SPEED: + ret_val = Param(value, 12); + break; + // FS_SPD register contains a threshold value above which microstepping is disabled + // and the dSPIN operates in full-step mode. Defaults to 0x027 on power up. + // FSCalc() function exists to convert steps/s value into 10-bit integer for this + // register. + case FS_SPD: + ret_val = Param(value, 10); + break; + // KVAL is the maximum voltage of the PWM outputs. These 8-bit values are ratiometric + // representations: 255 for full output voltage, 128 for half, etc. Default is 0x29. + // The implications of different KVAL settings is too complex to dig into here, but + // it will usually work to max the value for RUN, ACC, and DEC. Maxing the value for + // HOLD may result in excessive power dissipation when the motor is not running. + case KVAL_HOLD: + ret_val = Xfer((byte)value); + break; + case KVAL_RUN: + ret_val = Xfer((byte)value); + break; + case KVAL_ACC: + ret_val = Xfer((byte)value); + break; + case KVAL_DEC: + ret_val = Xfer((byte)value); + break; + // INT_SPD, ST_SLP, FN_SLP_ACC and FN_SLP_DEC are all related to the back EMF + // compensation functionality. Please see the datasheet for details of this + // function- it is too complex to discuss here. Default values seem to work + // well enough. + case INT_SPD: + ret_val = Param(value, 14); + break; + case ST_SLP: + ret_val = Xfer((byte)value); + break; + case FN_SLP_ACC: + ret_val = Xfer((byte)value); + break; + case FN_SLP_DEC: + ret_val = Xfer((byte)value); + break; + // K_THERM is motor winding thermal drift compensation. Please see the datasheet + // for full details on operation- the default value should be okay for most users. + case K_THERM: + ret_val = Xfer((byte)value & 0x0F); + break; + // ADC_OUT is a read-only register containing the result of the ADC measurements. + // This is less useful than it sounds; see the datasheet for more information. + case ADC_OUT: + ret_val = Xfer(0); + break; + // Set the overcurrent threshold. Ranges from 375mA to 6A in steps of 375mA. + // A set of defined constants is provided for the user's convenience. Default + // value is 3.375A- 0x08. This is a 4-bit value. + case OCD_TH: + ret_val = Xfer((byte)value & 0x0F); + break; + // Stall current threshold. Defaults to 0x40, or 2.03A. Value is from 31.25mA to + // 4A in 31.25mA steps. This is a 7-bit value. + case STALL_TH: + ret_val = Xfer((byte)value & 0x7F); + break; + // STEP_MODE controls the microstepping settings, as well as the generation of an + // output signal from the dSPIN. Bits 2:0 control the number of microsteps per + // step the part will generate. Bit 7 controls whether the BUSY/SYNC pin outputs + // a BUSY signal or a step synchronization signal. Bits 6:4 control the frequency + // of the output signal relative to the full-step frequency; see datasheet for + // that relationship as it is too complex to reproduce here. + // Most likely, only the microsteps per step value will be needed; there is a set + // of constants provided for ease of use of these values. + case STEP_MODE: + ret_val = Xfer((byte)value); + break; + // ALARM_EN controls which alarms will cause the FLAG pin to fall. A set of constants + // is provided to make this easy to interpret. By default, ALL alarms will trigger the + // FLAG pin. + case ALARM_EN: + ret_val = Xfer((byte)value); + break; + // CONFIG contains some assorted configuration bits and fields. A fairly comprehensive + // set of reasonably self-explanatory constants is provided, but users should refer + // to the datasheet before modifying the contents of this register to be certain they + // understand the implications of their modifications. Value on boot is 0x2E88; this + // can be a useful way to verify proper start up and operation of the dSPIN chip. + case CONFIG: + ret_val = Param(value, 16); + break; + // STATUS contains read-only information about the current condition of the chip. A + // comprehensive set of constants for masking and testing this register is provided, but + // users should refer to the datasheet to ensure that they fully understand each one of + // the bits in the register. + case STATUS: // STATUS is a read-only register + ret_val = Param(0, 16); + break; + default: + ret_val = Xfer((byte)(value)); + break; + } + return ret_val; +} diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.h b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.h new file mode 100644 index 000000000..8b5768646 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/L6470.h @@ -0,0 +1,286 @@ +//////////////////////////////////////////////////////////// +//ORIGINAL CODE 12/12/2011- Mike Hord, SparkFun Electronics +//LIBRARY Created by Adam Meyer of bildr Aug 18th 2012 +//Released as MIT license +//////////////////////////////////////////////////////////// +#ifndef L6470_h +#define L6470_h + +#include +#include + +#define SLAVE_SELECT_PIN 38 // Wire this to the CSN pin +// #define RESET 6 // Wire this to the STBY line +#define BUSYN 7 // Wire this to the BSYN line + +// constant definitions for overcurrent thresholds. Write these values to +// register dSPIN_OCD_TH to set the level at which an overcurrent even occurs. +#define OCD_TH_375mA 0x00 +#define OCD_TH_750mA 0x01 +#define OCD_TH_1125mA 0x02 +#define OCD_TH_1500mA 0x03 +#define OCD_TH_1875mA 0x04 +#define OCD_TH_2250mA 0x05 +#define OCD_TH_2625mA 0x06 +#define OCD_TH_3000mA 0x07 +#define OCD_TH_3375mA 0x08 +#define OCD_TH_3750mA 0x09 +#define OCD_TH_4125mA 0x0A +#define OCD_TH_4500mA 0x0B +#define OCD_TH_4875mA 0x0C +#define OCD_TH_5250mA 0x0D +#define OCD_TH_5625mA 0x0E +#define OCD_TH_6000mA 0x0F + +// STEP_MODE option values. +// First comes the "microsteps per step" options... +#define STEP_MODE_STEP_SEL 0x07 // Mask for these bits only. +#define STEP_SEL_1 0x00 +#define STEP_SEL_1_2 0x01 +#define STEP_SEL_1_4 0x02 +#define STEP_SEL_1_8 0x03 +#define STEP_SEL_1_16 0x04 +#define STEP_SEL_1_32 0x05 +#define STEP_SEL_1_64 0x06 +#define STEP_SEL_1_128 0x07 + +// ...next, define the SYNC_EN bit. When set, the BUSYN pin will instead +// output a clock related to the full-step frequency as defined by the +// SYNC_SEL bits below. +#define STEP_MODE_SYNC_EN 0x80 // Mask for this bit +#define SYNC_EN 0x80 + +// ...last, define the SYNC_SEL modes. The clock output is defined by +// the full-step frequency and the value in these bits- see the datasheet +// for a matrix describing that relationship (page 46). +#define STEP_MODE_SYNC_SEL 0x70 +#define SYNC_SEL_1_2 0x00 +#define SYNC_SEL_1 0x10 +#define SYNC_SEL_2 0x20 +#define SYNC_SEL_4 0x30 +#define SYNC_SEL_8 0x40 +#define SYNC_SEL_16 0x50 +#define SYNC_SEL_32 0x60 +#define SYNC_SEL_64 0x70 + +// Bit names for the ALARM_EN register. +// Each of these bits defines one potential alarm condition. +// When one of these conditions occurs and the respective bit in ALARM_EN is set, +// the FLAG pin will go low. The register must be queried to determine which event +// caused the alarm. +#define ALARM_EN_OVERCURRENT 0x01 +#define ALARM_EN_THERMAL_SHUTDOWN 0x02 +#define ALARM_EN_THERMAL_WARNING 0x04 +#define ALARM_EN_UNDER_VOLTAGE 0x08 +#define ALARM_EN_STALL_DET_A 0x10 +#define ALARM_EN_STALL_DET_B 0x20 +#define ALARM_EN_SW_TURN_ON 0x40 +#define ALARM_EN_WRONG_NPERF_CMD 0x80 + +// CONFIG register renames. + +// Oscillator options. +// The dSPIN needs to know what the clock frequency is because it uses that for some +// calculations during operation. +#define CONFIG_OSC_SEL 0x000F // Mask for this bit field. +#define CONFIG_INT_16MHZ 0x0000 // Internal 16MHz, no output +#define CONFIG_INT_16MHZ_OSCOUT_2MHZ 0x0008 // Default; internal 16MHz, 2MHz output +#define CONFIG_INT_16MHZ_OSCOUT_4MHZ 0x0009 // Internal 16MHz, 4MHz output +#define CONFIG_INT_16MHZ_OSCOUT_8MHZ 0x000A // Internal 16MHz, 8MHz output +#define CONFIG_INT_16MHZ_OSCOUT_16MHZ 0x000B // Internal 16MHz, 16MHz output +#define CONFIG_EXT_8MHZ_XTAL_DRIVE 0x0004 // External 8MHz crystal +#define CONFIG_EXT_16MHZ_XTAL_DRIVE 0x0005 // External 16MHz crystal +#define CONFIG_EXT_24MHZ_XTAL_DRIVE 0x0006 // External 24MHz crystal +#define CONFIG_EXT_32MHZ_XTAL_DRIVE 0x0007 // External 32MHz crystal +#define CONFIG_EXT_8MHZ_OSCOUT_INVERT 0x000C // External 8MHz crystal, output inverted +#define CONFIG_EXT_16MHZ_OSCOUT_INVERT 0x000D // External 16MHz crystal, output inverted +#define CONFIG_EXT_24MHZ_OSCOUT_INVERT 0x000E // External 24MHz crystal, output inverted +#define CONFIG_EXT_32MHZ_OSCOUT_INVERT 0x000F // External 32MHz crystal, output inverted + +// Configure the functionality of the external switch input +#define CONFIG_SW_MODE 0x0010 // Mask for this bit. +#define CONFIG_SW_HARD_STOP 0x0000 // Default; hard stop motor on switch. +#define CONFIG_SW_USER 0x0010 // Tie to the GoUntil and ReleaseSW + // commands to provide jog function. + // See page 25 of datasheet. + +// Configure the motor voltage compensation mode (see page 34 of datasheet) +#define CONFIG_EN_VSCOMP 0x0020 // Mask for this bit. +#define CONFIG_VS_COMP_DISABLE 0x0000 // Disable motor voltage compensation. +#define CONFIG_VS_COMP_ENABLE 0x0020 // Enable motor voltage compensation. + +// Configure overcurrent detection event handling +#define CONFIG_OC_SD 0x0080 // Mask for this bit. +#define CONFIG_OC_SD_DISABLE 0x0000 // Bridges do NOT shutdown on OC detect +#define CONFIG_OC_SD_ENABLE 0x0080 // Bridges shutdown on OC detect + +// Configure the slew rate of the power bridge output +#define CONFIG_POW_SR 0x0300 // Mask for this bit field. +#define CONFIG_SR_180V_us 0x0000 // 180V/us +#define CONFIG_SR_290V_us 0x0200 // 290V/us +#define CONFIG_SR_530V_us 0x0300 // 530V/us + +// Integer divisors for PWM sinewave generation +// See page 32 of the datasheet for more information on this. +#define CONFIG_F_PWM_DEC 0x1C00 // mask for this bit field +#define CONFIG_PWM_MUL_0_625 (0x00)<<10 +#define CONFIG_PWM_MUL_0_75 (0x01)<<10 +#define CONFIG_PWM_MUL_0_875 (0x02)<<10 +#define CONFIG_PWM_MUL_1 (0x03)<<10 +#define CONFIG_PWM_MUL_1_25 (0x04)<<10 +#define CONFIG_PWM_MUL_1_5 (0x05)<<10 +#define CONFIG_PWM_MUL_1_75 (0x06)<<10 +#define CONFIG_PWM_MUL_2 (0x07)<<10 + +// Multiplier for the PWM sinewave frequency +#define CONFIG_F_PWM_INT 0xE000 // mask for this bit field. +#define CONFIG_PWM_DIV_1 (0x00)<<13 +#define CONFIG_PWM_DIV_2 (0x01)<<13 +#define CONFIG_PWM_DIV_3 (0x02)<<13 +#define CONFIG_PWM_DIV_4 (0x03)<<13 +#define CONFIG_PWM_DIV_5 (0x04)<<13 +#define CONFIG_PWM_DIV_6 (0x05)<<13 +#define CONFIG_PWM_DIV_7 (0x06)<<13 + +// Status register bit renames- read-only bits conferring information about the +// device to the user. +#define STATUS_HIZ 0x0001 // high when bridges are in HiZ mode +#define STATUS_BUSY 0x0002 // mirrors BUSY pin +#define STATUS_SW_F 0x0004 // low when switch open, high when closed +#define STATUS_SW_EVN 0x0008 // active high, set on switch falling edge, + // cleared by reading STATUS +#define STATUS_DIR 0x0010 // Indicates current motor direction. + // High is FWD, Low is REV. +#define STATUS_NOTPERF_CMD 0x0080 // Last command not performed. +#define STATUS_WRONG_CMD 0x0100 // Last command not valid. +#define STATUS_UVLO 0x0200 // Undervoltage lockout is active +#define STATUS_TH_WRN 0x0400 // Thermal warning +#define STATUS_TH_SD 0x0800 // Thermal shutdown +#define STATUS_OCD 0x1000 // Overcurrent detected +#define STATUS_STEP_LOSS_A 0x2000 // Stall detected on A bridge +#define STATUS_STEP_LOSS_B 0x4000 // Stall detected on B bridge +#define STATUS_SCK_MOD 0x8000 // Step clock mode is active + +// Status register motor status field +#define STATUS_MOT_STATUS 0x0060 // field mask +#define STATUS_MOT_STATUS_STOPPED (0x0000)<<13 // Motor stopped +#define STATUS_MOT_STATUS_ACCELERATION (0x0001)<<13 // Motor accelerating +#define STATUS_MOT_STATUS_DECELERATION (0x0002)<<13 // Motor decelerating +#define STATUS_MOT_STATUS_CONST_SPD (0x0003)<<13 // Motor at constant speed + +// Register address redefines. +// See the Param_Handler() function for more info about these. +#define ABS_POS 0x01 +#define EL_POS 0x02 +#define MARK 0x03 +#define SPEED 0x04 +#define ACC 0x05 +#define DEC 0x06 +#define MAX_SPEED 0x07 +#define MIN_SPEED 0x08 +#define FS_SPD 0x15 +#define KVAL_HOLD 0x09 +#define KVAL_RUN 0x0A +#define KVAL_ACC 0x0B +#define KVAL_DEC 0x0C +#define INT_SPD 0x0D +#define ST_SLP 0x0E +#define FN_SLP_ACC 0x0F +#define FN_SLP_DEC 0x10 +#define K_THERM 0x11 +#define ADC_OUT 0x12 +#define OCD_TH 0x13 +#define STALL_TH 0x14 +#define STEP_MODE 0x16 +#define ALARM_EN 0x17 +#define CONFIG 0x18 +#define STATUS 0x19 + +//dSPIN commands +#define NOP 0x00 +#define SET_PARAM 0x00 +#define GET_PARAM 0x20 +#define RUN 0x50 +#define STEP_CLOCK 0x58 +#define MOVE 0x40 +#define GOTO 0x60 +#define GOTO_DIR 0x68 +#define GO_UNTIL 0x82 +#define RELEASE_SW 0x92 +#define GO_HOME 0x70 +#define GO_MARK 0x78 +#define RESET_POS 0xD8 +#define RESET_DEVICE 0xC0 +#define SOFT_STOP 0xB0 +#define HARD_STOP 0xB8 +#define SOFT_HIZ 0xA0 +#define HARD_HIZ 0xA8 +#define GET_STATUS 0xD0 + +/* dSPIN direction options */ +#define FWD 0x01 +#define REV 0x00 + +/* dSPIN action options */ +#define ACTION_RESET 0x00 +#define ACTION_COPY 0x01 + + +class L6470{ + + public: + + L6470(int SSPin); + void init(int k_value); + void setMicroSteps(int microSteps); + void setCurrent(int current); + void setMaxSpeed(int speed); + void setMinSpeed(int speed); + void setAcc(float acceleration); + void setDec(float deceleration); + void setOverCurrent(unsigned int ma_current); + void setThresholdSpeed(float threshold); + void setStallCurrent(float ma_current); + + unsigned long ParamHandler(byte param, unsigned long value); + void SetLowSpeedOpt(boolean enable); + void run(byte dir, float spd); + void Step_Clock(byte dir); + void goHome(); + void setAsHome(); + void goMark(); + void move(long n_step); + void goTo(long pos); + void goTo_DIR(byte dir, long pos); + void goUntil(byte act, byte dir, unsigned long spd); + boolean isBusy(); + void releaseSW(byte act, byte dir); + float getSpeed(); + long getPos(); + void setMark(); + void setMark(long value); + void resetPos(); + void resetDev(); + void softStop(); + void hardStop(); + void softFree(); + void free(); + int getStatus(); + void SetParam(byte param, unsigned long value); + + private: + long convert(unsigned long val); + unsigned long GetParam(byte param); + unsigned long AccCalc(float stepsPerSecPerSec); + unsigned long DecCalc(float stepsPerSecPerSec); + unsigned long MaxSpdCalc(float stepsPerSec); + unsigned long MinSpdCalc(float stepsPerSec); + unsigned long FSCalc(float stepsPerSec); + unsigned long IntSpdCalc(float stepsPerSec); + unsigned long SpdCalc(float stepsPerSec); + unsigned long Param(unsigned long value, byte bit_len); + byte Xfer(byte data); + int _SSPin; +}; + +#endif diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/L6470/keywords.txt b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/keywords.txt new file mode 100644 index 000000000..7caa3d019 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/L6470/keywords.txt @@ -0,0 +1,53 @@ +####################################################### +# keywords.txt - keywords file for the L6470 library +# +# ORIGINAL CODE 12/12/2011- Mike Hord, SparkFun Electronics +# Library by Adam Meyer of bildr Aug 18th 2012 +# +# Released as MIT license +####################################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +L6470 KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +L6470 KEYWORD2 +init KEYWORD2 +setMicroSteps KEYWORD2 +setCurrent KEYWORD2 +setMaxSpeed KEYWORD2 +setMinSpeed KEYWORD2 +setAcc KEYWORD2 +setDec KEYWORD2 +setOverCurrent KEYWORD2 +setThresholdSpeed KEYWORD2 +setStallCurrent KEYWORD2 +ParamHandler KEYWORD2 +SetLowSpeedOpt KEYWORD2 +run KEYWORD2 +Step_Clock KEYWORD2 +goHome KEYWORD2 +goMark KEYWORD2 +move KEYWORD2 +goTo KEYWORD2 +goTo_DIR KEYWORD2 +goUntil KEYWORD2 +isBusy KEYWORD2 +releaseSW KEYWORD2 +resetPos KEYWORD2 +resetDev KEYWORD2 +softStop KEYWORD2 +hardStop KEYWORD2 +softHiZ KEYWORD2 +hardHiZ KEYWORD2 +getStatus KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/.gitignore b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/.gitignore new file mode 100644 index 000000000..c0f77e480 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/.gitignore @@ -0,0 +1,17 @@ +#mac stuff +.DS_Store + +#eclipse stuff +.classpath +.project + +#processing stuff +generated/ +examples/TMC26XMotorTester/processing/TMC26XMotorTest/application.*/ +examples/TMC26XMotorTester/processing/TMC26XMotorTest/application.* + +#eagle stuff +schematics/*.b#? +schematics/*.s#? + +*.zip diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/Doxyfile b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/Doxyfile new file mode 100644 index 000000000..e169f0608 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/Doxyfile @@ -0,0 +1,1813 @@ +# Doxyfile 1.7.6.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or sequence of words) that should +# identify the project. Note that if you do not use Doxywizard you need +# to put quotes around the project name if it contains spaces. + +PROJECT_NAME = "Trinamic TMC26X Stepper Driver for Arduino" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer +# a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = /Users/marcus/Arduino/libraries/TMC26XStepper/documentation + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding +# "class=itcl::class" will allow you to use the command class in the +# itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and +# unions are shown inside the group in which they are included (e.g. using +# @ingroup) instead of on a separate page (for HTML and Man pages) or +# section (for LaTeX and RTF). + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and +# unions with only public data fields will be shown inline in the documentation +# of the scope in which they are defined (i.e. file, namespace, or group +# documentation), provided this scope is documented. If set to NO (the default), +# structs, classes, and unions are shown on a separate page (for HTML and Man +# pages) or section (for LaTeX and RTF). + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penalty. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +SYMBOL_CACHE_SIZE = 0 + +# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be +# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given +# their name and scope. Since this can be an expensive process and often the +# same symbol appear multiple times in the code, doxygen keeps a cache of +# pre-resolved symbols. If the cache is too small doxygen will become slower. +# If the cache is too large, memory is wasted. The cache size is given by this +# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to +# do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even +# if there is only one candidate or it is obvious which candidate to choose +# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 28 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files +# containing the references data. This must be a list of .bib files. The +# .bib extension is automatically appended if omitted. Using this command +# requires the bibtex tool to be installed. See also +# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style +# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this +# feature you need bibtex and perl available in the search path. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = /Users/marcus/Arduino/libraries/TMC26XStepper + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. Note that when using a custom header you are responsible +# for the proper inclusion of any scripts and style sheets that doxygen +# needs, which is dependent on the configuration options used. +# It is advised to generate a default header using "doxygen -w html +# header.html footer.html stylesheet.css YourConfigFile" and then modify +# that header. Note that the header is subject to change so you typically +# have to redo this when upgrading to a newer version of doxygen or when +# changing the value of configuration settings such as GENERATE_TREEVIEW! + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# style sheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that +# the files will be copied as-is; there are no commands or markers available. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the style sheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) +# at top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. Since the tabs have the same information as the +# navigation tree you can set this option to NO if you already set +# GENERATE_TREEVIEW to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. +# Since the tree basically has the same information as the tab index you +# could consider to set DISABLE_INDEX to NO when enabling this option. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values +# (range [0,1..20]) that doxygen will group on one line in the generated HTML +# documentation. Note that a value of 0 will completely suppress the enum +# values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the +# mathjax.org site, so you can quickly see the result without installing +# MathJax, but it is strongly recommended to install a local copy of MathJax +# before deployment. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension +# names that should be enabled during MathJax rendering. + +MATHJAX_EXTENSIONS = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = NO + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for +# the generated latex document. The footer should contain everything after +# the last chapter. If it is left blank doxygen will generate a +# standard footer. Notice: only use this tag if you know what you are doing! + +LATEX_FOOTER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +# The LATEX_BIB_STYLE tag can be used to specify the style to use for the +# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See +# http://en.wikipedia.org/wiki/BibTeX for more info. + +LATEX_BIB_STYLE = plain + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load style sheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# pointed to by INCLUDE_PATH will be searched when a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that +# overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will use the Helvetica font for all dot files that +# doxygen generates. When you want a differently looking font you can specify +# the font name using DOT_FONTNAME. You need to make sure dot is able to find +# the font, which can be done by putting it in a standard location or by setting +# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the Helvetica font. +# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to +# set the path where dot can find it. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are svg, png, jpg, or gif. +# If left blank png will be used. If you choose svg you need to set +# HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible in IE 9+ (other browsers do not have this requirement). + +DOT_IMAGE_FORMAT = png + +# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to +# enable generation of interactive SVG images that allow zooming and panning. +# Note that this requires a modern browser other than Internet Explorer. +# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you +# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files +# visible. Older versions of IE do not have SVG support. + +INTERACTIVE_SVG = NO + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/LICENSE b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/LICENSE new file mode 100644 index 000000000..11f5603ba --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/LICENSE @@ -0,0 +1,10 @@ + +Copyright (c) 2012 Interactive Matter + +based on the stepper library by Tom Igoe, et. al. + +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. diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/README.rst b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/README.rst new file mode 100644 index 000000000..648f3e253 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/README.rst @@ -0,0 +1,71 @@ +Arduino TMC26X Stepper Motor Controller Library +=============================================== + +License +------- + +TMC26XStepper.cpp - - TMC 260/261/262 Stepper library for Wiring/Arduino + +based on the stepper library by Tom Igoe, et. al. + +Copyright (c) 2011, Interactive Matter, Marcus Nowotny + +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. + +About +----- + +The TMC26X is a stepper motor controller for bipolar stepper motors. From the trinamic web site: + + The TMC262 is the first energy efficient high current high precision microstepping driver + IC for bipolar stepper motors. The unique high resolution sensorless load detection stallGuard2™ + is used to for the world’s first integrated load dependent current control feature called coolStep™. + The ability to read out the load and detect an overload makes the TMC262 an optimum choice for + drives where a high reliability is desired at a low cost. The new patented spreadCycle PWM mixed + decay chopper scheme ensures best zero crossing performance as well as high speed operation. + The TMC262 can be driven with Step & Direction signals as well as by serial SPI™ interface. + Using the microPlyer allows to operate the motor with highest 256 μStep smoothness reducing the + input frequency to 16 μSteps. A full set of protection and diagnostic features makes this device + very rugged. It directly drives external MOSFETs for currents of up to 6A. This way it reaches + highest energy efficiency and allows driving of a high motor current without cooling measures + even at high environment temperatures. + + +The unique features of the TMC26X are that everything can (and must) be controlled in software: + +* the motor current +* microstepping +* stall protection +* current reduction according to load +* stallGuard2™ sensorless load detection +* coolStep™ load dependent current control +* spreadCycle hysteresis PWM chopper +* microPlyer 16-to-256 μStep multiplier +* full protection and diagnostics + +This makes the TMC26X a bit harder to use than other stepper motors but much more versatile. +This library resolves all the complicated stuff so that you can use TMC26X straight away. +Furthermore, all the settings are implemented in high level interfaces so that configuring your +motor is a breeze. + +How to use +---------- + +Check out the Setup Guide here: +And the How To here: \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.cpp b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.cpp new file mode 100644 index 000000000..389264ca4 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.cpp @@ -0,0 +1,999 @@ +/* + TMC26XStepper.cpp - - TMC26X Stepper library for Wiring/Arduino + + based on the stepper library by Tom Igoe, et. al. + + Copyright (c) 2011, Interactive Matter, Marcus Nowotny + + 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. + + */ + +#if defined(ARDUINO) && ARDUINO >= 100 + #include +#else + #include +#endif +#include +#include "TMC26XStepper.h" + +//some default values used in initialization +#define DEFAULT_MICROSTEPPING_VALUE 32 + +//TMC26X register definitions +#define DRIVER_CONTROL_REGISTER 0x0ul +#define CHOPPER_CONFIG_REGISTER 0x80000ul +#define COOL_STEP_REGISTER 0xA0000ul +#define STALL_GUARD2_LOAD_MEASURE_REGISTER 0xC0000ul +#define DRIVER_CONFIG_REGISTER 0xE0000ul + +#define REGISTER_BIT_PATTERN 0xFFFFFul + +//definitions for the driver control register +#define MICROSTEPPING_PATTERN 0xFul +#define STEP_INTERPOLATION 0x200ul +#define DOUBLE_EDGE_STEP 0x100ul +#define VSENSE 0x40ul +#define READ_MICROSTEP_POSTION 0x0ul +#define READ_STALL_GUARD_READING 0x10ul +#define READ_STALL_GUARD_AND_COOL_STEP 0x20ul +#define READ_SELECTION_PATTERN 0x30ul + +//definitions for the chopper config register +#define CHOPPER_MODE_STANDARD 0x0ul +#define CHOPPER_MODE_T_OFF_FAST_DECAY 0x4000ul +#define T_OFF_PATTERN 0xful +#define RANDOM_TOFF_TIME 0x2000ul +#define BLANK_TIMING_PATTERN 0x18000ul +#define BLANK_TIMING_SHIFT 15 +#define HYSTERESIS_DECREMENT_PATTERN 0x1800ul +#define HYSTERESIS_DECREMENT_SHIFT 11 +#define HYSTERESIS_LOW_VALUE_PATTERN 0x780ul +#define HYSTERESIS_LOW_SHIFT 7 +#define HYSTERESIS_START_VALUE_PATTERN 0x78ul +#define HYSTERESIS_START_VALUE_SHIFT 4 +#define T_OFF_TIMING_PATERN 0xFul + +//definitions for cool step register +#define MINIMUM_CURRENT_FOURTH 0x8000ul +#define CURRENT_DOWN_STEP_SPEED_PATTERN 0x6000ul +#define SE_MAX_PATTERN 0xF00ul +#define SE_CURRENT_STEP_WIDTH_PATTERN 0x60ul +#define SE_MIN_PATTERN 0xful + +//definitions for stall guard2 current register +#define STALL_GUARD_FILTER_ENABLED 0x10000ul +#define STALL_GUARD_TRESHHOLD_VALUE_PATTERN 0x17F00ul +#define CURRENT_SCALING_PATTERN 0x1Ful +#define STALL_GUARD_CONFIG_PATTERN 0x17F00ul +#define STALL_GUARD_VALUE_PATTERN 0x7F00ul + +//definitions for the input from the TCM260 +#define STATUS_STALL_GUARD_STATUS 0x1ul +#define STATUS_OVER_TEMPERATURE_SHUTDOWN 0x2ul +#define STATUS_OVER_TEMPERATURE_WARNING 0x4ul +#define STATUS_SHORT_TO_GROUND_A 0x8ul +#define STATUS_SHORT_TO_GROUND_B 0x10ul +#define STATUS_OPEN_LOAD_A 0x20ul +#define STATUS_OPEN_LOAD_B 0x40ul +#define STATUS_STAND_STILL 0x80ul +#define READOUT_VALUE_PATTERN 0xFFC00ul + +//default values +#define INITIAL_MICROSTEPPING 0x3ul //32th microstepping + +//debuging output +//#define DEBUG + +/* + * Constructor + * number_of_steps - the steps per rotation + * cs_pin - the SPI client select pin + * dir_pin - the pin where the direction pin is connected + * step_pin - the pin where the step pin is connected + */ +TMC26XStepper::TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor) +{ + //we are not started yet + started=false; + //by default cool step is not enabled + cool_step_enabled=false; + + //save the pins for later use + this->cs_pin=cs_pin; + this->dir_pin=dir_pin; + this->step_pin = step_pin; + + //store the current sense resistor value for later use + this->resistor = resistor; + + //initizalize our status values + this->steps_left = 0; + this->direction = 0; + + //initialize register values + driver_control_register_value=DRIVER_CONTROL_REGISTER | INITIAL_MICROSTEPPING; + chopper_config_register=CHOPPER_CONFIG_REGISTER; + + //setting the default register values + driver_control_register_value=DRIVER_CONTROL_REGISTER|INITIAL_MICROSTEPPING; + microsteps = (1 << INITIAL_MICROSTEPPING); + chopper_config_register=CHOPPER_CONFIG_REGISTER; + cool_step_register_value=COOL_STEP_REGISTER; + stall_guard2_current_register_value=STALL_GUARD2_LOAD_MEASURE_REGISTER; + driver_configuration_register_value = DRIVER_CONFIG_REGISTER | READ_STALL_GUARD_READING; + + //set the current + setCurrent(current); + //set to a conservative start value + setConstantOffTimeChopper(7, 54, 13,12,1); + //set a nice microstepping value + setMicrosteps(DEFAULT_MICROSTEPPING_VALUE); + //save the number of steps + this->number_of_steps = number_of_steps; +} + + +/* + * start & configure the stepper driver + * just must be called. + */ +void TMC26XStepper::start() { + +#ifdef DEBUG + Serial.println("TMC26X stepper library"); + Serial.print("CS pin: "); + Serial.println(cs_pin); + Serial.print("DIR pin: "); + Serial.println(dir_pin); + Serial.print("STEP pin: "); + Serial.println(step_pin); + Serial.print("current scaling: "); + Serial.println(current_scaling,DEC); +#endif + //set the pins as output & its initial value + pinMode(step_pin, OUTPUT); + pinMode(dir_pin, OUTPUT); + pinMode(cs_pin, OUTPUT); + digitalWrite(step_pin, LOW); + digitalWrite(dir_pin, LOW); + digitalWrite(cs_pin, HIGH); + + //configure the SPI interface + SPI.setBitOrder(MSBFIRST); + SPI.setClockDivider(SPI_CLOCK_DIV8); + //todo this does not work reliably - find a way to foolprof set it (e.g. while communicating + //SPI.setDataMode(SPI_MODE3); + SPI.begin(); + + //set the initial values + send262(driver_control_register_value); + send262(chopper_config_register); + send262(cool_step_register_value); + send262(stall_guard2_current_register_value); + send262(driver_configuration_register_value); + + //save that we are in running mode + started=true; +} + +/* + Mark the driver as unstarted to be able to start it again + */ +void TMC26XStepper::un_start() { + started=false; +} + + +/* + Sets the speed in revs per minute + +*/ +void TMC26XStepper::setSpeed(unsigned int whatSpeed) +{ + this->speed = whatSpeed; + this->step_delay = (60UL * 1000UL * 1000UL) / ((unsigned long)this->number_of_steps * (unsigned long)whatSpeed * (unsigned long)this->microsteps); +#ifdef DEBUG + Serial.print("Step delay in micros: "); + Serial.println(this->step_delay); +#endif + //update the next step time + this->next_step_time = this->last_step_time+this->step_delay; + +} + +unsigned int TMC26XStepper::getSpeed(void) { + return this->speed; +} + +/* + Moves the motor steps_to_move steps. If the number is negative, + the motor moves in the reverse direction. + */ +char TMC26XStepper::step(int steps_to_move) +{ + if (this->steps_left==0) { + this->steps_left = abs(steps_to_move); // how many steps to take + + // determine direction based on whether steps_to_mode is + or -: + if (steps_to_move > 0) { + this->direction = 1; + } else if (steps_to_move < 0) { + this->direction = 0; + } + return 0; + } else { + return -1; + } +} + +char TMC26XStepper::move(void) { + // decrement the number of steps, moving one step each time: + if(this->steps_left>0) { + unsigned long time = micros(); + // move only if the appropriate delay has passed: + if (time >= this->next_step_time) { + // increment or decrement the step number, + // depending on direction: + if (this->direction == 1) { + digitalWrite(step_pin, HIGH); + } else { + digitalWrite(dir_pin, HIGH); + digitalWrite(step_pin, HIGH); + } + // get the timeStamp of when you stepped: + this->last_step_time = time; + this->next_step_time = time+this->step_delay; + // decrement the steps left: + steps_left--; + //disable the step & dir pins + digitalWrite(step_pin, LOW); + digitalWrite(dir_pin, LOW); + } + return -1; + } + return 0; +} + +char TMC26XStepper::isMoving(void) { + return (this->steps_left>0); +} + +unsigned int TMC26XStepper::getStepsLeft(void) { + return this->steps_left; +} + +char TMC26XStepper::stop(void) { + //note to self if the motor is currently moving + char state = isMoving(); + //stop the motor + this->steps_left = 0; + this->direction = 0; + //return if it was moving + return state; +} + +void TMC26XStepper::setCurrent(unsigned int current) { + unsigned char current_scaling = 0; + //calculate the current scaling from the max current setting (in mA) + double mASetting = (double)current; + double resistor_value = (double) this->resistor; + // remove vesense flag + this->driver_configuration_register_value &= ~(VSENSE); + //this is derrived from I=(cs+1)/32*(Vsense/Rsense) + //leading to cs = CS = 32*R*I/V (with V = 0,31V oder 0,165V and I = 1000*current) + //with Rsense=0,15 + //for vsense = 0,310V (VSENSE not set) + //or vsense = 0,165V (VSENSE set) + current_scaling = (byte)((resistor_value*mASetting*32.0/(0.31*1000.0*1000.0))-0.5); //theoretically - 1.0 for better rounding it is 0.5 + + //check if the current scalingis too low + if (current_scaling<16) { + //set the csense bit to get a use half the sense voltage (to support lower motor currents) + this->driver_configuration_register_value |= VSENSE; + //and recalculate the current setting + current_scaling = (byte)((resistor_value*mASetting*32.0/(0.165*1000.0*1000.0))-0.5); //theoretically - 1.0 for better rounding it is 0.5 +#ifdef DEBUG + Serial.print("CS (Vsense=1): "); + Serial.println(current_scaling); + } else { + Serial.print("CS: "); + Serial.println(current_scaling); +#endif + } + + //do some sanity checks + if (current_scaling>31) { + current_scaling=31; + } + //delete the old value + stall_guard2_current_register_value &= ~(CURRENT_SCALING_PATTERN); + //set the new current scaling + stall_guard2_current_register_value |= current_scaling; + //if started we directly send it to the motor + if (started) { + send262(driver_configuration_register_value); + send262(stall_guard2_current_register_value); + } +} + +unsigned int TMC26XStepper::getCurrent(void) { + //we calculate the current according to the datasheet to be on the safe side + //this is not the fastest but the most accurate and illustrative way + double result = (double)(stall_guard2_current_register_value & CURRENT_SCALING_PATTERN); + double resistor_value = (double)this->resistor; + double voltage = (driver_configuration_register_value & VSENSE)? 0.165:0.31; + result = (result+1.0)/32.0*voltage/resistor_value*1000.0*1000.0; + return (unsigned int)result; +} + +void TMC26XStepper::setStallGuardThreshold(char stall_guard_threshold, char stall_guard_filter_enabled) { + if (stall_guard_threshold<-64) { + stall_guard_threshold = -64; + //We just have 5 bits + } else if (stall_guard_threshold > 63) { + stall_guard_threshold = 63; + } + //add trim down to 7 bits + stall_guard_threshold &=0x7f; + //delete old stall guard settings + stall_guard2_current_register_value &= ~(STALL_GUARD_CONFIG_PATTERN); + if (stall_guard_filter_enabled) { + stall_guard2_current_register_value |= STALL_GUARD_FILTER_ENABLED; + } + //Set the new stall guard threshold + stall_guard2_current_register_value |= (((unsigned long)stall_guard_threshold << 8) & STALL_GUARD_CONFIG_PATTERN); + //if started we directly send it to the motor + if (started) { + send262(stall_guard2_current_register_value); + } +} + +char TMC26XStepper::getStallGuardThreshold(void) { + unsigned long stall_guard_threshold = stall_guard2_current_register_value & STALL_GUARD_VALUE_PATTERN; + //shift it down to bit 0 + stall_guard_threshold >>=8; + //convert the value to an int to correctly handle the negative numbers + char result = stall_guard_threshold; + //check if it is negative and fill it up with leading 1 for proper negative number representation + if (result & _BV(6)) { + result |= 0xC0; + } + return result; +} + +char TMC26XStepper::getStallGuardFilter(void) { + if (stall_guard2_current_register_value & STALL_GUARD_FILTER_ENABLED) { + return -1; + } else { + return 0; + } +} +/* + * Set the number of microsteps per step. + * 0,2,4,8,16,32,64,128,256 is supported + * any value in between will be mapped to the next smaller value + * 0 and 1 set the motor in full step mode + */ +void TMC26XStepper::setMicrosteps(int number_of_steps) { + long setting_pattern; + //poor mans log + if (number_of_steps>=256) { + setting_pattern=0; + microsteps=256; + } else if (number_of_steps>=128) { + setting_pattern=1; + microsteps=128; + } else if (number_of_steps>=64) { + setting_pattern=2; + microsteps=64; + } else if (number_of_steps>=32) { + setting_pattern=3; + microsteps=32; + } else if (number_of_steps>=16) { + setting_pattern=4; + microsteps=16; + } else if (number_of_steps>=8) { + setting_pattern=5; + microsteps=8; + } else if (number_of_steps>=4) { + setting_pattern=6; + microsteps=4; + } else if (number_of_steps>=2) { + setting_pattern=7; + microsteps=2; + //1 and 0 lead to full step + } else if (number_of_steps<=1) { + setting_pattern=8; + microsteps=1; + } +#ifdef DEBUG + Serial.print("Microstepping: "); + Serial.println(microsteps); +#endif + //delete the old value + this->driver_control_register_value &=0xFFFF0ul; + //set the new value + this->driver_control_register_value |=setting_pattern; + + //if started we directly send it to the motor + if (started) { + send262(driver_control_register_value); + } + //recalculate the stepping delay by simply setting the speed again + this->setSpeed(this->speed); +} + +/* + * returns the effective number of microsteps at the moment + */ +int TMC26XStepper::getMicrosteps(void) { + return microsteps; +} + +/* + * constant_off_time: The off time setting controls the minimum chopper frequency. + * For most applications an off time within the range of 5μs to 20μs will fit. + * 2...15: off time setting + * + * blank_time: Selects the comparator blank time. This time needs to safely cover the switching event and the + * duration of the ringing on the sense resistor. For + * 0: min. setting 3: max. setting + * + * fast_decay_time_setting: Fast decay time setting. With CHM=1, these bits control the portion of fast decay for each chopper cycle. + * 0: slow decay only + * 1...15: duration of fast decay phase + * + * sine_wave_offset: Sine wave offset. With CHM=1, these bits control the sine wave offset. + * A positive offset corrects for zero crossing error. + * -3..-1: negative offset 0: no offset 1...12: positive offset + * + * use_current_comparator: Selects usage of the current comparator for termination of the fast decay cycle. + * If current comparator is enabled, it terminates the fast decay cycle in case the current + * reaches a higher negative value than the actual positive value. + * 1: enable comparator termination of fast decay cycle + * 0: end by time only + */ +void TMC26XStepper::setConstantOffTimeChopper(char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator) { + //perform some sanity checks + if (constant_off_time<2) { + constant_off_time=2; + } else if (constant_off_time>15) { + constant_off_time=15; + } + //save the constant off time + this->constant_off_time = constant_off_time; + char blank_value; + //calculate the value acc to the clock cycles + if (blank_time>=54) { + blank_value=3; + } else if (blank_time>=36) { + blank_value=2; + } else if (blank_time>=24) { + blank_value=1; + } else { + blank_value=0; + } + if (fast_decay_time_setting<0) { + fast_decay_time_setting=0; + } else if (fast_decay_time_setting>15) { + fast_decay_time_setting=15; + } + if (sine_wave_offset < -3) { + sine_wave_offset = -3; + } else if (sine_wave_offset>12) { + sine_wave_offset = 12; + } + //shift the sine_wave_offset + sine_wave_offset +=3; + + //calculate the register setting + //first of all delete all the values for this + chopper_config_register &= ~((1<<12) | BLANK_TIMING_PATTERN | HYSTERESIS_DECREMENT_PATTERN | HYSTERESIS_LOW_VALUE_PATTERN | HYSTERESIS_START_VALUE_PATTERN | T_OFF_TIMING_PATERN); + //set the constant off pattern + chopper_config_register |= CHOPPER_MODE_T_OFF_FAST_DECAY; + //set the blank timing value + chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT; + //setting the constant off time + chopper_config_register |= constant_off_time; + //set the fast decay time + //set msb + chopper_config_register |= (((unsigned long)(fast_decay_time_setting & 0x8))<15) { + constant_off_time=15; + } + //save the constant off time + this->constant_off_time = constant_off_time; + char blank_value; + //calculate the value acc to the clock cycles + if (blank_time>=54) { + blank_value=3; + } else if (blank_time>=36) { + blank_value=2; + } else if (blank_time>=24) { + blank_value=1; + } else { + blank_value=0; + } + if (hysteresis_start<1) { + hysteresis_start=1; + } else if (hysteresis_start>8) { + hysteresis_start=8; + } + hysteresis_start--; + + if (hysteresis_end < -3) { + hysteresis_end = -3; + } else if (hysteresis_end>12) { + hysteresis_end = 12; + } + //shift the hysteresis_end + hysteresis_end +=3; + + if (hysteresis_decrement<0) { + hysteresis_decrement=0; + } else if (hysteresis_decrement>3) { + hysteresis_decrement=3; + } + + //first of all delete all the values for this + chopper_config_register &= ~(CHOPPER_MODE_T_OFF_FAST_DECAY | BLANK_TIMING_PATTERN | HYSTERESIS_DECREMENT_PATTERN | HYSTERESIS_LOW_VALUE_PATTERN | HYSTERESIS_START_VALUE_PATTERN | T_OFF_TIMING_PATERN); + + //set the blank timing value + chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT; + //setting the constant off time + chopper_config_register |= constant_off_time; + //set the hysteresis_start + chopper_config_register |= ((unsigned long)hysteresis_start) << HYSTERESIS_START_VALUE_SHIFT; + //set the hysteresis end + chopper_config_register |= ((unsigned long)hysteresis_end) << HYSTERESIS_LOW_SHIFT; + //set the hystereis decrement + chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT; + //if started we directly send it to the motor + if (started) { + send262(driver_control_register_value); + } +} + +/* + * In a constant off time chopper scheme both coil choppers run freely, i.e. are not synchronized. + * The frequency of each chopper mainly depends on the coil current and the position dependant motor coil inductivity, thus it depends on the microstep position. + * With some motors a slightly audible beat can occur between the chopper frequencies, especially when they are near to each other. This typically occurs at a + * few microstep positions within each quarter wave. This effect normally is not audible when compared to mechanical noise generated by ball bearings, etc. + * Further factors which can cause a similar effect are a poor layout of sense resistor GND connection. + * Hint: A common factor, which can cause motor noise, is a bad PCB layout causing coupling of both sense resistor voltages + * (please refer to sense resistor layout hint in chapter 8.1). + * In order to minimize the effect of a beat between both chopper frequencies, an internal random generator is provided. + * It modulates the slow decay time setting when switched on by the RNDTF bit. The RNDTF feature further spreads the chopper spectrum, + * reducing electromagnetic emission on single frequencies. + */ +void TMC26XStepper::setRandomOffTime(char value) { + if (value) { + chopper_config_register |= RANDOM_TOFF_TIME; + } else { + chopper_config_register &= ~(RANDOM_TOFF_TIME); + } + //if started we directly send it to the motor + if (started) { + send262(driver_control_register_value); + } +} + +void TMC26XStepper::setCoolStepConfiguration(unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size, + unsigned char current_increment_step_size, unsigned char lower_current_limit) { + //sanitize the input values + if (lower_SG_threshold>480) { + lower_SG_threshold = 480; + } + //divide by 32 + lower_SG_threshold >>=5; + if (SG_hysteresis>480) { + SG_hysteresis=480; + } + //divide by 32 + SG_hysteresis >>=5; + if (current_decrement_step_size>3) { + current_decrement_step_size=3; + } + if (current_increment_step_size>3) { + current_increment_step_size=3; + } + if (lower_current_limit>1) { + lower_current_limit=1; + } + //store the lower level in order to enable/disable the cool step + this->cool_step_lower_threshold=lower_SG_threshold; + //if cool step is not enabled we delete the lower value to keep it disabled + if (!this->cool_step_enabled) { + lower_SG_threshold=0; + } + //the good news is that we can start with a complete new cool step register value + //and simply set the values in the register + cool_step_register_value = ((unsigned long)lower_SG_threshold) | (((unsigned long)SG_hysteresis)<<8) | (((unsigned long)current_decrement_step_size)<<5) + | (((unsigned long)current_increment_step_size)<<13) | (((unsigned long)lower_current_limit)<<15) + //and of course we have to include the signature of the register + | COOL_STEP_REGISTER; + //Serial.println(cool_step_register_value,HEX); + if (started) { + send262(cool_step_register_value); + } +} + +void TMC26XStepper::setCoolStepEnabled(boolean enabled) { + //simply delete the lower limit to disable the cool step + cool_step_register_value &= ~SE_MIN_PATTERN; + //and set it to the proper value if cool step is to be enabled + if (enabled) { + cool_step_register_value |=this->cool_step_lower_threshold; + } + //and save the enabled status + this->cool_step_enabled = enabled; + //save the register value + if (started) { + send262(cool_step_register_value); + } +} + +boolean TMC26XStepper::isCoolStepEnabled(void) { + return this->cool_step_enabled; +} + +unsigned int TMC26XStepper::getCoolStepLowerSgThreshold() { + //we return our internally stored value - in order to provide the correct setting even if cool step is not enabled + return this->cool_step_lower_threshold<<5; +} + +unsigned int TMC26XStepper::getCoolStepUpperSgThreshold() { + return (unsigned char)((cool_step_register_value & SE_MAX_PATTERN)>>8)<<5; +} + +unsigned char TMC26XStepper::getCoolStepCurrentIncrementSize() { + return (unsigned char)((cool_step_register_value & CURRENT_DOWN_STEP_SPEED_PATTERN)>>13); +} + +unsigned char TMC26XStepper::getCoolStepNumberOfSGReadings() { + return (unsigned char)((cool_step_register_value & SE_CURRENT_STEP_WIDTH_PATTERN)>>5); +} + +unsigned char TMC26XStepper::getCoolStepLowerCurrentLimit() { + return (unsigned char)((cool_step_register_value & MINIMUM_CURRENT_FOURTH)>>15); +} + +void TMC26XStepper::setEnabled(boolean enabled) { + //delete the t_off in the chopper config to get sure + chopper_config_register &= ~(T_OFF_PATTERN); + if (enabled) { + //and set the t_off time + chopper_config_register |= this->constant_off_time; + } + //if not enabled we don't have to do anything since we already delete t_off from the register + if (started) { + send262(chopper_config_register); + } +} + +boolean TMC26XStepper::isEnabled() { + if (chopper_config_register & T_OFF_PATTERN) { + return true; + } else { + return false; + } +} + +/* + * reads a value from the TMC26X status register. The value is not obtained directly but can then + * be read by the various status routines. + * + */ +void TMC26XStepper::readStatus(char read_value) { + unsigned long old_driver_configuration_register_value = driver_configuration_register_value; + //reset the readout configuration + driver_configuration_register_value &= ~(READ_SELECTION_PATTERN); + //this now equals TMC26X_READOUT_POSITION - so we just have to check the other two options + if (read_value == TMC26X_READOUT_STALLGUARD) { + driver_configuration_register_value |= READ_STALL_GUARD_READING; + } else if (read_value == TMC26X_READOUT_CURRENT) { + driver_configuration_register_value |= READ_STALL_GUARD_AND_COOL_STEP; + } + //all other cases are ignored to prevent funny values + //check if the readout is configured for the value we are interested in + if (driver_configuration_register_value!=old_driver_configuration_register_value) { + //because then we need to write the value twice - one time for configuring, second time to get the value, see below + send262(driver_configuration_register_value); + } + //write the configuration to get the last status + send262(driver_configuration_register_value); +} + +int TMC26XStepper::getMotorPosition(void) { + //we read it out even if we are not started yet - perhaps it is useful information for somebody + readStatus(TMC26X_READOUT_POSITION); + return getReadoutValue(); +} + +//reads the stall guard setting from last status +//returns -1 if stallguard information is not present +int TMC26XStepper::getCurrentStallGuardReading(void) { + //if we don't yet started there cannot be a stall guard value + if (!started) { + return -1; + } + //not time optimal, but solution optiomal: + //first read out the stall guard value + readStatus(TMC26X_READOUT_STALLGUARD); + return getReadoutValue(); +} + +unsigned char TMC26XStepper::getCurrentCSReading(void) { + //if we don't yet started there cannot be a stall guard value + if (!started) { + return 0; + } + //not time optimal, but solution optiomal: + //first read out the stall guard value + readStatus(TMC26X_READOUT_CURRENT); + return (getReadoutValue() & 0x1f); +} + +unsigned int TMC26XStepper::getCurrentCurrent(void) { + double result = (double)getCurrentCSReading(); + double resistor_value = (double)this->resistor; + double voltage = (driver_configuration_register_value & VSENSE)? 0.165:0.31; + result = (result+1.0)/32.0*voltage/resistor_value*1000.0*1000.0; + return (unsigned int)result; +} + +/* + return true if the stallguard threshold has been reached +*/ +boolean TMC26XStepper::isStallGuardOverThreshold(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_STALL_GUARD_STATUS); +} + +/* + returns if there is any over temperature condition: + OVER_TEMPERATURE_PREWARING if pre warning level has been reached + OVER_TEMPERATURE_SHUTDOWN if the temperature is so hot that the driver is shut down + Any of those levels are not too good. +*/ +char TMC26XStepper::getOverTemperature(void) { + if (!this->started) { + return 0; + } + if (driver_status_result & STATUS_OVER_TEMPERATURE_SHUTDOWN) { + return TMC26X_OVERTEMPERATURE_SHUTDOWN; + } + if (driver_status_result & STATUS_OVER_TEMPERATURE_WARNING) { + return TMC26X_OVERTEMPERATURE_PREWARING; + } + return 0; +} + +//is motor channel A shorted to ground +boolean TMC26XStepper::isShortToGroundA(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_SHORT_TO_GROUND_A); +} + +//is motor channel B shorted to ground +boolean TMC26XStepper::isShortToGroundB(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_SHORT_TO_GROUND_B); +} + +//is motor channel A connected +boolean TMC26XStepper::isOpenLoadA(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_OPEN_LOAD_A); +} + +//is motor channel B connected +boolean TMC26XStepper::isOpenLoadB(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_OPEN_LOAD_B); +} + +//is chopper inactive since 2^20 clock cycles - defaults to ~0,08s +boolean TMC26XStepper::isStandStill(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_STAND_STILL); +} + +//is chopper inactive since 2^20 clock cycles - defaults to ~0,08s +boolean TMC26XStepper::isStallGuardReached(void) { + if (!this->started) { + return false; + } + return (driver_status_result & STATUS_STALL_GUARD_STATUS); +} + +//reads the stall guard setting from last status +//returns -1 if stallguard inforamtion is not present +int TMC26XStepper::getReadoutValue(void) { + return (int)(driver_status_result >> 10); +} + +int TMC26XStepper::getResistor() { + return this->resistor; +} + +boolean TMC26XStepper::isCurrentScalingHalfed() { + if (this->driver_configuration_register_value & VSENSE) { + return true; + } else { + return false; + } +} +/* + version() returns the version of the library: + */ +int TMC26XStepper::version(void) +{ + return 1; +} + +void TMC26XStepper::debugLastStatus() { +#ifdef DEBUG +if (this->started) { + if (this->getOverTemperature()&TMC26X_OVERTEMPERATURE_PREWARING) { + Serial.println("WARNING: Overtemperature Prewarning!"); + } else if (this->getOverTemperature()&TMC26X_OVERTEMPERATURE_SHUTDOWN) { + Serial.println("ERROR: Overtemperature Shutdown!"); + } + if (this->isShortToGroundA()) { + Serial.println("ERROR: SHORT to ground on channel A!"); + } + if (this->isShortToGroundB()) { + Serial.println("ERROR: SHORT to ground on channel A!"); + } + if (this->isOpenLoadA()) { + Serial.println("ERROR: Channel A seems to be unconnected!"); + } + if (this->isOpenLoadB()) { + Serial.println("ERROR: Channel B seems to be unconnected!"); + } + if (this->isStallGuardReached()) { + Serial.println("INFO: Stall Guard level reached!"); + } + if (this->isStandStill()) { + Serial.println("INFO: Motor is standing still."); + } + unsigned long readout_config = driver_configuration_register_value & READ_SELECTION_PATTERN; + int value = getReadoutValue(); + if (readout_config == READ_MICROSTEP_POSTION) { + Serial.print("Microstep postion phase A: "); + Serial.println(value); + } else if (readout_config == READ_STALL_GUARD_READING) { + Serial.print("Stall Guard value:"); + Serial.println(value); + } else if (readout_config == READ_STALL_GUARD_AND_COOL_STEP) { + int stallGuard = value & 0xf; + int current = value & 0x1F0; + Serial.print("Approx Stall Guard: "); + Serial.println(stallGuard); + Serial.print("Current level"); + Serial.println(current); + } + } +#endif +} + +/* + * send register settings to the stepper driver via SPI + * returns the current status + */ +inline void TMC26XStepper::send262(unsigned long datagram) { + unsigned long i_datagram; + + //preserver the previous spi mode + unsigned char oldMode = SPCR & SPI_MODE_MASK; + + //if the mode is not correct set it to mode 3 + if (oldMode != SPI_MODE3) { + SPI.setDataMode(SPI_MODE3); + } + + //select the TMC driver + digitalWrite(cs_pin,LOW); + + //ensure that only valid bist are set (0-19) + //datagram &=REGISTER_BIT_PATTERN; + +#ifdef DEBUG + Serial.print("Sending "); + Serial.println(datagram,HEX); +#endif + + //write/read the values + i_datagram = SPI.transfer((datagram >> 16) & 0xff); + i_datagram <<= 8; + i_datagram |= SPI.transfer((datagram >> 8) & 0xff); + i_datagram <<= 8; + i_datagram |= SPI.transfer((datagram) & 0xff); + i_datagram >>= 4; + +#ifdef DEBUG + Serial.print("Received "); + Serial.println(i_datagram,HEX); + debugLastStatus(); +#endif + //deselect the TMC chip + digitalWrite(cs_pin,HIGH); + + //restore the previous SPI mode if neccessary + //if the mode is not correct set it to mode 3 + if (oldMode != SPI_MODE3) { + SPI.setDataMode(oldMode); + } + + + //store the datagram as status result + driver_status_result = i_datagram; +} \ No newline at end of file diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.h b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.h new file mode 100644 index 000000000..b5d51316a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/TMC26XStepper.h @@ -0,0 +1,607 @@ +/* + TMC26XStepper.cpp - - TMC26X Stepper library for Wiring/Arduino + + based on the stepper library by Tom Igoe, et. al. + + Copyright (c) 2011, Interactive Matter, Marcus Nowotny + + 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. + + */ + + +// ensure this library description is only included once +#ifndef TMC26XStepper_h +#define TMC26XStepper_h + +//! return value for TMC26XStepper.getOverTemperature() if there is a overtemperature situation in the TMC chip +/*! + * This warning indicates that the TCM chip is too warm. + * It is still working but some parameters may be inferior. + * You should do something against it. + */ +#define TMC26X_OVERTEMPERATURE_PREWARING 1 +//! return value for TMC26XStepper.getOverTemperature() if there is a overtemperature shutdown in the TMC chip +/*! + * This warning indicates that the TCM chip is too warm to operate and has shut down to prevent damage. + * It will stop working until it cools down again. + * If you encouter this situation you must do something against it. Like reducing the current or improving the PCB layout + * and/or heat management. + */ +#define TMC26X_OVERTEMPERATURE_SHUTDOWN 2 + +//which values can be read out +/*! + * Selects to readout the microstep position from the motor. + *\sa readStatus() + */ +#define TMC26X_READOUT_POSITION 0 +/*! + * Selects to read out the StallGuard value of the motor. + *\sa readStatus() + */ +#define TMC26X_READOUT_STALLGUARD 1 +/*! + * Selects to read out the current current setting (acc. to CoolStep) and the upper bits of the StallGuard value from the motor. + *\sa readStatus(), setCurrent() + */ +#define TMC26X_READOUT_CURRENT 3 + +/*! + * Define to set the minimum current for CoolStep operation to 1/2 of the selected CS minium. + *\sa setCoolStepConfiguration() + */ +#define COOL_STEP_HALF_CS_LIMIT 0 +/*! + * Define to set the minimum current for CoolStep operation to 1/4 of the selected CS minium. + *\sa setCoolStepConfiguration() + */ +#define COOL_STEP_QUARTDER_CS_LIMIT 1 + +/*! + * \class TMC26XStepper + * \brief Class representing a TMC26X stepper driver + * + * In order to use one fo those drivers in your Arduino code you have to create an object of that class: + * \code + * TMC26XStepper stepper = TMC26XStepper(200,1,2,3,500); + * \endcode + * see TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int rms_current) + * + * Keep in mind that you need to start the driver with start() in order to get the TMC26X configured. + * + * The most important function is the move(). It checks if the motor has to do a step or not. + * It is important that you call move() as often as possible in your Arduino loop() routine. I suggest + * to use a very fast loop routine and always call it at the beginning or the end. + * + * In order to move you have to provide a movement speed with setSpeed(). The speed is a positive value setting + * the rotations per minute. + * + * To really move the motor you have to call step() to tell the driver to move the motor the given number + * of steps in the given direction. Positive values move the motor in one direction, negative values in the other direction. + * + * You can check with isMoving() if the mototr is still moving or stop it apruptely with stop(). + */ +class TMC26XStepper { + public: + /*! + * \brief creates a new represenatation of a stepper motor connected to a TMC26X stepper driver + * + * This is the main constructor. If in doubt use this. You must provide all parameters as described below. + * + * \param number_of_steps the number of steps the motor has per rotation. + * \param cs_pin The Arduino pin you have connected the Cient Select Pin (!CS) of the TMC26X for SPI + * \param dir_pin the number of the Arduino pin the Direction input of the TMC26X is connected + * \param step_pin the number of the Arduino pin the step pin of the TMC26X driver is connected. + * \param rms_current the maximum current to privide to the motor in mA (!). A value of 200 would send up to 200mA to the motor + * \param resistor the current sense resistor in milli Ohm, defaults to ,15 Ohm ( or 150 milli Ohm) as in the TMC260 Arduino Shield + * + * Keep in mind that you must also call TMC26XStepper.start() in order to configure the stepper driver for use. + * + * By default the Constant Off Time chopper is used, see TCM262Stepper.setConstantOffTimeChopper() for details. + * This should work on most motors (YMMV). You may want to configure and use the Spread Cycle Chopper, see setSpreadCycleChopper(). + * + * By default a microstepping of 1/32th is used to provide a smooth motor run, while still giving a good progression per step. + * You can select a different stepping with setMicrosteps() to aa different value. + * \sa start(), setMicrosteps() + */ + TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor=150); + + /*! + * \brief configures and starts the TMC26X stepper driver. Before you called this function the stepper driver is in nonfunctional mode. + * + * This routine configures the TMC26X stepper driver for the given values via SPI. + * Most member functions are non functional if the driver has not been started. + * Therefore it is best to call this in your Arduino setup() function. + */ + void start(); + + /*! + * \brief resets the stepper in unconfigured mode. + * + * This routine enables you to call start again. It does not change anything + * in the internal stepper configuration or the desired configuration. + * It just marks the stepper as not yet startet. You do not have to reconfigure + * the stepper to start it again, but it is not reset to any factory settings + * this has to be configured back by yourself. + * (Hint: Normally you do not need this function) + */ + void un_start(); + + + /*! + * \brief Sets the rotation speed in revolutions per minute. + * \param whatSpeed the desired speed in rotations per minute. + */ + void setSpeed(unsigned int whatSpeed); + + /*! + * \brief reads out the currently selected speed in revolutions per minute. + * \sa setSpeed() + */ + unsigned int getSpeed(void); + + /*! + * \brief Set the number of microsteps in 2^i values (rounded) up to 256 + * + * This method set's the number of microsteps per step in 2^i interval. + * This means you can select 1, 2, 4, 16, 32, 64, 128 or 256 as valid microsteps. + * If you give any other value it will be rounded to the next smaller number (3 would give a microstepping of 2). + * You can always check the current microstepping with getMicrosteps(). + */ + void setMicrosteps(int number_of_steps); + + /*! + * \brief returns the effective current number of microsteps selected. + * + * This function always returns the effective number of microsteps. + * This can be a bit different than the micro steps set in setMicrosteps() since it is rounded to 2^i. + * + * \sa setMicrosteps() + */ + int getMicrosteps(void); + + /*! + * \brief Initiate a movement for the given number of steps. Positive numbers move in one, negative numbers in the other direction. + * + * \param number_of_steps The number of steps to move the motor. + * \return 0 if the motor was not moving and moves now. -1 if the motor is moving and the new steps could not be set. + * + * If the previous movement is not finished yet the function will return -1 and not change the steps to move the motor. + * If the motor does not move it return 0 + * + * The direction of the movement is indicated by the sign of the steps parameter. It is not determinable if positive values are right + * or left This depends on the internal construction of the motor and how you connected it to the stepper driver. + * + * You can always verify with isMoving() or even use stop() to stop the motor before giving it new step directions. + * \sa isMoving(), getStepsLeft(), stop() + */ + char step(int number_of_steps); + + /*! + * \brief Central movement method, must be called as often as possible in the lopp function and is very fast. + * + * This routine checks if the motor still has to move, if the waiting delay has passed to send a new step command to the motor + * and manages the number of steps yet to move to fulfill the current move command. + * + * This function is implemented to be as fast as possible to call it as often as possible in your loop routine. + * The more regurlarly you call this function the better. In both senses of 'regularly': Calling it as often as + * possible is not a bad idea and if you even manage that the intervals you call this function are not too irregular helps too. + * + * You can call this routine even if you know that the motor is not miving. It introduces just a very small penalty in your code. + * You must not call isMoving() to determine if you need to call this function, since taht is done internally already and only + * slows down you code. + * + * How often you call this function directly influences your top miving speed for the motor. It may be a good idea to call this + * from an timer overflow interrupt to ensure proper calling. + * \sa step() + */ + char move(void); + + /*! + * \brief checks if the motor still has to move to fulfill the last movement command. + * \return 0 if the motor stops, -1 if the motor is moving. + * + * This method can be used to determine if the motor is ready for new movements. + *\sa step(), move() + */ + char isMoving(void); + + /*! + * \brief Get the number of steps left in the current movement. + * \return The number of steps left in the movement. This number is always positive. + */ + unsigned int getStepsLeft(void); + + /*! + * \brief Stops the motor regardless if it moves or not. + * \return -1 if the motor was moving and is really stoped or 0 if it was not moving at all. + * + * This method directly and apruptely stops the motor and may be used as an emergency stop. + */ + char stop(void); + + /*! + * \brief Sets and configure the classical Constant Off Timer Chopper + * \param constant_off_time The off time setting controls the minimum chopper frequency. For most applications an off time within the range of 5μs to 20μs will fit. Setting this parameter to zero completely disables all driver transistors and the motor can free-wheel. 0: chopper off, 1:15: off time setting (1 will work with minimum blank time of 24 clocks) + * \param blank_time Selects the comparator blank time. This time needs to safely cover the switching event and the duration of the ringing on the sense resistor. For most low current drivers, a setting of 1 or 2 is good. For high current applications with large MOSFETs, a setting of 2 or 3 will be required. 0 (min setting) … (3) amx setting + * \param fast_decay_time_setting Fast decay time setting. Controls the portion of fast decay for each chopper cycle. 0: slow decay only, 1…15: duration of fast decay phase + * \param sine_wave_offset Sine wave offset. Controls the sine wave offset. A positive offset corrects for zero crossing error. -3…-1: negative offset, 0: no offset,1…12: positive offset + * \param use_curreent_comparator Selects usage of the current comparator for termination of the fast decay cycle. If current comparator is enabled, it terminates the fast decay cycle in case the current reaches a higher negative value than the actual positive value. (0 disable, -1 enable). + * + * The classic constant off time chopper uses a fixed portion of fast decay following each on phase. + * While the duration of the on time is determined by the chopper comparator, the fast decay time needs + * to be set by the user in a way, that the current decay is enough for the driver to be able to follow + * the falling slope of the sine wave, and on the other hand it should not be too long, in order to minimize + * motor current ripple and power dissipation. This best can be tuned using an oscilloscope or + * trying out motor smoothness at different velocities. A good starting value is a fast decay time setting + * similar to the slow decay time setting. + * After tuning of the fast decay time, the offset should be determined, in order to have a smooth zero transition. + * This is necessary, because the fast decay phase leads to the absolute value of the motor current being lower + * than the target current (see figure 17). If the zero offset is too low, the motor stands still for a short + * moment during current zero crossing, if it is set too high, it makes a larger microstep. + * Typically, a positive offset setting is required for optimum operation. + * + * \sa setSpreadCycleChoper() for other alternatives. + * \sa setRandomOffTime() for spreading the noise over a wider spectrum + */ + void setConstantOffTimeChopper(char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator); + + /*! + * \brief Sets and configures with spread cycle chopper. + * \param constant_off_time The off time setting controls the minimum chopper frequency. For most applications an off time within the range of 5μs to 20μs will fit. Setting this parameter to zero completely disables all driver transistors and the motor can free-wheel. 0: chopper off, 1:15: off time setting (1 will work with minimum blank time of 24 clocks) + * \param blank_time Selects the comparator blank time. This time needs to safely cover the switching event and the duration of the ringing on the sense resistor. For most low current drivers, a setting of 1 or 2 is good. For high current applications with large MOSFETs, a setting of 2 or 3 will be required. 0 (min setting) … (3) amx setting + * \param hysteresis_start Hysteresis start setting. Please remark, that this value is an offset to the hysteresis end value. 1 … 8 + * \param hysteresis_end Hysteresis end setting. Sets the hysteresis end value after a number of decrements. Decrement interval time is controlled by hysteresis_decrement. The sum hysteresis_start + hysteresis_end must be <16. At a current setting CS of max. 30 (amplitude reduced to 240), the sum is not limited. + * \param hysteresis_decrement Hysteresis decrement setting. This setting determines the slope of the hysteresis during on time and during fast decay time. 0 (fast decrement) … 3 (slow decrement). + * + * The spreadCycle chopper scheme (pat.fil.) is a precise and simple to use chopper principle, which automatically determines + * the optimum fast decay portion for the motor. Anyhow, a number of settings can be made in order to optimally fit the driver + * to the motor. + * Each chopper cycle is comprised of an on-phase, a slow decay phase, a fast decay phase and a second slow decay phase. + * The slow decay phases limit the maximum chopper frequency and are important for low motor and driver power dissipation. + * The hysteresis start setting limits the chopper frequency by forcing the driver to introduce a minimum amount of + * current ripple into the motor coils. The motor inductivity determines the ability to follow a changing motor current. + * The duration of the on- and fast decay phase needs to cover at least the blank time, because the current comparator is + * disabled during this time. + * + * \sa setRandomOffTime() for spreading the noise over a wider spectrum + */ + void setSpreadCycleChopper(char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement); + + /*! + * \brief Use random off time for noise reduction (0 for off, -1 for on). + * \param value 0 for off, -1 for on + * + * In a constant off time chopper scheme both coil choppers run freely, i.e. are not synchronized. + * The frequency of each chopper mainly depends on the coil current and the position dependant motor coil inductivity, + * thus it depends on the microstep position. With some motors a slightly audible beat can occur between the chopper + * frequencies, especially when they are near to each other. This typically occurs at a few microstep positions within + * each quarter wave. + * This effect normally is not audible when compared to mechanical noise generated by ball bearings, + * etc. Further factors which can cause a similar effect are a poor layout of sense resistor GND connection. + * In order to minimize the effect of a beat between both chopper frequencies, an internal random generator is provided. + * It modulates the slow decay time setting when switched on. The random off time feature further spreads the chopper spectrum, + * reducing electromagnetic emission on single frequencies. + */ + void setRandomOffTime(char value); + + /*! + * \brief set the maximum motor current in mA (1000 is 1 Amp) + * Keep in mind this is the maximum peak Current. The RMS current will be 1/sqrt(2) smaller. The actual current can also be smaller + * by employing CoolStep. + * \param current the maximum motor current in mA + * \sa getCurrent(), getCurrentCurrent() + */ + void setCurrent(unsigned int current); + + /*! + * \brief readout the motor maximum current in mA (1000 is an Amp) + * This is the maximum current. to get the current current - which may be affected by CoolStep us getCurrentCurrent() + *\return the maximum motor current in milli amps + * \sa getCurrentCurrent() + */ + unsigned int getCurrent(void); + + /*! + * \brief set the StallGuard threshold in order to get sensible StallGuard readings. + * \param stall_guard_threshold -64 … 63 the StallGuard threshold + * \param stall_guard_filter_enabled 0 if the filter is disabled, -1 if it is enabled + * + * The StallGuard threshold is used to optimize the StallGuard reading to sensible values. It should be at 0 at + * the maximum allowable load on the otor (but not before). = is a good starting point (and the default) + * If you get Stall Gaurd readings of 0 without any load or with too little laod increase the value. + * If you get readings of 1023 even with load decrease the setting. + * + * If you switch on the filter the StallGuard reading is only updated each 4th full step to reduce the noise in the + * reading. + * + * \sa getCurrentStallGuardReading() to read out the current value. + */ + void setStallGuardThreshold(char stall_guard_threshold, char stall_guard_filter_enabled); + + /*! + * \brief reads out the StallGuard threshold + * \return a number between -64 and 63. + */ + char getStallGuardThreshold(void); + + /*! + * \brief returns the current setting of the StallGuard filter + * \return 0 if not set, -1 if set + */ + char getStallGuardFilter(void); + + /*! + * \brief This method configures the CoolStep smart energy operation. You must have a proper StallGuard configuration for the motor situation (current, voltage, speed) in rder to use this feature. + * \param lower_SG_threshold Sets the lower threshold for stallGuard2TM reading. Below this value, the motor current becomes increased. Allowed values are 0...480 + * \param SG_hysteresis Sets the distance between the lower and the upper threshold for stallGuard2TM reading. Above the upper threshold (which is lower_SG_threshold+SG_hysteresis+1) the motor current becomes decreased. Allowed values are 0...480 + * \param current_decrement_step_size Sets the current decrement steps. If the StallGuard value is above the threshold the current gets decremented by this step size. 0...32 + * \param current_increment_step_size Sets the current increment step. The current becomes incremented for each measured stallGuard2TM value below the lower threshold. 0...8 + * \param lower_current_limit Sets the lower motor current limit for coolStepTM operation by scaling the CS value. Values can be COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT + * The CoolStep smart energy operation automatically adjust the current sent into the motor according to the current load, + * read out by the StallGuard in order to provide the optimum torque with the minimal current consumption. + * You configure the CoolStep current regulator by defining upper and lower bounds of StallGuard readouts. If the readout is above the + * limit the current gets increased, below the limit the current gets decreased. + * You can specify the upper an lower threshold of the StallGuard readout in order to adjust the current. You can also set the number of + * StallGuard readings neccessary above or below the limit to get a more stable current adjustement. + * The current adjustement itself is configured by the number of steps the current gests in- or decreased and the absolut minimum current + * (1/2 or 1/4th otf the configured current). + * \sa COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT + */ + void setCoolStepConfiguration(unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size, + unsigned char current_increment_step_size, unsigned char lower_current_limit); + + /*! + * \brief enables or disables the CoolStep smart energy operation feature. It must be configured before enabling it. + * \param enabled true if CoolStep should be enabled, false if not. + * \sa setCoolStepConfiguration() + */ + void setCoolStepEnabled(boolean enabled); + + + /*! + * \brief check if the CoolStep feature is enabled + * \sa setCoolStepEnabled() + */ + boolean isCoolStepEnabled(); + + /*! + * \brief returns the lower StallGuard threshold for the CoolStep operation + * \sa setCoolStepConfiguration() + */ + unsigned int getCoolStepLowerSgThreshold(); + + /*! + * \brief returns the upper StallGuard threshold for the CoolStep operation + * \sa setCoolStepConfiguration() + */ + unsigned int getCoolStepUpperSgThreshold(); + + /*! + * \brief returns the number of StallGuard readings befor CoolStep adjusts the motor current. + * \sa setCoolStepConfiguration() + */ + unsigned char getCoolStepNumberOfSGReadings(); + + /*! + * \brief returns the increment steps for the current for the CoolStep operation + * \sa setCoolStepConfiguration() + */ + unsigned char getCoolStepCurrentIncrementSize(); + + /*! + * \brief returns the absolut minium current for the CoolStep operation + * \sa setCoolStepConfiguration() + * \sa COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT + */ + unsigned char getCoolStepLowerCurrentLimit(); + + /*! + * \brief Get the current microstep position for phase A + * \return The current microstep position for phase A 0…255 + * + * Keep in mind that this routine reads and writes a value via SPI - so this may take a bit time. + */ + int getMotorPosition(void); + + /*! + * \brief Reads the current StallGuard value. + * \return The current StallGuard value, lesser values indicate higher load, 0 means stall detected. + * Keep in mind that this routine reads and writes a value via SPI - so this may take a bit time. + * \sa setStallGuardThreshold() for tuning the readout to sensible ranges. + */ + int getCurrentStallGuardReading(void); + + /*! + * \brief Reads the current current setting value as fraction of the maximum current + * Returns values between 0 and 31, representing 1/32 to 32/32 (=1) + * \sa setCoolStepConfiguration() + */ + unsigned char getCurrentCSReading(void); + + + /*! + *\brief a convenience method to determine if the current scaling uses 0.31V or 0.165V as reference. + *\return false if 0.13V is the reference voltage, true if 0.165V is used. + */ + boolean isCurrentScalingHalfed(); + + /*! + * \brief Reads the current current setting value and recalculates the absolute current in mA (1A would be 1000). + * This method calculates the currently used current setting (either by setting or by CoolStep) and reconstructs + * the current in mA by usinge the VSENSE and resistor value. This method uses floating point math - so it + * may not be the fastest. + * \sa getCurrentCSReading(), getResistor(), isCurrentScalingHalfed(), getCurrent() + */ + unsigned int getCurrentCurrent(void); + + /*! + * \brief checks if there is a StallGuard warning in the last status + * \return 0 if there was no warning, -1 if there was some warning. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + * + * \sa setStallGuardThreshold() for tuning the readout to sensible ranges. + */ + boolean isStallGuardOverThreshold(void); + + /*! + * \brief Return over temperature status of the last status readout + * return 0 is everything is OK, TMC26X_OVERTEMPERATURE_PREWARING if status is reached, TMC26X_OVERTEMPERATURE_SHUTDOWN is the chip is shutdown, -1 if the status is unknown. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + char getOverTemperature(void); + + /*! + * \brief Is motor channel A shorted to ground detected in the last status readout. + * \return true is yes, false if not. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + + boolean isShortToGroundA(void); + + /*! + * \brief Is motor channel B shorted to ground detected in the last status readout. + * \return true is yes, false if not. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + boolean isShortToGroundB(void); + /*! + * \brief iIs motor channel A connected according to the last statu readout. + * \return true is yes, false if not. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + boolean isOpenLoadA(void); + + /*! + * \brief iIs motor channel A connected according to the last statu readout. + * \return true is yes, false if not. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + boolean isOpenLoadB(void); + + /*! + * \brief Is chopper inactive since 2^20 clock cycles - defaults to ~0,08s + * \return true is yes, false if not. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + */ + boolean isStandStill(void); + + /*! + * \brief checks if there is a StallGuard warning in the last status + * \return 0 if there was no warning, -1 if there was some warning. + * Keep in mind that this method does not enforce a readout but uses the value of the last status readout. + * You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout. + * + * \sa isStallGuardOverThreshold() + * TODO why? + * + * \sa setStallGuardThreshold() for tuning the readout to sensible ranges. + */ + boolean isStallGuardReached(void); + + /*! + *\brief enables or disables the motor driver bridges. If disabled the motor can run freely. If enabled not. + *\param enabled a boolean value true if the motor should be enabled, false otherwise. + */ + void setEnabled(boolean enabled); + + /*! + *\brief checks if the output bridges are enabled. If the bridges are not enabled the motor can run freely + *\return true if the bridges and by that the motor driver are enabled, false if not. + *\sa setEnabled() + */ + boolean isEnabled(); + + /*! + * \brief Manually read out the status register + * This function sends a byte to the motor driver in order to get the current readout. The parameter read_value + * seletcs which value will get returned. If the read_vlaue changes in respect to the previous readout this method + * automatically send two bytes to the motor: one to set the redout and one to get the actual readout. So this method + * may take time to send and read one or two bits - depending on the previous readout. + * \param read_value selects which value to read out (0..3). You can use the defines TMC26X_READOUT_POSITION, TMC_262_READOUT_STALLGUARD, or TMC_262_READOUT_CURRENT + * \sa TMC26X_READOUT_POSITION, TMC_262_READOUT_STALLGUARD, TMC_262_READOUT_CURRENT + */ + void readStatus(char read_value); + + /*! + * \brief Returns the current sense resistor value in milliohm. + * The default value of ,15 Ohm will return 150. + */ + int getResistor(); + + /*! + * \brief Prints out all the information that can be found in the last status read out - it does not force a status readout. + * The result is printed via Serial + */ + void debugLastStatus(void); + /*! + * \brief library version + * \return the version number as int. + */ + int version(void); + + private: + unsigned int steps_left; //the steps the motor has to do to complete the movement + int direction; // Direction of rotation + unsigned long step_delay; // delay between steps, in ms, based on speed + int number_of_steps; // total number of steps this motor can take + unsigned int speed; // we need to store the current speed in order to change the speed after changing microstepping + unsigned int resistor; //current sense resitor value in milliohm + + unsigned long last_step_time; // time stamp in ms of when the last step was taken + unsigned long next_step_time; // time stamp in ms of when the last step was taken + + //driver control register copies to easily set & modify the registers + unsigned long driver_control_register_value; + unsigned long chopper_config_register; + unsigned long cool_step_register_value; + unsigned long stall_guard2_current_register_value; + unsigned long driver_configuration_register_value; + //the driver status result + unsigned long driver_status_result; + + //helper routione to get the top 10 bit of the readout + inline int getReadoutValue(); + + //the pins for the stepper driver + unsigned char cs_pin; + unsigned char step_pin; + unsigned char dir_pin; + + //status values + boolean started; //if the stepper has been started yet + int microsteps; //the current number of micro steps + char constant_off_time; //we need to remember this value in order to enable and disable the motor + unsigned char cool_step_lower_threshold; // we need to remember the threshold to enable and disable the CoolStep feature + boolean cool_step_enabled; //we need to remember this to configure the coolstep if it si enabled + + //SPI sender + inline void send262(unsigned long datagram); +}; + +#endif + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp.html new file mode 100644 index 000000000..a577ca3ea --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp.html @@ -0,0 +1,848 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC26XStepper.cpp File Reference + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+ +
+
TMC26XStepper.cpp File Reference
+
+
+
#include <WProgram.h>
+#include <SPI.h>
+#include "TMC26XStepper.h"
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Defines

#define DEFAULT_MICROSTEPPING_VALUE   32
#define DRIVER_CONTROL_REGISTER   0x0ul
#define CHOPPER_CONFIG_REGISTER   0x80000ul
#define COOL_STEP_REGISTER   0xA0000ul
#define STALL_GUARD2_LOAD_MEASURE_REGISTER   0xC0000ul
#define DRIVER_CONFIG_REGISTER   0xE0000ul
#define REGISTER_BIT_PATTERN   0xFFFFFul
#define MICROSTEPPING_PATTERN   0xFul
#define STEP_INTERPOLATION   0x200ul
#define DOUBLE_EDGE_STEP   0x100ul
#define VSENSE   0x40ul
#define READ_MICROSTEP_POSTION   0x0ul
#define READ_STALL_GUARD_READING   0x10ul
#define READ_STALL_GUARD_AND_COOL_STEP   0x20ul
#define READ_SELECTION_PATTERN   0x30ul
#define CHOPPER_MODE_STANDARD   0x0ul
#define CHOPPER_MODE_T_OFF_FAST_DECAY   0x4000ul
#define T_OFF_PATTERN   0xful
#define RANDOM_TOFF_TIME   0x2000ul
#define BLANK_TIMING_PATTERN   0x18000ul
#define BLANK_TIMING_SHIFT   15
#define HYSTERESIS_DECREMENT_PATTERN   0x1800ul
#define HYSTERESIS_DECREMENT_SHIFT   11
#define HYSTERESIS_LOW_VALUE_PATTERN   0x780ul
#define HYSTERESIS_LOW_SHIFT   7
#define HYSTERESIS_START_VALUE_PATTERN   0x78ul
#define HYSTERESIS_START_VALUE_SHIFT   4
#define T_OFF_TIMING_PATERN   0xFul
#define MINIMUM_CURRENT_FOURTH   0x8000ul
#define CURRENT_DOWN_STEP_SPEED_PATTERN   0x6000ul
#define SE_MAX_PATTERN   0xF00ul
#define SE_CURRENT_STEP_WIDTH_PATTERN   0x60ul
#define SE_MIN_PATTERN   0xful
#define STALL_GUARD_FILTER_ENABLED   0x10000ul
#define STALL_GUARD_TRESHHOLD_VALUE_PATTERN   0x17F00ul
#define CURRENT_SCALING_PATTERN   0x1Ful
#define STALL_GUARD_CONFIG_PATTERN   0x17F00ul
#define STALL_GUARD_VALUE_PATTERN   0x7F00ul
#define STATUS_STALL_GUARD_STATUS   0x1ul
#define STATUS_OVER_TEMPERATURE_SHUTDOWN   0x2ul
#define STATUS_OVER_TEMPERATURE_WARNING   0x4ul
#define STATUS_SHORT_TO_GROUND_A   0x8ul
#define STATUS_SHORT_TO_GROUND_B   0x10ul
#define STATUS_OPEN_LOAD_A   0x20ul
#define STATUS_OPEN_LOAD_B   0x40ul
#define STATUS_STAND_STILL   0x80ul
#define READOUT_VALUE_PATTERN   0xFFC00ul
#define INITIAL_MICROSTEPPING   0x3ul
+

Define Documentation

+ +
+
+ + + + +
#define BLANK_TIMING_PATTERN   0x18000ul
+
+
+ +

Definition at line 63 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define BLANK_TIMING_SHIFT   15
+
+
+ +

Definition at line 64 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define CHOPPER_CONFIG_REGISTER   0x80000ul
+
+
+ +

Definition at line 41 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define CHOPPER_MODE_STANDARD   0x0ul
+
+
+ +

Definition at line 59 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define CHOPPER_MODE_T_OFF_FAST_DECAY   0x4000ul
+
+
+ +

Definition at line 60 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define COOL_STEP_REGISTER   0xA0000ul
+
+
+ +

Definition at line 42 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define CURRENT_DOWN_STEP_SPEED_PATTERN   0x6000ul
+
+
+ +

Definition at line 75 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define CURRENT_SCALING_PATTERN   0x1Ful
+
+
+ +

Definition at line 83 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define DEFAULT_MICROSTEPPING_VALUE   32
+
+
+ +

Definition at line 37 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define DOUBLE_EDGE_STEP   0x100ul
+
+
+ +

Definition at line 51 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define DRIVER_CONFIG_REGISTER   0xE0000ul
+
+
+ +

Definition at line 44 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define DRIVER_CONTROL_REGISTER   0x0ul
+
+
+ +

Definition at line 40 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_DECREMENT_PATTERN   0x1800ul
+
+
+ +

Definition at line 65 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_DECREMENT_SHIFT   11
+
+
+ +

Definition at line 66 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_LOW_SHIFT   7
+
+
+ +

Definition at line 68 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_LOW_VALUE_PATTERN   0x780ul
+
+
+ +

Definition at line 67 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_START_VALUE_PATTERN   0x78ul
+
+
+ +

Definition at line 69 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define HYSTERESIS_START_VALUE_SHIFT   4
+
+
+ +

Definition at line 70 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define INITIAL_MICROSTEPPING   0x3ul
+
+
+ +

Definition at line 99 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define MICROSTEPPING_PATTERN   0xFul
+
+
+ +

Definition at line 49 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define MINIMUM_CURRENT_FOURTH   0x8000ul
+
+
+ +

Definition at line 74 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define RANDOM_TOFF_TIME   0x2000ul
+
+
+ +

Definition at line 62 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define READ_MICROSTEP_POSTION   0x0ul
+
+
+ +

Definition at line 53 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define READ_SELECTION_PATTERN   0x30ul
+
+
+ +

Definition at line 56 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define READ_STALL_GUARD_AND_COOL_STEP   0x20ul
+
+
+ +

Definition at line 55 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define READ_STALL_GUARD_READING   0x10ul
+
+
+ +

Definition at line 54 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define READOUT_VALUE_PATTERN   0xFFC00ul
+
+
+ +

Definition at line 96 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define REGISTER_BIT_PATTERN   0xFFFFFul
+
+
+ +

Definition at line 46 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define SE_CURRENT_STEP_WIDTH_PATTERN   0x60ul
+
+
+ +

Definition at line 77 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define SE_MAX_PATTERN   0xF00ul
+
+
+ +

Definition at line 76 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define SE_MIN_PATTERN   0xful
+
+
+ +

Definition at line 78 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STALL_GUARD2_LOAD_MEASURE_REGISTER   0xC0000ul
+
+
+ +

Definition at line 43 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STALL_GUARD_CONFIG_PATTERN   0x17F00ul
+
+
+ +

Definition at line 84 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STALL_GUARD_FILTER_ENABLED   0x10000ul
+
+
+ +

Definition at line 81 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STALL_GUARD_TRESHHOLD_VALUE_PATTERN   0x17F00ul
+
+
+ +

Definition at line 82 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STALL_GUARD_VALUE_PATTERN   0x7F00ul
+
+
+ +

Definition at line 85 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_OPEN_LOAD_A   0x20ul
+
+
+ +

Definition at line 93 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_OPEN_LOAD_B   0x40ul
+
+
+ +

Definition at line 94 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_OVER_TEMPERATURE_SHUTDOWN   0x2ul
+
+
+ +

Definition at line 89 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_OVER_TEMPERATURE_WARNING   0x4ul
+
+
+ +

Definition at line 90 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_SHORT_TO_GROUND_A   0x8ul
+
+
+ +

Definition at line 91 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_SHORT_TO_GROUND_B   0x10ul
+
+
+ +

Definition at line 92 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_STALL_GUARD_STATUS   0x1ul
+
+
+ +

Definition at line 88 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STATUS_STAND_STILL   0x80ul
+
+
+ +

Definition at line 95 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define STEP_INTERPOLATION   0x200ul
+
+
+ +

Definition at line 50 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define T_OFF_PATTERN   0xful
+
+
+ +

Definition at line 61 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define T_OFF_TIMING_PATERN   0xFul
+
+
+ +

Definition at line 71 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + +
#define VSENSE   0x40ul
+
+
+ +

Definition at line 52 of file TMC26XStepper.cpp.

+ +
+
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp_source.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp_source.html new file mode 100644 index 000000000..f7f4741ce --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8cpp_source.html @@ -0,0 +1,1067 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC26XStepper.cpp Source File + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
TMC26XStepper.cpp
+
+
+Go to the documentation of this file.
00001 /*
+00002  TMC26XStepper.cpp - - TMC26X Stepper library for Wiring/Arduino - Version 0.1
+00003  
+00004  based on the stepper library by Tom Igoe, et. al.
+00005  
+00006  Copyright (c) 2011, Interactive Matter, Marcus Nowotny
+00007  
+00008  Permission is hereby granted, free of charge, to any person obtaining a copy
+00009  of this software and associated documentation files (the "Software"), to deal
+00010  in the Software without restriction, including without limitation the rights
+00011  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+00012  copies of the Software, and to permit persons to whom the Software is
+00013  furnished to do so, subject to the following conditions:
+00014  
+00015  The above copyright notice and this permission notice shall be included in
+00016  all copies or substantial portions of the Software.
+00017  
+00018  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+00019  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+00020  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+00021  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+00022  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+00023  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+00024  THE SOFTWARE.
+00025  
+00026  */
+00027 
+00028 #if defined(ARDUINO) && ARDUINO >= 100
+00029         #include <Arduino.h>
+00030 #else
+00031         #include <WProgram.h>
+00032 #endif
+00033 #include <SPI.h>
+00034 #include "TMC26XStepper.h"
+00035 
+00036 //some default values used in initialization
+00037 #define DEFAULT_MICROSTEPPING_VALUE 32
+00038 
+00039 //TMC26X register definitions
+00040 #define DRIVER_CONTROL_REGISTER 0x0ul
+00041 #define CHOPPER_CONFIG_REGISTER 0x80000ul
+00042 #define COOL_STEP_REGISTER  0xA0000ul
+00043 #define STALL_GUARD2_LOAD_MEASURE_REGISTER 0xC0000ul
+00044 #define DRIVER_CONFIG_REGISTER 0xE0000ul
+00045 
+00046 #define REGISTER_BIT_PATTERN 0xFFFFFul
+00047 
+00048 //definitions for the driver control register
+00049 #define MICROSTEPPING_PATTERN 0xFul
+00050 #define STEP_INTERPOLATION 0x200ul
+00051 #define DOUBLE_EDGE_STEP 0x100ul
+00052 #define VSENSE 0x40ul
+00053 #define READ_MICROSTEP_POSTION 0x0ul
+00054 #define READ_STALL_GUARD_READING 0x10ul
+00055 #define READ_STALL_GUARD_AND_COOL_STEP 0x20ul
+00056 #define READ_SELECTION_PATTERN 0x30ul
+00057 
+00058 //definitions for the chopper config register
+00059 #define CHOPPER_MODE_STANDARD 0x0ul
+00060 #define CHOPPER_MODE_T_OFF_FAST_DECAY 0x4000ul
+00061 #define T_OFF_PATTERN 0xful
+00062 #define RANDOM_TOFF_TIME 0x2000ul
+00063 #define BLANK_TIMING_PATTERN 0x18000ul
+00064 #define BLANK_TIMING_SHIFT 15
+00065 #define HYSTERESIS_DECREMENT_PATTERN 0x1800ul
+00066 #define HYSTERESIS_DECREMENT_SHIFT 11
+00067 #define HYSTERESIS_LOW_VALUE_PATTERN 0x780ul
+00068 #define HYSTERESIS_LOW_SHIFT 7
+00069 #define HYSTERESIS_START_VALUE_PATTERN 0x78ul
+00070 #define HYSTERESIS_START_VALUE_SHIFT 4
+00071 #define T_OFF_TIMING_PATERN 0xFul
+00072 
+00073 //definitions for cool step register
+00074 #define MINIMUM_CURRENT_FOURTH 0x8000ul
+00075 #define CURRENT_DOWN_STEP_SPEED_PATTERN 0x6000ul
+00076 #define SE_MAX_PATTERN 0xF00ul
+00077 #define SE_CURRENT_STEP_WIDTH_PATTERN 0x60ul
+00078 #define SE_MIN_PATTERN 0xful
+00079 
+00080 //definitions for stall guard2 current register
+00081 #define STALL_GUARD_FILTER_ENABLED 0x10000ul
+00082 #define STALL_GUARD_TRESHHOLD_VALUE_PATTERN 0x17F00ul
+00083 #define CURRENT_SCALING_PATTERN 0x1Ful
+00084 #define STALL_GUARD_CONFIG_PATTERN 0x17F00ul
+00085 #define STALL_GUARD_VALUE_PATTERN 0x7F00ul
+00086 
+00087 //definitions for the input from the TCM260
+00088 #define STATUS_STALL_GUARD_STATUS 0x1ul
+00089 #define STATUS_OVER_TEMPERATURE_SHUTDOWN 0x2ul
+00090 #define STATUS_OVER_TEMPERATURE_WARNING 0x4ul
+00091 #define STATUS_SHORT_TO_GROUND_A 0x8ul
+00092 #define STATUS_SHORT_TO_GROUND_B 0x10ul
+00093 #define STATUS_OPEN_LOAD_A 0x20ul
+00094 #define STATUS_OPEN_LOAD_B 0x40ul
+00095 #define STATUS_STAND_STILL 0x80ul
+00096 #define READOUT_VALUE_PATTERN 0xFFC00ul
+00097 
+00098 //default values
+00099 #define INITIAL_MICROSTEPPING 0x3ul //32th microstepping
+00100 
+00101 //debuging output
+00102 //#define DEBUG
+00103 
+00104 /*
+00105  * Constructor
+00106  * number_of_steps - the steps per rotation
+00107  * cs_pin - the SPI client select pin
+00108  * dir_pin - the pin where the direction pin is connected
+00109  * step_pin - the pin where the step pin is connected
+00110  */
+00111 TMC26XStepper::TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor)
+00112 {
+00113         //we are not started yet
+00114         started=false;
+00115     //by default cool step is not enabled
+00116     cool_step_enabled=false;
+00117         
+00118         //save the pins for later use
+00119         this->cs_pin=cs_pin;
+00120         this->dir_pin=dir_pin;
+00121         this->step_pin = step_pin;
+00122     
+00123     //store the current sense resistor value for later use
+00124     this->resistor = resistor;
+00125         
+00126         //initizalize our status values
+00127         this->steps_left = 0;
+00128         this->direction = 0;
+00129         
+00130         //initialize register values
+00131         driver_control_register_value=DRIVER_CONTROL_REGISTER | INITIAL_MICROSTEPPING;
+00132         chopper_config_register=CHOPPER_CONFIG_REGISTER;
+00133         
+00134         //setting the default register values
+00135         driver_control_register_value=DRIVER_CONTROL_REGISTER|INITIAL_MICROSTEPPING;
+00136         microsteps = (1 << INITIAL_MICROSTEPPING);
+00137         chopper_config_register=CHOPPER_CONFIG_REGISTER;
+00138         cool_step_register_value=COOL_STEP_REGISTER;
+00139         stall_guard2_current_register_value=STALL_GUARD2_LOAD_MEASURE_REGISTER;
+00140         driver_configuration_register_value = DRIVER_CONFIG_REGISTER | READ_STALL_GUARD_READING;
+00141 
+00142         //set the current
+00143         setCurrent(current);
+00144         //set to a conservative start value
+00145         setConstantOffTimeChopper(7, 54, 13,12,1);
+00146     //set a nice microstepping value
+00147     setMicrosteps(DEFAULT_MICROSTEPPING_VALUE);
+00148     //save the number of steps
+00149     this->number_of_steps =   number_of_steps;
+00150 }
+00151 
+00152 
+00153 /*
+00154  * start & configure the stepper driver
+00155  * just must be called.
+00156  */
+00157 void TMC26XStepper::start() {
+00158 
+00159 #ifdef DEBUG    
+00160         Serial.println("TMC26X stepper library");
+00161         Serial.print("CS pin: ");
+00162         Serial.println(cs_pin);
+00163         Serial.print("DIR pin: ");
+00164         Serial.println(dir_pin);
+00165         Serial.print("STEP pin: ");
+00166         Serial.println(step_pin);
+00167         Serial.print("current scaling: ");
+00168         Serial.println(current_scaling,DEC);
+00169 #endif
+00170         //set the pins as output & its initial value
+00171         pinMode(step_pin, OUTPUT);     
+00172         pinMode(dir_pin, OUTPUT);     
+00173         pinMode(cs_pin, OUTPUT);     
+00174         digitalWrite(step_pin, LOW);     
+00175         digitalWrite(dir_pin, LOW);     
+00176         digitalWrite(cs_pin, HIGH);   
+00177         
+00178         //configure the SPI interface
+00179     SPI.setBitOrder(MSBFIRST);
+00180         SPI.setClockDivider(SPI_CLOCK_DIV8);
+00181         //todo this does not work reliably - find a way to foolprof set it (e.g. while communicating
+00182         //SPI.setDataMode(SPI_MODE3);
+00183         SPI.begin();
+00184                 
+00185         //set the initial values
+00186         send262(driver_control_register_value); 
+00187         send262(chopper_config_register);
+00188         send262(cool_step_register_value);
+00189         send262(stall_guard2_current_register_value);
+00190         send262(driver_configuration_register_value);
+00191         
+00192         //save that we are in running mode
+00193         started=true;
+00194 }
+00195 
+00196 /*
+00197  Mark the driver as unstarted to be able to start it again
+00198  */
+00199 void TMC26XStepper::un_start() {
+00200     started=false;
+00201 }
+00202 
+00203 
+00204 /*
+00205   Sets the speed in revs per minute
+00206 
+00207 */
+00208 void TMC26XStepper::setSpeed(unsigned int whatSpeed)
+00209 {
+00210   this->speed = whatSpeed;
+00211   this->step_delay = (60UL * 1000UL * 1000UL) / ((unsigned long)this->number_of_steps * (unsigned long)whatSpeed * (unsigned long)this->microsteps);
+00212 #ifdef DEBUG
+00213     Serial.print("Step delay in micros: ");
+00214     Serial.println(this->step_delay);
+00215 #endif
+00216     //update the next step time
+00217     this->next_step_time = this->last_step_time+this->step_delay; 
+00218 
+00219 }
+00220 
+00221 unsigned int TMC26XStepper::getSpeed(void) {
+00222     return this->speed;
+00223 }
+00224 
+00225 /*
+00226   Moves the motor steps_to_move steps.  If the number is negative, 
+00227    the motor moves in the reverse direction.
+00228  */
+00229 char TMC26XStepper::step(int steps_to_move)
+00230 {  
+00231         if (this->steps_left==0) {
+00232                 this->steps_left = abs(steps_to_move);  // how many steps to take
+00233   
+00234                 // determine direction based on whether steps_to_mode is + or -:
+00235                 if (steps_to_move > 0) {
+00236                         this->direction = 1;
+00237                 } else if (steps_to_move < 0) {
+00238                         this->direction = 0;
+00239                 }
+00240                 return 0;
+00241     } else {
+00242         return -1;
+00243     }
+00244 }
+00245 
+00246 char TMC26XStepper::move(void) {
+00247   // decrement the number of steps, moving one step each time:
+00248   if(this->steps_left>0) {
+00249       unsigned long time = micros();  
+00250           // move only if the appropriate delay has passed:
+00251          if (time >= this->next_step_time) {
+00252                 // increment or decrement the step number,
+00253                 // depending on direction:
+00254                 if (this->direction == 1) {
+00255                         digitalWrite(step_pin, HIGH);
+00256         } else { 
+00257                   digitalWrite(dir_pin, HIGH);
+00258                   digitalWrite(step_pin, HIGH);
+00259             }
+00260         // get the timeStamp of when you stepped:
+00261         this->last_step_time = time;
+00262         this->next_step_time = time+this->step_delay; 
+00263         // decrement the steps left:
+00264         steps_left--;
+00265                 //disable the step & dir pins
+00266                 digitalWrite(step_pin, LOW);
+00267                 digitalWrite(dir_pin, LOW);
+00268         }
+00269         return -1;
+00270         }
+00271     return 0;
+00272 }
+00273 
+00274 char TMC26XStepper::isMoving(void) {
+00275         return (this->steps_left>0);
+00276 }
+00277 
+00278 unsigned int TMC26XStepper::getStepsLeft(void) {
+00279         return this->steps_left;
+00280 }
+00281 
+00282 char TMC26XStepper::stop(void) {
+00283         //note to self if the motor is currently moving
+00284         char state = isMoving();
+00285         //stop the motor
+00286         this->steps_left = 0;
+00287         this->direction = 0;
+00288         //return if it was moving
+00289         return state;
+00290 }
+00291 
+00292 void TMC26XStepper::setCurrent(unsigned int current) {
+00293     unsigned char current_scaling = 0;
+00294         //calculate the current scaling from the max current setting (in mA)
+00295         double mASetting = (double)current;
+00296     double resistor_value = (double) this->resistor;
+00297         // remove vesense flag
+00298         this->driver_configuration_register_value &= ~(VSENSE); 
+00299         //this is derrived from I=(cs+1)/32*(Vsense/Rsense)
+00300     //leading to cs = CS = 32*R*I/V (with V = 0,31V oder 0,165V  and I = 1000*current)
+00301         //with Rsense=0,15
+00302         //for vsense = 0,310V (VSENSE not set)
+00303         //or vsense = 0,165V (VSENSE set)
+00304         current_scaling = (byte)((resistor_value*mASetting*32.0/(0.31*1000.0*1000.0))-0.5); //theoretically - 1.0 for better rounding it is 0.5
+00305         
+00306         //check if the current scalingis too low
+00307         if (current_scaling<16) {
+00308         //set the csense bit to get a use half the sense voltage (to support lower motor currents)
+00309                 this->driver_configuration_register_value |= VSENSE;
+00310         //and recalculate the current setting
+00311         current_scaling = (byte)((resistor_value*mASetting*32.0/(0.165*1000.0*1000.0))-0.5); //theoretically - 1.0 for better rounding it is 0.5
+00312 #ifdef DEBUG
+00313                 Serial.print("CS (Vsense=1): ");
+00314                 Serial.println(current_scaling);
+00315         } else {
+00316         Serial.print("CS: ");
+00317         Serial.println(current_scaling);
+00318 #endif
+00319     }
+00320 
+00321         //do some sanity checks
+00322         if (current_scaling>31) {
+00323                 current_scaling=31;
+00324         }
+00325         //delete the old value
+00326         stall_guard2_current_register_value &= ~(CURRENT_SCALING_PATTERN);
+00327         //set the new current scaling
+00328         stall_guard2_current_register_value |= current_scaling;
+00329         //if started we directly send it to the motor
+00330         if (started) {
+00331         send262(driver_configuration_register_value);
+00332                 send262(stall_guard2_current_register_value);
+00333         }
+00334 }
+00335 
+00336 unsigned int TMC26XStepper::getCurrent(void) {
+00337     //we calculate the current according to the datasheet to be on the safe side
+00338     //this is not the fastest but the most accurate and illustrative way
+00339     double result = (double)(stall_guard2_current_register_value & CURRENT_SCALING_PATTERN);
+00340     double resistor_value = (double)this->resistor;
+00341     double voltage = (driver_configuration_register_value & VSENSE)? 0.165:0.31;
+00342     result = (result+1.0)/32.0*voltage/resistor_value*1000.0*1000.0;
+00343     return (unsigned int)result;
+00344 }
+00345 
+00346 void TMC26XStepper::setStallGuardThreshold(char stall_guard_threshold, char stall_guard_filter_enabled) {
+00347         if (stall_guard_threshold<-64) {
+00348                 stall_guard_threshold = -64;
+00349         //We just have 5 bits   
+00350         } else if (stall_guard_threshold > 63) {
+00351                 stall_guard_threshold = 63;
+00352         }
+00353         //add trim down to 7 bits
+00354         stall_guard_threshold &=0x7f;
+00355         //delete old stall guard settings
+00356         stall_guard2_current_register_value &= ~(STALL_GUARD_CONFIG_PATTERN);
+00357         if (stall_guard_filter_enabled) {
+00358                 stall_guard2_current_register_value |= STALL_GUARD_FILTER_ENABLED;
+00359         }
+00360         //Set the new stall guard threshold
+00361         stall_guard2_current_register_value |= (((unsigned long)stall_guard_threshold << 8) & STALL_GUARD_CONFIG_PATTERN);
+00362         //if started we directly send it to the motor
+00363         if (started) {
+00364                 send262(stall_guard2_current_register_value);
+00365         }
+00366 }
+00367 
+00368 char TMC26XStepper::getStallGuardThreshold(void) {
+00369     unsigned long stall_guard_threshold = stall_guard2_current_register_value & STALL_GUARD_VALUE_PATTERN;
+00370     //shift it down to bit 0
+00371     stall_guard_threshold >>=8;
+00372     //convert the value to an int to correctly handle the negative numbers
+00373     char result = stall_guard_threshold;
+00374     //check if it is negative and fill it up with leading 1 for proper negative number representation
+00375     if (result & _BV(6)) {
+00376         result |= 0xC0;
+00377     }
+00378     return result;
+00379 }
+00380 
+00381 char TMC26XStepper::getStallGuardFilter(void) {
+00382     if (stall_guard2_current_register_value & STALL_GUARD_FILTER_ENABLED) {
+00383         return -1;
+00384     } else {
+00385         return 0;
+00386     }
+00387 }
+00388 /*
+00389  * Set the number of microsteps per step.
+00390  * 0,2,4,8,16,32,64,128,256 is supported
+00391  * any value in between will be mapped to the next smaller value
+00392  * 0 and 1 set the motor in full step mode
+00393  */
+00394 void TMC26XStepper::setMicrosteps(int number_of_steps) {
+00395         long setting_pattern;
+00396         //poor mans log
+00397         if (number_of_steps>=256) {
+00398                 setting_pattern=0;
+00399                 microsteps=256;
+00400         } else if (number_of_steps>=128) {
+00401                 setting_pattern=1;
+00402                 microsteps=128;
+00403         } else if (number_of_steps>=64) {
+00404                 setting_pattern=2;
+00405                 microsteps=64;
+00406         } else if (number_of_steps>=32) {
+00407                 setting_pattern=3;
+00408                 microsteps=32;
+00409         } else if (number_of_steps>=16) {
+00410                 setting_pattern=4;
+00411                 microsteps=16;
+00412         } else if (number_of_steps>=8) {
+00413                 setting_pattern=5;
+00414                 microsteps=8;
+00415         } else if (number_of_steps>=4) {
+00416                 setting_pattern=6;
+00417                 microsteps=4;
+00418         } else if (number_of_steps>=2) {
+00419                 setting_pattern=7;
+00420                 microsteps=2;
+00421     //1 and 0 lead to full step
+00422         } else if (number_of_steps<=1) {
+00423                 setting_pattern=8;
+00424                 microsteps=1;
+00425         }
+00426 #ifdef DEBUG
+00427         Serial.print("Microstepping: ");
+00428         Serial.println(microsteps);
+00429 #endif
+00430         //delete the old value
+00431         this->driver_control_register_value &=0xFFFF0ul;
+00432         //set the new value
+00433         this->driver_control_register_value |=setting_pattern;
+00434         
+00435         //if started we directly send it to the motor
+00436         if (started) {
+00437                 send262(driver_control_register_value);
+00438         }
+00439     //recalculate the stepping delay by simply setting the speed again
+00440     this->setSpeed(this->speed);
+00441 }
+00442 
+00443 /*
+00444  * returns the effective number of microsteps at the moment
+00445  */
+00446 int TMC26XStepper::getMicrosteps(void) {
+00447         return microsteps;
+00448 }
+00449 
+00450 /*
+00451  * constant_off_time: The off time setting controls the minimum chopper frequency. 
+00452  * For most applications an off time within     the range of 5μs to 20μs will fit.
+00453  *              2...15: off time setting
+00454  *
+00455  * blank_time: Selects the comparator blank time. This time needs to safely cover the switching event and the
+00456  * duration of the ringing on the sense resistor. For
+00457  *              0: min. setting 3: max. setting
+00458  *
+00459  * fast_decay_time_setting: Fast decay time setting. With CHM=1, these bits control the portion of fast decay for each chopper cycle.
+00460  *              0: slow decay only
+00461  *              1...15: duration of fast decay phase
+00462  *
+00463  * sine_wave_offset: Sine wave offset. With CHM=1, these bits control the sine wave offset. 
+00464  * A positive offset corrects for zero crossing error.
+00465  *              -3..-1: negative offset 0: no offset 1...12: positive offset
+00466  *
+00467  * use_current_comparator: Selects usage of the current comparator for termination of the fast decay cycle. 
+00468  * If current comparator is enabled, it terminates the fast decay cycle in case the current 
+00469  * reaches a higher negative value than the actual positive value.
+00470  *              1: enable comparator termination of fast decay cycle
+00471  *              0: end by time only
+00472  */
+00473 void TMC26XStepper::setConstantOffTimeChopper(char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator) {
+00474         //perform some sanity checks
+00475         if (constant_off_time<2) {
+00476                 constant_off_time=2;
+00477         } else if (constant_off_time>15) {
+00478                 constant_off_time=15;
+00479         }
+00480     //save the constant off time
+00481     this->constant_off_time = constant_off_time;
+00482         char blank_value;
+00483         //calculate the value acc to the clock cycles
+00484         if (blank_time>=54) {
+00485                 blank_value=3;
+00486         } else if (blank_time>=36) {
+00487                 blank_value=2;
+00488         } else if (blank_time>=24) {
+00489                 blank_value=1;
+00490         } else {
+00491                 blank_value=0;
+00492         }
+00493         if (fast_decay_time_setting<0) {
+00494                 fast_decay_time_setting=0;
+00495         } else if (fast_decay_time_setting>15) {
+00496                 fast_decay_time_setting=15;
+00497         }
+00498         if (sine_wave_offset < -3) {
+00499                 sine_wave_offset = -3;
+00500         } else if (sine_wave_offset>12) {
+00501                 sine_wave_offset = 12;
+00502         }
+00503         //shift the sine_wave_offset
+00504         sine_wave_offset +=3;
+00505         
+00506         //calculate the register setting
+00507         //first of all delete all the values for this
+00508         chopper_config_register &= ~((1<<12) | BLANK_TIMING_PATTERN | HYSTERESIS_DECREMENT_PATTERN | HYSTERESIS_LOW_VALUE_PATTERN | HYSTERESIS_START_VALUE_PATTERN | T_OFF_TIMING_PATERN);
+00509         //set the constant off pattern
+00510         chopper_config_register |= CHOPPER_MODE_T_OFF_FAST_DECAY;
+00511         //set the blank timing value
+00512         chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT;
+00513         //setting the constant off time
+00514         chopper_config_register |= constant_off_time;
+00515         //set the fast decay time
+00516         //set msb
+00517         chopper_config_register |= (((unsigned long)(fast_decay_time_setting & 0x8))<<HYSTERESIS_DECREMENT_SHIFT);
+00518         //other bits
+00519         chopper_config_register |= (((unsigned long)(fast_decay_time_setting & 0x7))<<HYSTERESIS_START_VALUE_SHIFT);
+00520         //set the sine wave offset
+00521         chopper_config_register |= (unsigned long)sine_wave_offset << HYSTERESIS_LOW_SHIFT;
+00522         //using the current comparator?
+00523         if (!use_current_comparator) {
+00524                 chopper_config_register |= (1<<12);
+00525         }
+00526         //if started we directly send it to the motor
+00527         if (started) {
+00528                 send262(driver_control_register_value);
+00529         }       
+00530 }
+00531 
+00532 /*
+00533  * constant_off_time: The off time setting controls the minimum chopper frequency. 
+00534  * For most applications an off time within     the range of 5μs to 20μs will fit.
+00535  *              2...15: off time setting
+00536  *
+00537  * blank_time: Selects the comparator blank time. This time needs to safely cover the switching event and the
+00538  * duration of the ringing on the sense resistor. For
+00539  *              0: min. setting 3: max. setting
+00540  *
+00541  * hysteresis_start: Hysteresis start setting. Please remark, that this value is an offset to the hysteresis end value HEND.
+00542  *              1...8
+00543  *
+00544  * hysteresis_end: Hysteresis end setting. Sets the hysteresis end value after a number of decrements. Decrement interval time is controlled by HDEC. 
+00545  * The sum HSTRT+HEND must be <16. At a current setting CS of max. 30 (amplitude reduced to 240), the sum is not limited.
+00546  *              -3..-1: negative HEND 0: zero HEND 1...12: positive HEND
+00547  *
+00548  * hysteresis_decrement: Hysteresis decrement setting. This setting determines the slope of the hysteresis during on time and during fast decay time.
+00549  *              0: fast decrement 3: very slow decrement
+00550  */
+00551 
+00552 void TMC26XStepper::setSpreadCycleChopper(char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement) {
+00553         //perform some sanity checks
+00554         if (constant_off_time<2) {
+00555                 constant_off_time=2;
+00556         } else if (constant_off_time>15) {
+00557                 constant_off_time=15;
+00558         }
+00559     //save the constant off time
+00560     this->constant_off_time = constant_off_time;
+00561         char blank_value;
+00562         //calculate the value acc to the clock cycles
+00563         if (blank_time>=54) {
+00564                 blank_value=3;
+00565         } else if (blank_time>=36) {
+00566                 blank_value=2;
+00567         } else if (blank_time>=24) {
+00568                 blank_value=1;
+00569         } else {
+00570                 blank_value=0;
+00571         }
+00572         if (hysteresis_start<1) {
+00573                 hysteresis_start=1;
+00574         } else if (hysteresis_start>8) {
+00575                 hysteresis_start=8;
+00576         }
+00577         hysteresis_start--;
+00578 
+00579         if (hysteresis_end < -3) {
+00580                 hysteresis_end = -3;
+00581         } else if (hysteresis_end>12) {
+00582                 hysteresis_end = 12;
+00583         }
+00584         //shift the hysteresis_end
+00585         hysteresis_end +=3;
+00586 
+00587         if (hysteresis_decrement<0) {
+00588                 hysteresis_decrement=0;
+00589         } else if (hysteresis_decrement>3) {
+00590                 hysteresis_decrement=3;
+00591         }
+00592         
+00593         //first of all delete all the values for this
+00594         chopper_config_register &= ~(CHOPPER_MODE_T_OFF_FAST_DECAY | BLANK_TIMING_PATTERN | HYSTERESIS_DECREMENT_PATTERN | HYSTERESIS_LOW_VALUE_PATTERN | HYSTERESIS_START_VALUE_PATTERN | T_OFF_TIMING_PATERN);
+00595 
+00596         //set the blank timing value
+00597         chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT;
+00598         //setting the constant off time
+00599         chopper_config_register |= constant_off_time;
+00600         //set the hysteresis_start
+00601         chopper_config_register |= ((unsigned long)hysteresis_start) << HYSTERESIS_START_VALUE_SHIFT;
+00602         //set the hysteresis end
+00603         chopper_config_register |= ((unsigned long)hysteresis_end) << HYSTERESIS_LOW_SHIFT;
+00604         //set the hystereis decrement
+00605         chopper_config_register |= ((unsigned long)blank_value) << BLANK_TIMING_SHIFT;
+00606         //if started we directly send it to the motor
+00607         if (started) {
+00608                 send262(driver_control_register_value);
+00609         }       
+00610 }
+00611 
+00612 /*
+00613  * In a constant off time chopper scheme both coil choppers run freely, i.e. are not synchronized. 
+00614  * The frequency of each chopper mainly depends on the coil current and the position dependant motor coil inductivity, thus it depends on the microstep position. 
+00615  * With some motors a slightly audible beat can occur between the chopper frequencies, especially when they are near to each other. This typically occurs at a 
+00616  * few microstep positions within each quarter wave. This effect normally is not audible when compared to mechanical noise generated by ball bearings, etc. 
+00617  * Further factors which can cause a similar effect are a poor layout of sense resistor GND connection.
+00618  * Hint: A common factor, which can cause motor noise, is a bad PCB layout causing coupling of both sense resistor voltages 
+00619  * (please refer to sense resistor layout hint in chapter 8.1).
+00620  * In order to minimize the effect of a beat between both chopper frequencies, an internal random generator is provided. 
+00621  * It modulates the slow decay time setting when switched on by the RNDTF bit. The RNDTF feature further spreads the chopper spectrum, 
+00622  * reducing electromagnetic emission on single frequencies.
+00623  */
+00624 void TMC26XStepper::setRandomOffTime(char value) {
+00625         if (value) {
+00626                 chopper_config_register |= RANDOM_TOFF_TIME;
+00627         } else {
+00628                 chopper_config_register &= ~(RANDOM_TOFF_TIME);
+00629         }
+00630         //if started we directly send it to the motor
+00631         if (started) {
+00632                 send262(driver_control_register_value);
+00633         }       
+00634 }       
+00635 
+00636 void TMC26XStepper::setCoolStepConfiguration(unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size,
+00637                               unsigned char current_increment_step_size, unsigned char lower_current_limit) {
+00638     //sanitize the input values
+00639     if (lower_SG_threshold>480) {
+00640         lower_SG_threshold = 480;
+00641     }
+00642     //divide by 32
+00643     lower_SG_threshold >>=5;
+00644     if (SG_hysteresis>480) {
+00645         SG_hysteresis=480;
+00646     }
+00647     //divide by 32
+00648     SG_hysteresis >>=5;
+00649     if (current_decrement_step_size>3) {
+00650         current_decrement_step_size=3;
+00651     }
+00652     if (current_increment_step_size>3) {
+00653         current_increment_step_size=3;
+00654     }
+00655     if (lower_current_limit>1) {
+00656         lower_current_limit=1;
+00657     }
+00658     //store the lower level in order to enable/disable the cool step
+00659     this->cool_step_lower_threshold=lower_SG_threshold;
+00660     //if cool step is not enabled we delete the lower value to keep it disabled
+00661     if (!this->cool_step_enabled) {
+00662         lower_SG_threshold=0;
+00663     }
+00664     //the good news is that we can start with a complete new cool step register value
+00665     //and simply set the values in the register
+00666     cool_step_register_value = ((unsigned long)lower_SG_threshold) | (((unsigned long)SG_hysteresis)<<8) | (((unsigned long)current_decrement_step_size)<<5)
+00667         | (((unsigned long)current_increment_step_size)<<13) | (((unsigned long)lower_current_limit)<<15)
+00668         //and of course we have to include the signature of the register
+00669         | COOL_STEP_REGISTER;
+00670     //Serial.println(cool_step_register_value,HEX);
+00671     if (started) {
+00672         send262(cool_step_register_value);
+00673     }
+00674 }
+00675 
+00676 void TMC26XStepper::setCoolStepEnabled(boolean enabled) {
+00677     //simply delete the lower limit to disable the cool step
+00678     cool_step_register_value &= ~SE_MIN_PATTERN;
+00679     //and set it to the proper value if cool step is to be enabled
+00680     if (enabled) {
+00681         cool_step_register_value |=this->cool_step_lower_threshold;
+00682     }
+00683     //and save the enabled status
+00684     this->cool_step_enabled = enabled;
+00685     //save the register value
+00686     if (started) {
+00687         send262(cool_step_register_value);
+00688     }
+00689 }
+00690 
+00691 boolean TMC26XStepper::isCoolStepEnabled(void) {
+00692     return this->cool_step_enabled;
+00693 }
+00694 
+00695 unsigned int TMC26XStepper::getCoolStepLowerSgThreshold() {
+00696     //we return our internally stored value - in order to provide the correct setting even if cool step is not enabled
+00697     return this->cool_step_lower_threshold<<5;
+00698 }
+00699 
+00700 unsigned int TMC26XStepper::getCoolStepUpperSgThreshold() {
+00701     return (unsigned char)((cool_step_register_value & SE_MAX_PATTERN)>>8)<<5;
+00702 }
+00703 
+00704 unsigned char TMC26XStepper::getCoolStepCurrentIncrementSize() {
+00705     return (unsigned char)((cool_step_register_value & CURRENT_DOWN_STEP_SPEED_PATTERN)>>13);
+00706 }
+00707 
+00708 unsigned char TMC26XStepper::getCoolStepNumberOfSGReadings() {
+00709     return (unsigned char)((cool_step_register_value & SE_CURRENT_STEP_WIDTH_PATTERN)>>5);
+00710 }
+00711 
+00712 unsigned char TMC26XStepper::getCoolStepLowerCurrentLimit() {
+00713     return (unsigned char)((cool_step_register_value & MINIMUM_CURRENT_FOURTH)>>15);
+00714 }
+00715 
+00716 void TMC26XStepper::setEnabled(boolean enabled) {
+00717     //delete the t_off in the chopper config to get sure
+00718     chopper_config_register &= ~(T_OFF_PATTERN);
+00719     if (enabled) {
+00720         //and set the t_off time
+00721         chopper_config_register |= this->constant_off_time;
+00722     }
+00723     //if not enabled we don't have to do anything since we already delete t_off from the register
+00724         if (started) {
+00725                 send262(chopper_config_register);
+00726         }       
+00727 }
+00728 
+00729 boolean TMC26XStepper::isEnabled() {
+00730     if (chopper_config_register & T_OFF_PATTERN) {
+00731         return true;
+00732     } else {
+00733         return false;
+00734     }
+00735 }
+00736 
+00737 /*
+00738  * reads a value from the TMC26X status register. The value is not obtained directly but can then 
+00739  * be read by the various status routines.
+00740  *
+00741  */
+00742 void TMC26XStepper::readStatus(char read_value) {
+00743     unsigned long old_driver_configuration_register_value = driver_configuration_register_value;
+00744         //reset the readout configuration
+00745         driver_configuration_register_value &= ~(READ_SELECTION_PATTERN);
+00746         //this now equals TMC26X_READOUT_POSITION - so we just have to check the other two options
+00747         if (read_value == TMC26X_READOUT_STALLGUARD) {
+00748                 driver_configuration_register_value |= READ_STALL_GUARD_READING;
+00749         } else if (read_value == TMC26X_READOUT_CURRENT) {
+00750                 driver_configuration_register_value |= READ_STALL_GUARD_AND_COOL_STEP;
+00751         }
+00752         //all other cases are ignored to prevent funny values
+00753     //check if the readout is configured for the value we are interested in
+00754     if (driver_configuration_register_value!=old_driver_configuration_register_value) {
+00755             //because then we need to write the value twice - one time for configuring, second time to get the value, see below
+00756             send262(driver_configuration_register_value);
+00757         }
+00758     //write the configuration to get the last status    
+00759         send262(driver_configuration_register_value);
+00760 }
+00761 
+00762 int TMC26XStepper::getMotorPosition(void) {
+00763         //we read it out even if we are not started yet - perhaps it is useful information for somebody
+00764         readStatus(TMC26X_READOUT_POSITION);
+00765     return getReadoutValue();
+00766 }
+00767 
+00768 //reads the stall guard setting from last status
+00769 //returns -1 if stallguard information is not present
+00770 int TMC26XStepper::getCurrentStallGuardReading(void) {
+00771         //if we don't yet started there cannot be a stall guard value
+00772         if (!started) {
+00773                 return -1;
+00774         }
+00775         //not time optimal, but solution optiomal:
+00776         //first read out the stall guard value
+00777         readStatus(TMC26X_READOUT_STALLGUARD);
+00778         return getReadoutValue();
+00779 }
+00780 
+00781 unsigned char TMC26XStepper::getCurrentCSReading(void) {
+00782         //if we don't yet started there cannot be a stall guard value
+00783         if (!started) {
+00784                 return 0;
+00785         }
+00786         //not time optimal, but solution optiomal:
+00787         //first read out the stall guard value
+00788         readStatus(TMC26X_READOUT_CURRENT);
+00789         return (getReadoutValue() & 0x1f);
+00790 }
+00791 
+00792 unsigned int TMC26XStepper::getCurrentCurrent(void) {
+00793     double result = (double)getCurrentCSReading();
+00794     double resistor_value = (double)this->resistor;
+00795     double voltage = (driver_configuration_register_value & VSENSE)? 0.165:0.31;
+00796     result = (result+1.0)/32.0*voltage/resistor_value*1000.0*1000.0;
+00797     return (unsigned int)result;
+00798 }
+00799 
+00800 /*
+00801  return true if the stallguard threshold has been reached
+00802 */
+00803 boolean TMC26XStepper::isStallGuardOverThreshold(void) {
+00804         if (!this->started) {
+00805                 return false;
+00806         }
+00807         return (driver_status_result & STATUS_STALL_GUARD_STATUS);
+00808 }
+00809 
+00810 /*
+00811  returns if there is any over temperature condition:
+00812  OVER_TEMPERATURE_PREWARING if pre warning level has been reached
+00813  OVER_TEMPERATURE_SHUTDOWN if the temperature is so hot that the driver is shut down
+00814  Any of those levels are not too good.
+00815 */
+00816 char TMC26XStepper::getOverTemperature(void) {
+00817         if (!this->started) {
+00818                 return 0;
+00819         }
+00820         if (driver_status_result & STATUS_OVER_TEMPERATURE_SHUTDOWN) {
+00821                 return TMC26X_OVERTEMPERATURE_SHUTDOWN;
+00822         }
+00823         if (driver_status_result & STATUS_OVER_TEMPERATURE_WARNING) {
+00824                 return TMC26X_OVERTEMPERATURE_PREWARING;
+00825         }
+00826         return 0;
+00827 }
+00828 
+00829 //is motor channel A shorted to ground
+00830 boolean TMC26XStepper::isShortToGroundA(void) {
+00831         if (!this->started) {
+00832                 return false;
+00833         }
+00834         return (driver_status_result & STATUS_SHORT_TO_GROUND_A);
+00835 }
+00836 
+00837 //is motor channel B shorted to ground
+00838 boolean TMC26XStepper::isShortToGroundB(void) {
+00839         if (!this->started) {
+00840                 return false;
+00841         }
+00842         return (driver_status_result & STATUS_SHORT_TO_GROUND_B);
+00843 }
+00844 
+00845 //is motor channel A connected
+00846 boolean TMC26XStepper::isOpenLoadA(void) {
+00847         if (!this->started) {
+00848                 return false;
+00849         }
+00850         return (driver_status_result & STATUS_OPEN_LOAD_A);
+00851 }
+00852 
+00853 //is motor channel B connected
+00854 boolean TMC26XStepper::isOpenLoadB(void) {
+00855         if (!this->started) {
+00856                 return false;
+00857         }
+00858         return (driver_status_result & STATUS_OPEN_LOAD_B);
+00859 }
+00860 
+00861 //is chopper inactive since 2^20 clock cycles - defaults to ~0,08s
+00862 boolean TMC26XStepper::isStandStill(void) {
+00863         if (!this->started) {
+00864                 return false;
+00865         }
+00866         return (driver_status_result & STATUS_STAND_STILL);
+00867 }
+00868 
+00869 //is chopper inactive since 2^20 clock cycles - defaults to ~0,08s
+00870 boolean TMC26XStepper::isStallGuardReached(void) {
+00871         if (!this->started) {
+00872                 return false;
+00873         }
+00874         return (driver_status_result & STATUS_STALL_GUARD_STATUS);
+00875 }
+00876 
+00877 //reads the stall guard setting from last status
+00878 //returns -1 if stallguard inforamtion is not present
+00879 int TMC26XStepper::getReadoutValue(void) {
+00880         return (int)(driver_status_result >> 10);
+00881 }
+00882 
+00883 int TMC26XStepper::getResistor() {
+00884     return this->resistor;
+00885 }
+00886 
+00887 boolean TMC26XStepper::isCurrentScalingHalfed() {
+00888     if (this->driver_configuration_register_value & VSENSE) {
+00889         return true;
+00890     } else {
+00891         return false;
+00892     }
+00893 }
+00894 /*
+00895  version() returns the version of the library:
+00896  */
+00897 int TMC26XStepper::version(void)
+00898 {
+00899         return 1;
+00900 }
+00901 
+00902 void TMC26XStepper::debugLastStatus() {
+00903 #ifdef DEBUG    
+00904 if (this->started) {
+00905                 if (this->getOverTemperature()&TMC26X_OVERTEMPERATURE_PREWARING) {
+00906                         Serial.println("WARNING: Overtemperature Prewarning!");
+00907                 } else if (this->getOverTemperature()&TMC26X_OVERTEMPERATURE_SHUTDOWN) {
+00908                         Serial.println("ERROR: Overtemperature Shutdown!");
+00909                 }
+00910                 if (this->isShortToGroundA()) {
+00911                         Serial.println("ERROR: SHORT to ground on channel A!");
+00912                 }
+00913                 if (this->isShortToGroundB()) {
+00914                         Serial.println("ERROR: SHORT to ground on channel A!");
+00915                 }
+00916                 if (this->isOpenLoadA()) {
+00917                         Serial.println("ERROR: Channel A seems to be unconnected!");
+00918                 }
+00919                 if (this->isOpenLoadB()) {
+00920                         Serial.println("ERROR: Channel B seems to be unconnected!");
+00921                 }
+00922                 if (this->isStallGuardReached()) {      
+00923                         Serial.println("INFO: Stall Guard level reached!");
+00924                 }
+00925                 if (this->isStandStill()) {
+00926                         Serial.println("INFO: Motor is standing still.");
+00927                 }
+00928                 unsigned long readout_config = driver_configuration_register_value & READ_SELECTION_PATTERN;
+00929                 int value = getReadoutValue();
+00930                 if (readout_config == READ_MICROSTEP_POSTION) {
+00931                         Serial.print("Microstep postion phase A: ");
+00932                         Serial.println(value);
+00933                 } else if (readout_config == READ_STALL_GUARD_READING) {
+00934                         Serial.print("Stall Guard value:");
+00935                         Serial.println(value);
+00936                 } else if (readout_config == READ_STALL_GUARD_AND_COOL_STEP) {
+00937                         int stallGuard = value & 0xf;
+00938                         int current = value & 0x1F0;
+00939                         Serial.print("Approx Stall Guard: ");
+00940                         Serial.println(stallGuard);
+00941                         Serial.print("Current level");
+00942                         Serial.println(current);
+00943                 }
+00944         }
+00945 #endif
+00946 }
+00947 
+00948 /*
+00949  * send register settings to the stepper driver via SPI
+00950  * returns the current status
+00951  */
+00952 inline void TMC26XStepper::send262(unsigned long datagram) {
+00953         unsigned long i_datagram;
+00954     
+00955     //preserver the previous spi mode
+00956     unsigned char oldMode =  SPCR & SPI_MODE_MASK;
+00957         
+00958     //if the mode is not correct set it to mode 3
+00959     if (oldMode != SPI_MODE3) {
+00960         SPI.setDataMode(SPI_MODE3);
+00961     }
+00962         
+00963         //select the TMC driver
+00964         digitalWrite(cs_pin,LOW);
+00965 
+00966         //ensure that only valid bist are set (0-19)
+00967         //datagram &=REGISTER_BIT_PATTERN;
+00968         
+00969 #ifdef DEBUG
+00970         Serial.print("Sending ");
+00971         Serial.println(datagram,HEX);
+00972 #endif
+00973 
+00974         //write/read the values
+00975         i_datagram = SPI.transfer((datagram >> 16) & 0xff);
+00976         i_datagram <<= 8;
+00977         i_datagram |= SPI.transfer((datagram >>  8) & 0xff);
+00978         i_datagram <<= 8;
+00979         i_datagram |= SPI.transfer((datagram) & 0xff);
+00980         i_datagram >>= 4;
+00981         
+00982 #ifdef DEBUG
+00983         Serial.print("Received ");
+00984         Serial.println(i_datagram,HEX);
+00985         debugLastStatus();
+00986 #endif
+00987         //deselect the TMC chip
+00988         digitalWrite(cs_pin,HIGH); 
+00989     
+00990     //restore the previous SPI mode if neccessary
+00991     //if the mode is not correct set it to mode 3
+00992     if (oldMode != SPI_MODE3) {
+00993         SPI.setDataMode(oldMode);
+00994     }
+00995 
+00996         
+00997         //store the datagram as status result
+00998         driver_status_result = i_datagram;
+00999 }
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h.html new file mode 100644 index 000000000..34fda0a43 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h.html @@ -0,0 +1,212 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC26XStepper.h File Reference + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+ +
+
TMC26XStepper.h File Reference
+
+
+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  TMC26XStepper
 Class representing a TMC26X stepper driver. More...

+Defines

#define TMC26X_OVERTEMPERATURE_PREWARING   1
 return value for TMC26XStepper.getOverTemperature() if there is a overtemperature situation in the TMC chip
#define TMC26X_OVERTEMPERATURE_SHUTDOWN   2
 return value for TMC26XStepper.getOverTemperature() if there is a overtemperature shutdown in the TMC chip
#define TMC26X_READOUT_POSITION   0
#define TMC26X_READOUT_STALLGUARD   1
#define TMC26X_READOUT_CURRENT   3
#define COOL_STEP_HALF_CS_LIMIT   0
#define COOL_STEP_QUARTDER_CS_LIMIT   1
+

Define Documentation

+ +
+
+ + + + +
#define COOL_STEP_HALF_CS_LIMIT   0
+
+
+

Define to set the minimum current for CoolStep operation to 1/2 of the selected CS minium.

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 70 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define COOL_STEP_QUARTDER_CS_LIMIT   1
+
+
+

Define to set the minimum current for CoolStep operation to 1/4 of the selected CS minium.

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 75 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define TMC26X_OVERTEMPERATURE_PREWARING   1
+
+
+ +

return value for TMC26XStepper.getOverTemperature() if there is a overtemperature situation in the TMC chip

+

This warning indicates that the TCM chip is too warm. It is still working but some parameters may be inferior. You should do something against it.

+ +

Definition at line 39 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define TMC26X_OVERTEMPERATURE_SHUTDOWN   2
+
+
+ +

return value for TMC26XStepper.getOverTemperature() if there is a overtemperature shutdown in the TMC chip

+

This warning indicates that the TCM chip is too warm to operate and has shut down to prevent damage. It will stop working until it cools down again. If you encouter this situation you must do something against it. Like reducing the current or improving the PCB layout and/or heat management.

+ +

Definition at line 47 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define TMC26X_READOUT_CURRENT   3
+
+
+

Selects to read out the current current setting (acc. to CoolStep) and the upper bits of the StallGuard value from the motor.

+
See also:
readStatus(), setCurrent()
+ +

Definition at line 64 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define TMC26X_READOUT_POSITION   0
+
+
+

Selects to readout the microstep position from the motor.

+
See also:
readStatus()
+ +

Definition at line 54 of file TMC26XStepper.h.

+ +
+
+ +
+
+ + + + +
#define TMC26X_READOUT_STALLGUARD   1
+
+
+

Selects to read out the StallGuard value of the motor.

+
See also:
readStatus()
+ +

Definition at line 59 of file TMC26XStepper.h.

+ +
+
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h_source.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h_source.html new file mode 100644 index 000000000..521b53af7 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/_t_m_c26_x_stepper_8h_source.html @@ -0,0 +1,256 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC26XStepper.h Source File + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
TMC26XStepper.h
+
+
+Go to the documentation of this file.
00001 /*
+00002  TMC26XStepper.cpp - - TMC26X Stepper library for Wiring/Arduino - Version 0.1
+00003  
+00004  based on the stepper library by Tom Igoe, et. al.
+00005 
+00006  Copyright (c) 2011, Interactive Matter, Marcus Nowotny
+00007  
+00008  Permission is hereby granted, free of charge, to any person obtaining a copy
+00009  of this software and associated documentation files (the "Software"), to deal
+00010  in the Software without restriction, including without limitation the rights
+00011  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+00012  copies of the Software, and to permit persons to whom the Software is
+00013  furnished to do so, subject to the following conditions:
+00014  
+00015  The above copyright notice and this permission notice shall be included in
+00016  all copies or substantial portions of the Software.
+00017  
+00018  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+00019  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+00020  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+00021  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+00022  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+00023  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+00024  THE SOFTWARE.
+00025 
+00026  */
+00027 
+00028 
+00029 // ensure this library description is only included once
+00030 #ifndef TMC26XStepper_h
+00031 #define TMC26XStepper_h
+00032 
+00034 
+00039 #define TMC26X_OVERTEMPERATURE_PREWARING 1
+00040 
+00041 
+00047 #define TMC26X_OVERTEMPERATURE_SHUTDOWN 2
+00048 
+00049 //which values can be read out
+00054 #define TMC26X_READOUT_POSITION 0
+00055 
+00059 #define TMC26X_READOUT_STALLGUARD 1
+00060 
+00064 #define TMC26X_READOUT_CURRENT 3
+00065 
+00070 #define COOL_STEP_HALF_CS_LIMIT 0
+00071 
+00075 #define COOL_STEP_QUARTDER_CS_LIMIT 1
+00076 
+00101 class TMC26XStepper {
+00102   public:
+00124         TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor=150);
+00125         
+00133         void start();
+00134     
+00145         void un_start();
+00146 
+00147 
+00152     void setSpeed(unsigned int whatSpeed);
+00153     
+00158     unsigned int getSpeed(void);
+00159 
+00168         void setMicrosteps(int number_of_steps);
+00169     
+00178         int getMicrosteps(void);
+00179 
+00195     char step(int number_of_steps);
+00196     
+00215     char move(void);
+00216 
+00224     char isMoving(void);
+00225     
+00230     unsigned int getStepsLeft(void);
+00231     
+00238     char stop(void);
+00239     
+00264         void setConstantOffTimeChopper(char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator);
+00265     
+00286         void setSpreadCycleChopper(char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement);
+00287 
+00303         void setRandomOffTime(char value);
+00304     
+00312         void setCurrent(unsigned int current);
+00313     
+00320     unsigned int getCurrent(void);
+00321     
+00337         void setStallGuardThreshold(char stall_guard_threshold, char stall_guard_filter_enabled);
+00338     
+00343     char getStallGuardThreshold(void);
+00344     
+00349     char getStallGuardFilter(void);
+00350     
+00368     void setCoolStepConfiguration(unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size,
+00369                                   unsigned char current_increment_step_size, unsigned char lower_current_limit);
+00370     
+00376     void setCoolStepEnabled(boolean enabled);
+00377     
+00378     
+00383     boolean isCoolStepEnabled();
+00384 
+00389     unsigned int getCoolStepLowerSgThreshold();
+00390     
+00395     unsigned int getCoolStepUpperSgThreshold();
+00396     
+00401     unsigned char getCoolStepNumberOfSGReadings();
+00402     
+00407     unsigned char getCoolStepCurrentIncrementSize();
+00408     
+00414     unsigned char getCoolStepLowerCurrentLimit();
+00415     
+00422         int getMotorPosition(void);
+00423     
+00430         int getCurrentStallGuardReading(void);
+00431     
+00437     unsigned char getCurrentCSReading(void);
+00438     
+00439     
+00444     boolean isCurrentScalingHalfed();
+00445 
+00453     unsigned int getCurrentCurrent(void);
+00454     
+00463         boolean isStallGuardOverThreshold(void);
+00464     
+00471         char getOverTemperature(void);
+00472     
+00480         boolean isShortToGroundA(void);
+00481 
+00488         boolean isShortToGroundB(void);
+00495         boolean isOpenLoadA(void);
+00496 
+00503         boolean isOpenLoadB(void);
+00504     
+00511         boolean isStandStill(void);
+00512 
+00524         boolean isStallGuardReached(void);
+00525     
+00530     void setEnabled(boolean enabled);
+00531     
+00537     boolean isEnabled();
+00538 
+00548         void readStatus(char read_value);
+00549     
+00554     int getResistor();
+00555 
+00560         void debugLastStatus(void);
+00565     int version(void);
+00566 
+00567   private:    
+00568         unsigned int steps_left;                //the steps the motor has to do to complete the movement
+00569     int direction;        // Direction of rotation
+00570     unsigned long step_delay;    // delay between steps, in ms, based on speed
+00571     int number_of_steps;      // total number of steps this motor can take
+00572     unsigned int speed; // we need to store the current speed in order to change the speed after changing microstepping
+00573     unsigned int resistor; //current sense resitor value in milliohm
+00574         
+00575     unsigned long last_step_time;      // time stamp in ms of when the last step was taken
+00576     unsigned long next_step_time;      // time stamp in ms of when the last step was taken
+00577         
+00578         //driver control register copies to easily set & modify the registers
+00579         unsigned long driver_control_register_value;
+00580         unsigned long chopper_config_register;
+00581         unsigned long cool_step_register_value;
+00582         unsigned long stall_guard2_current_register_value;
+00583         unsigned long driver_configuration_register_value;
+00584         //the driver status result
+00585         unsigned long driver_status_result;
+00586         
+00587         //helper routione to get the top 10 bit of the readout
+00588         inline int getReadoutValue();
+00589         
+00590         //the pins for the stepper driver
+00591         unsigned char cs_pin;
+00592         unsigned char step_pin;
+00593         unsigned char dir_pin;
+00594         
+00595         //status values 
+00596         boolean started; //if the stepper has been started yet
+00597         int microsteps; //the current number of micro steps
+00598     char constant_off_time; //we need to remember this value in order to enable and disable the motor
+00599     unsigned char cool_step_lower_threshold; // we need to remember the threshold to enable and disable the CoolStep feature
+00600     boolean cool_step_enabled; //we need to remember this to configure the coolstep if it si enabled
+00601         
+00602         //SPI sender
+00603         inline void send262(unsigned long datagram);
+00604 };
+00605 
+00606 #endif
+00607 
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/annotated.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/annotated.html new file mode 100644 index 000000000..193044cff --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/annotated.html @@ -0,0 +1,72 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: Class List + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ +
TMC26XStepperClass representing a TMC26X stepper driver
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/bc_s.png b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/bc_s.png new file mode 100644 index 000000000..e4018628b Binary files /dev/null and b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/bc_s.png differ diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper-members.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper-members.html new file mode 100644 index 000000000..4547542b9 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper-members.html @@ -0,0 +1,117 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: Member List + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
TMC26XStepper Member List
+
+
+This is the complete list of members for TMC26XStepper, including all inherited members. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
debugLastStatus(void)TMC26XStepper
getCoolStepCurrentIncrementSize()TMC26XStepper
getCoolStepLowerCurrentLimit()TMC26XStepper
getCoolStepLowerSgThreshold()TMC26XStepper
getCoolStepNumberOfSGReadings()TMC26XStepper
getCoolStepUpperSgThreshold()TMC26XStepper
getCurrent(void)TMC26XStepper
getCurrentCSReading(void)TMC26XStepper
getCurrentCurrent(void)TMC26XStepper
getCurrentStallGuardReading(void)TMC26XStepper
getMicrosteps(void)TMC26XStepper
getMotorPosition(void)TMC26XStepper
getOverTemperature(void)TMC26XStepper
getResistor()TMC26XStepper
getSpeed(void)TMC26XStepper
getStallGuardFilter(void)TMC26XStepper
getStallGuardThreshold(void)TMC26XStepper
getStepsLeft(void)TMC26XStepper
isCoolStepEnabled()TMC26XStepper
isCurrentScalingHalfed()TMC26XStepper
isEnabled()TMC26XStepper
isMoving(void)TMC26XStepper
isOpenLoadA(void)TMC26XStepper
isOpenLoadB(void)TMC26XStepper
isShortToGroundA(void)TMC26XStepper
isShortToGroundB(void)TMC26XStepper
isStallGuardOverThreshold(void)TMC26XStepper
isStallGuardReached(void)TMC26XStepper
isStandStill(void)TMC26XStepper
move(void)TMC26XStepper
readStatus(char read_value)TMC26XStepper
setConstantOffTimeChopper(char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator)TMC26XStepper
setCoolStepConfiguration(unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size, unsigned char current_increment_step_size, unsigned char lower_current_limit)TMC26XStepper
setCoolStepEnabled(boolean enabled)TMC26XStepper
setCurrent(unsigned int current)TMC26XStepper
setEnabled(boolean enabled)TMC26XStepper
setMicrosteps(int number_of_steps)TMC26XStepper
setRandomOffTime(char value)TMC26XStepper
setSpeed(unsigned int whatSpeed)TMC26XStepper
setSpreadCycleChopper(char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement)TMC26XStepper
setStallGuardThreshold(char stall_guard_threshold, char stall_guard_filter_enabled)TMC26XStepper
start()TMC26XStepper
step(int number_of_steps)TMC26XStepper
stop(void)TMC26XStepper
TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor=150)TMC26XStepper
un_start()TMC26XStepper
version(void)TMC26XStepper
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper.html new file mode 100644 index 000000000..77c36f0bb --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/class_t_m_c26_x_stepper.html @@ -0,0 +1,1463 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC26XStepper Class Reference + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+ +
+
TMC26XStepper Class Reference
+
+
+ +

Class representing a TMC26X stepper driver. + More...

+ +

#include <TMC26XStepper.h>

+ +

List of all members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TMC26XStepper (int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int current, unsigned int resistor=150)
 creates a new represenatation of a stepper motor connected to a TMC26X stepper driver
void start ()
 configures and starts the TMC26X stepper driver. Before you called this function the stepper driver is in nonfunctional mode.
void un_start ()
 resets the stepper in unconfigured mode.
void setSpeed (unsigned int whatSpeed)
 Sets the rotation speed in revolutions per minute.
unsigned int getSpeed (void)
 reads out the currently selected speed in revolutions per minute.
void setMicrosteps (int number_of_steps)
 Set the number of microsteps in 2^i values (rounded) up to 256.
int getMicrosteps (void)
 returns the effective current number of microsteps selected.
char step (int number_of_steps)
 Initiate a movement for the given number of steps. Positive numbers move in one, negative numbers in the other direction.
char move (void)
 Central movement method, must be called as often as possible in the lopp function and is very fast.
char isMoving (void)
 checks if the motor still has to move to fulfill the last movement command.
unsigned int getStepsLeft (void)
 Get the number of steps left in the current movement.
char stop (void)
 Stops the motor regardless if it moves or not.
void setConstantOffTimeChopper (char constant_off_time, char blank_time, char fast_decay_time_setting, char sine_wave_offset, unsigned char use_current_comparator)
 Sets and configure the classical Constant Off Timer Chopper.
void setSpreadCycleChopper (char constant_off_time, char blank_time, char hysteresis_start, char hysteresis_end, char hysteresis_decrement)
 Sets and configures with spread cycle chopper.
void setRandomOffTime (char value)
 Use random off time for noise reduction (0 for off, -1 for on).
void setCurrent (unsigned int current)
 set the maximum motor current in mA (1000 is 1 Amp) Keep in mind this is the maximum peak Current. The RMS current will be 1/sqrt(2) smaller. The actual current can also be smaller by employing CoolStep.
unsigned int getCurrent (void)
 readout the motor maximum current in mA (1000 is an Amp) This is the maximum current. to get the current current - which may be affected by CoolStep us getCurrentCurrent()
void setStallGuardThreshold (char stall_guard_threshold, char stall_guard_filter_enabled)
 set the StallGuard threshold in order to get sensible StallGuard readings.
char getStallGuardThreshold (void)
 reads out the StallGuard threshold
char getStallGuardFilter (void)
 returns the current setting of the StallGuard filter
void setCoolStepConfiguration (unsigned int lower_SG_threshold, unsigned int SG_hysteresis, unsigned char current_decrement_step_size, unsigned char current_increment_step_size, unsigned char lower_current_limit)
 This method configures the CoolStep smart energy operation. You must have a proper StallGuard configuration for the motor situation (current, voltage, speed) in rder to use this feature.
void setCoolStepEnabled (boolean enabled)
 enables or disables the CoolStep smart energy operation feature. It must be configured before enabling it.
boolean isCoolStepEnabled ()
 check if the CoolStep feature is enabled
unsigned int getCoolStepLowerSgThreshold ()
 returns the lower StallGuard threshold for the CoolStep operation
unsigned int getCoolStepUpperSgThreshold ()
 returns the upper StallGuard threshold for the CoolStep operation
unsigned char getCoolStepNumberOfSGReadings ()
 returns the number of StallGuard readings befor CoolStep adjusts the motor current.
unsigned char getCoolStepCurrentIncrementSize ()
 returns the increment steps for the current for the CoolStep operation
unsigned char getCoolStepLowerCurrentLimit ()
 returns the absolut minium current for the CoolStep operation
int getMotorPosition (void)
 Get the current microstep position for phase A.
int getCurrentStallGuardReading (void)
 Reads the current StallGuard value.
unsigned char getCurrentCSReading (void)
 Reads the current current setting value as fraction of the maximum current Returns values between 0 and 31, representing 1/32 to 32/32 (=1)
boolean isCurrentScalingHalfed ()
 a convenience method to determine if the current scaling uses 0.31V or 0.165V as reference.
unsigned int getCurrentCurrent (void)
 Reads the current current setting value and recalculates the absolute current in mA (1A would be 1000). This method calculates the currently used current setting (either by setting or by CoolStep) and reconstructs the current in mA by usinge the VSENSE and resistor value. This method uses floating point math - so it may not be the fastest.
boolean isStallGuardOverThreshold (void)
 checks if there is a StallGuard warning in the last status
char getOverTemperature (void)
 Return over temperature status of the last status readout return 0 is everything is OK, TMC26X_OVERTEMPERATURE_PREWARING if status is reached, TMC26X_OVERTEMPERATURE_SHUTDOWN is the chip is shutdown, -1 if the status is unknown. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
boolean isShortToGroundA (void)
 Is motor channel A shorted to ground detected in the last status readout.
boolean isShortToGroundB (void)
 Is motor channel B shorted to ground detected in the last status readout.
boolean isOpenLoadA (void)
 iIs motor channel A connected according to the last statu readout.
boolean isOpenLoadB (void)
 iIs motor channel A connected according to the last statu readout.
boolean isStandStill (void)
 Is chopper inactive since 2^20 clock cycles - defaults to ~0,08s.
boolean isStallGuardReached (void)
 checks if there is a StallGuard warning in the last status
void setEnabled (boolean enabled)
 enables or disables the motor driver bridges. If disabled the motor can run freely. If enabled not.
boolean isEnabled ()
 checks if the output bridges are enabled. If the bridges are not enabled the motor can run freely
void readStatus (char read_value)
 Manually read out the status register This function sends a byte to the motor driver in order to get the current readout. The parameter read_value seletcs which value will get returned. If the read_vlaue changes in respect to the previous readout this method automatically send two bytes to the motor: one to set the redout and one to get the actual readout. So this method may take time to send and read one or two bits - depending on the previous readout.
int getResistor ()
 Returns the current sense resistor value in milliohm. The default value of ,15 Ohm will return 150.
void debugLastStatus (void)
 Prints out all the information that can be found in the last status read out - it does not force a status readout. The result is printed via Serial.
int version (void)
 library version
+

Detailed Description

+

Class representing a TMC26X stepper driver.

+

In order to use one fo those drivers in your Arduino code you have to create an object of that class:

+
 TMC26XStepper stepper = TMC26XStepper(200,1,2,3,500);
+

see TMC26XStepper(int number_of_steps, int cs_pin, int dir_pin, int step_pin, unsigned int rms_current)

+

Keep in mind that you need to start the driver with start() in order to get the TMC26X configured.

+

The most important function is the move(). It checks if the motor has to do a step or not. It is important that you call move() as often as possible in your Arduino loop() routine. I suggest to use a very fast loop routine and always call it at the beginning or the end.

+

In order to move you have to provide a movement speed with setSpeed(). The speed is a positive value setting the rotations per minute.

+

To really move the motor you have to call step() to tell the driver to move the motor the given number of steps in the given direction. Positive values move the motor in one direction, negative values in the other direction.

+

You can check with isMoving() if the mototr is still moving or stop it apruptely with stop().

+ +

Definition at line 101 of file TMC26XStepper.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TMC26XStepper::TMC26XStepper (int number_of_steps,
int cs_pin,
int dir_pin,
int step_pin,
unsigned int current,
unsigned int resistor = 150 
)
+
+
+ +

creates a new represenatation of a stepper motor connected to a TMC26X stepper driver

+

This is the main constructor. If in doubt use this. You must provide all parameters as described below.

+
Parameters:
+ + + + + + + +
number_of_stepsthe number of steps the motor has per rotation.
cs_pinThe Arduino pin you have connected the Cient Select Pin (!CS) of the TMC26X for SPI
dir_pinthe number of the Arduino pin the Direction input of the TMC26X is connected
step_pinthe number of the Arduino pin the step pin of the TMC26X driver is connected.
rms_currentthe maximum current to privide to the motor in mA (!). A value of 200 would send up to 200mA to the motor
resistorthe current sense resistor in milli Ohm, defaults to ,15 Ohm ( or 150 milli Ohm) as in the TMC260 Arduino Shield
+
+
+

Keep in mind that you must also call TMC26XStepper.start() in order to configure the stepper driver for use.

+

By default the Constant Off Time chopper is used, see TCM262Stepper.setConstantOffTimeChopper() for details. This should work on most motors (YMMV). You may want to configure and use the Spread Cycle Chopper, see setSpreadCycleChopper().

+

By default a microstepping of 1/32th is used to provide a smooth motor run, while still giving a good progression per step. You can select a different stepping with setMicrosteps() to aa different value.

+
See also:
start(), setMicrosteps()
+ +

Definition at line 111 of file TMC26XStepper.cpp.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + + + + +
void TMC26XStepper::debugLastStatus (void )
+
+
+ +

Prints out all the information that can be found in the last status read out - it does not force a status readout. The result is printed via Serial.

+ +

Definition at line 902 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
unsigned char TMC26XStepper::getCoolStepCurrentIncrementSize ()
+
+
+ +

returns the increment steps for the current for the CoolStep operation

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 704 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
unsigned char TMC26XStepper::getCoolStepLowerCurrentLimit ()
+
+
+ +

returns the absolut minium current for the CoolStep operation

+
See also:
setCoolStepConfiguration()
+
+COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT
+ +

Definition at line 712 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
unsigned int TMC26XStepper::getCoolStepLowerSgThreshold ()
+
+
+ +

returns the lower StallGuard threshold for the CoolStep operation

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 695 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
unsigned char TMC26XStepper::getCoolStepNumberOfSGReadings ()
+
+
+ +

returns the number of StallGuard readings befor CoolStep adjusts the motor current.

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 708 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
unsigned int TMC26XStepper::getCoolStepUpperSgThreshold ()
+
+
+ +

returns the upper StallGuard threshold for the CoolStep operation

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 700 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
unsigned int TMC26XStepper::getCurrent (void )
+
+
+ +

readout the motor maximum current in mA (1000 is an Amp) This is the maximum current. to get the current current - which may be affected by CoolStep us getCurrentCurrent()

+
Returns:
the maximum motor current in milli amps
+
See also:
getCurrentCurrent()
+ +

Definition at line 336 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
unsigned char TMC26XStepper::getCurrentCSReading (void )
+
+
+ +

Reads the current current setting value as fraction of the maximum current Returns values between 0 and 31, representing 1/32 to 32/32 (=1)

+
See also:
setCoolStepConfiguration()
+ +

Definition at line 781 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
unsigned int TMC26XStepper::getCurrentCurrent (void )
+
+
+ +

Reads the current current setting value and recalculates the absolute current in mA (1A would be 1000). This method calculates the currently used current setting (either by setting or by CoolStep) and reconstructs the current in mA by usinge the VSENSE and resistor value. This method uses floating point math - so it may not be the fastest.

+
See also:
getCurrentCSReading(), getResistor(), isCurrentScalingHalfed(), getCurrent()
+ +

Definition at line 792 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
int TMC26XStepper::getCurrentStallGuardReading (void )
+
+
+ +

Reads the current StallGuard value.

+
Returns:
The current StallGuard value, lesser values indicate higher load, 0 means stall detected. Keep in mind that this routine reads and writes a value via SPI - so this may take a bit time.
+
See also:
setStallGuardThreshold() for tuning the readout to sensible ranges.
+ +

Definition at line 770 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
int TMC26XStepper::getMicrosteps (void )
+
+
+ +

returns the effective current number of microsteps selected.

+

This function always returns the effective number of microsteps. This can be a bit different than the micro steps set in setMicrosteps() since it is rounded to 2^i.

+
See also:
setMicrosteps()
+ +

Definition at line 446 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
int TMC26XStepper::getMotorPosition (void )
+
+
+ +

Get the current microstep position for phase A.

+
Returns:
The current microstep position for phase A 0…255
+

Keep in mind that this routine reads and writes a value via SPI - so this may take a bit time.

+ +

Definition at line 762 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::getOverTemperature (void )
+
+
+ +

Return over temperature status of the last status readout return 0 is everything is OK, TMC26X_OVERTEMPERATURE_PREWARING if status is reached, TMC26X_OVERTEMPERATURE_SHUTDOWN is the chip is shutdown, -1 if the status is unknown. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.

+ +

Definition at line 816 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
int TMC26XStepper::getResistor ()
+
+
+ +

Returns the current sense resistor value in milliohm. The default value of ,15 Ohm will return 150.

+ +

Definition at line 883 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
unsigned int TMC26XStepper::getSpeed (void )
+
+
+ +

reads out the currently selected speed in revolutions per minute.

+
See also:
setSpeed()
+ +

Definition at line 221 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::getStallGuardFilter (void )
+
+
+ +

returns the current setting of the StallGuard filter

+
Returns:
0 if not set, -1 if set
+ +

Definition at line 381 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::getStallGuardThreshold (void )
+
+
+ +

reads out the StallGuard threshold

+
Returns:
a number between -64 and 63.
+ +

Definition at line 368 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
unsigned int TMC26XStepper::getStepsLeft (void )
+
+
+ +

Get the number of steps left in the current movement.

+
Returns:
The number of steps left in the movement. This number is always positive.
+ +

Definition at line 278 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isCoolStepEnabled (void )
+
+
+ +

check if the CoolStep feature is enabled

+
See also:
setCoolStepEnabled()
+ +

Definition at line 691 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
boolean TMC26XStepper::isCurrentScalingHalfed ()
+
+
+ +

a convenience method to determine if the current scaling uses 0.31V or 0.165V as reference.

+
Returns:
false if 0.13V is the reference voltage, true if 0.165V is used.
+ +

Definition at line 887 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
boolean TMC26XStepper::isEnabled ()
+
+
+ +

checks if the output bridges are enabled. If the bridges are not enabled the motor can run freely

+
Returns:
true if the bridges and by that the motor driver are enabled, false if not.
+
See also:
setEnabled()
+ +

Definition at line 729 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::isMoving (void )
+
+
+ +

checks if the motor still has to move to fulfill the last movement command.

+
Returns:
0 if the motor stops, -1 if the motor is moving.
+

This method can be used to determine if the motor is ready for new movements.

+
See also:
step(), move()
+ +

Definition at line 274 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isOpenLoadA (void )
+
+
+ +

iIs motor channel A connected according to the last statu readout.

+
Returns:
true is yes, false if not. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+ +

Definition at line 846 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isOpenLoadB (void )
+
+
+ +

iIs motor channel A connected according to the last statu readout.

+
Returns:
true is yes, false if not. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+ +

Definition at line 854 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isShortToGroundA (void )
+
+
+ +

Is motor channel A shorted to ground detected in the last status readout.

+
Returns:
true is yes, false if not. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+ +

Definition at line 830 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isShortToGroundB (void )
+
+
+ +

Is motor channel B shorted to ground detected in the last status readout.

+
Returns:
true is yes, false if not. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+ +

Definition at line 838 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isStallGuardOverThreshold (void )
+
+
+ +

checks if there is a StallGuard warning in the last status

+
Returns:
0 if there was no warning, -1 if there was some warning. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+
See also:
setStallGuardThreshold() for tuning the readout to sensible ranges.
+ +

Definition at line 803 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isStallGuardReached (void )
+
+
+ +

checks if there is a StallGuard warning in the last status

+
Returns:
0 if there was no warning, -1 if there was some warning. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+
See also:
isStallGuardOverThreshold() TODO why?
+
+setStallGuardThreshold() for tuning the readout to sensible ranges.
+ +

Definition at line 870 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
boolean TMC26XStepper::isStandStill (void )
+
+
+ +

Is chopper inactive since 2^20 clock cycles - defaults to ~0,08s.

+
Returns:
true is yes, false if not. Keep in mind that this method does not enforce a readout but uses the value of the last status readout. You may want to use getMotorPosition() or getCurrentStallGuardReading() to enforce an updated status readout.
+ +

Definition at line 862 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::move (void )
+
+
+ +

Central movement method, must be called as often as possible in the lopp function and is very fast.

+

This routine checks if the motor still has to move, if the waiting delay has passed to send a new step command to the motor and manages the number of steps yet to move to fulfill the current move command.

+

This function is implemented to be as fast as possible to call it as often as possible in your loop routine. The more regurlarly you call this function the better. In both senses of 'regularly': Calling it as often as possible is not a bad idea and if you even manage that the intervals you call this function are not too irregular helps too.

+

You can call this routine even if you know that the motor is not miving. It introduces just a very small penalty in your code. You must not call isMoving() to determine if you need to call this function, since taht is done internally already and only slows down you code.

+

How often you call this function directly influences your top miving speed for the motor. It may be a good idea to call this from an timer overflow interrupt to ensure proper calling.

+
See also:
step()
+ +

Definition at line 246 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::readStatus (char read_value)
+
+
+ +

Manually read out the status register This function sends a byte to the motor driver in order to get the current readout. The parameter read_value seletcs which value will get returned. If the read_vlaue changes in respect to the previous readout this method automatically send two bytes to the motor: one to set the redout and one to get the actual readout. So this method may take time to send and read one or two bits - depending on the previous readout.

+
Parameters:
+ + +
read_valueselects which value to read out (0..3). You can use the defines TMC26X_READOUT_POSITION, TMC_262_READOUT_STALLGUARD, or TMC_262_READOUT_CURRENT
+
+
+
See also:
TMC26X_READOUT_POSITION, TMC_262_READOUT_STALLGUARD, TMC_262_READOUT_CURRENT
+ +

Definition at line 742 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TMC26XStepper::setConstantOffTimeChopper (char constant_off_time,
char blank_time,
char fast_decay_time_setting,
char sine_wave_offset,
unsigned char use_current_comparator 
)
+
+
+ +

Sets and configure the classical Constant Off Timer Chopper.

+
Parameters:
+ + + + + + +
constant_off_timeThe off time setting controls the minimum chopper frequency. For most applications an off time within the range of 5μs to 20μs will fit. Setting this parameter to zero completely disables all driver transistors and the motor can free-wheel. 0: chopper off, 1:15: off time setting (1 will work with minimum blank time of 24 clocks)
blank_timeSelects the comparator blank time. This time needs to safely cover the switching event and the duration of the ringing on the sense resistor. For most low current drivers, a setting of 1 or 2 is good. For high current applications with large MOSFETs, a setting of 2 or 3 will be required. 0 (min setting) … (3) amx setting
fast_decay_time_settingFast decay time setting. Controls the portion of fast decay for each chopper cycle. 0: slow decay only, 1…15: duration of fast decay phase
sine_wave_offsetSine wave offset. Controls the sine wave offset. A positive offset corrects for zero crossing error. -3…-1: negative offset, 0: no offset,1…12: positive offset
use_curreent_comparatorSelects usage of the current comparator for termination of the fast decay cycle. If current comparator is enabled, it terminates the fast decay cycle in case the current reaches a higher negative value than the actual positive value. (0 disable, -1 enable).
+
+
+

The classic constant off time chopper uses a fixed portion of fast decay following each on phase. While the duration of the on time is determined by the chopper comparator, the fast decay time needs to be set by the user in a way, that the current decay is enough for the driver to be able to follow the falling slope of the sine wave, and on the other hand it should not be too long, in order to minimize motor current ripple and power dissipation. This best can be tuned using an oscilloscope or trying out motor smoothness at different velocities. A good starting value is a fast decay time setting similar to the slow decay time setting. After tuning of the fast decay time, the offset should be determined, in order to have a smooth zero transition. This is necessary, because the fast decay phase leads to the absolute value of the motor current being lower than the target current (see figure 17). If the zero offset is too low, the motor stands still for a short moment during current zero crossing, if it is set too high, it makes a larger microstep. Typically, a positive offset setting is required for optimum operation.

+
See also:
setSpreadCycleChoper() for other alternatives.
+
+setRandomOffTime() for spreading the noise over a wider spectrum
+ +

Definition at line 473 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TMC26XStepper::setCoolStepConfiguration (unsigned int lower_SG_threshold,
unsigned int SG_hysteresis,
unsigned char current_decrement_step_size,
unsigned char current_increment_step_size,
unsigned char lower_current_limit 
)
+
+
+ +

This method configures the CoolStep smart energy operation. You must have a proper StallGuard configuration for the motor situation (current, voltage, speed) in rder to use this feature.

+
Parameters:
+ + + + + + +
lower_SG_thresholdSets the lower threshold for stallGuard2TM reading. Below this value, the motor current becomes increased. Allowed values are 0...480
SG_hysteresisSets the distance between the lower and the upper threshold for stallGuard2TM reading. Above the upper threshold (which is lower_SG_threshold+SG_hysteresis+1) the motor current becomes decreased. Allowed values are 0...480
current_decrement_step_sizeSets the current decrement steps. If the StallGuard value is above the threshold the current gets decremented by this step size. 0...32
current_increment_step_sizeSets the current increment step. The current becomes incremented for each measured stallGuard2TM value below the lower threshold. 0...8
lower_current_limitSets the lower motor current limit for coolStepTM operation by scaling the CS value. Values can be COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT The CoolStep smart energy operation automatically adjust the current sent into the motor according to the current load, read out by the StallGuard in order to provide the optimum torque with the minimal current consumption. You configure the CoolStep current regulator by defining upper and lower bounds of StallGuard readouts. If the readout is above the limit the current gets increased, below the limit the current gets decreased. You can specify the upper an lower threshold of the StallGuard readout in order to adjust the current. You can also set the number of StallGuard readings neccessary above or below the limit to get a more stable current adjustement. The current adjustement itself is configured by the number of steps the current gests in- or decreased and the absolut minimum current (1/2 or 1/4th otf the configured current).
+
+
+
See also:
COOL_STEP_HALF_CS_LIMIT, COOL_STEP_QUARTER_CS_LIMIT
+ +

Definition at line 636 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setCoolStepEnabled (boolean enabled)
+
+
+ +

enables or disables the CoolStep smart energy operation feature. It must be configured before enabling it.

+
Parameters:
+ + +
enabledtrue if CoolStep should be enabled, false if not.
+
+
+
See also:
setCoolStepConfiguration()
+ +

Definition at line 676 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setCurrent (unsigned int current)
+
+
+ +

set the maximum motor current in mA (1000 is 1 Amp) Keep in mind this is the maximum peak Current. The RMS current will be 1/sqrt(2) smaller. The actual current can also be smaller by employing CoolStep.

+
Parameters:
+ + +
currentthe maximum motor current in mA
+
+
+
See also:
getCurrent(), getCurrentCurrent()
+ +

Definition at line 292 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setEnabled (boolean enabled)
+
+
+ +

enables or disables the motor driver bridges. If disabled the motor can run freely. If enabled not.

+
Parameters:
+ + +
enableda boolean value true if the motor should be enabled, false otherwise.
+
+
+ +

Definition at line 716 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setMicrosteps (int number_of_steps)
+
+
+ +

Set the number of microsteps in 2^i values (rounded) up to 256.

+

This method set's the number of microsteps per step in 2^i interval. This means you can select 1, 2, 4, 16, 32, 64, 128 or 256 as valid microsteps. If you give any other value it will be rounded to the next smaller number (3 would give a microstepping of 2). You can always check the current microstepping with getMicrosteps().

+ +

Definition at line 394 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setRandomOffTime (char value)
+
+
+ +

Use random off time for noise reduction (0 for off, -1 for on).

+
Parameters:
+ + +
value0 for off, -1 for on
+
+
+

In a constant off time chopper scheme both coil choppers run freely, i.e. are not synchronized. The frequency of each chopper mainly depends on the coil current and the position dependant motor coil inductivity, thus it depends on the microstep position. With some motors a slightly audible beat can occur between the chopper frequencies, especially when they are near to each other. This typically occurs at a few microstep positions within each quarter wave. This effect normally is not audible when compared to mechanical noise generated by ball bearings, etc. Further factors which can cause a similar effect are a poor layout of sense resistor GND connection. In order to minimize the effect of a beat between both chopper frequencies, an internal random generator is provided. It modulates the slow decay time setting when switched on. The random off time feature further spreads the chopper spectrum, reducing electromagnetic emission on single frequencies.

+ +

Definition at line 624 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void TMC26XStepper::setSpeed (unsigned int whatSpeed)
+
+
+ +

Sets the rotation speed in revolutions per minute.

+
Parameters:
+ + +
whatSpeedthe desired speed in rotations per minute.
+
+
+ +

Definition at line 208 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void TMC26XStepper::setSpreadCycleChopper (char constant_off_time,
char blank_time,
char hysteresis_start,
char hysteresis_end,
char hysteresis_decrement 
)
+
+
+ +

Sets and configures with spread cycle chopper.

+
Parameters:
+ + + + + + +
constant_off_timeThe off time setting controls the minimum chopper frequency. For most applications an off time within the range of 5μs to 20μs will fit. Setting this parameter to zero completely disables all driver transistors and the motor can free-wheel. 0: chopper off, 1:15: off time setting (1 will work with minimum blank time of 24 clocks)
blank_timeSelects the comparator blank time. This time needs to safely cover the switching event and the duration of the ringing on the sense resistor. For most low current drivers, a setting of 1 or 2 is good. For high current applications with large MOSFETs, a setting of 2 or 3 will be required. 0 (min setting) … (3) amx setting
hysteresis_startHysteresis start setting. Please remark, that this value is an offset to the hysteresis end value. 1 … 8
hysteresis_endHysteresis end setting. Sets the hysteresis end value after a number of decrements. Decrement interval time is controlled by hysteresis_decrement. The sum hysteresis_start + hysteresis_end must be <16. At a current setting CS of max. 30 (amplitude reduced to 240), the sum is not limited.
hysteresis_decrementHysteresis decrement setting. This setting determines the slope of the hysteresis during on time and during fast decay time. 0 (fast decrement) … 3 (slow decrement).
+
+
+

The spreadCycle chopper scheme (pat.fil.) is a precise and simple to use chopper principle, which automatically determines the optimum fast decay portion for the motor. Anyhow, a number of settings can be made in order to optimally fit the driver to the motor. Each chopper cycle is comprised of an on-phase, a slow decay phase, a fast decay phase and a second slow decay phase. The slow decay phases limit the maximum chopper frequency and are important for low motor and driver power dissipation. The hysteresis start setting limits the chopper frequency by forcing the driver to introduce a minimum amount of current ripple into the motor coils. The motor inductivity determines the ability to follow a changing motor current. The duration of the on- and fast decay phase needs to cover at least the blank time, because the current comparator is disabled during this time.

+
See also:
setRandomOffTime() for spreading the noise over a wider spectrum
+ +

Definition at line 552 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void TMC26XStepper::setStallGuardThreshold (char stall_guard_threshold,
char stall_guard_filter_enabled 
)
+
+
+ +

set the StallGuard threshold in order to get sensible StallGuard readings.

+
Parameters:
+ + + +
stall_guard_threshold-64 … 63 the StallGuard threshold
stall_guard_filter_enabled0 if the filter is disabled, -1 if it is enabled
+
+
+

The StallGuard threshold is used to optimize the StallGuard reading to sensible values. It should be at 0 at the maximum allowable load on the otor (but not before). = is a good starting point (and the default) If you get Stall Gaurd readings of 0 without any load or with too little laod increase the value. If you get readings of 1023 even with load decrease the setting.

+

If you switch on the filter the StallGuard reading is only updated each 4th full step to reduce the noise in the reading.

+
See also:
getCurrentStallGuardReading() to read out the current value.
+ +

Definition at line 346 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
void TMC26XStepper::start ()
+
+
+ +

configures and starts the TMC26X stepper driver. Before you called this function the stepper driver is in nonfunctional mode.

+

This routine configures the TMC26X stepper driver for the given values via SPI. Most member functions are non functional if the driver has not been started. Therefore it is best to call this in your Arduino setup() function.

+ +

Definition at line 157 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::step (int number_of_steps)
+
+
+ +

Initiate a movement for the given number of steps. Positive numbers move in one, negative numbers in the other direction.

+
Parameters:
+ + +
number_of_stepsThe number of steps to move the motor.
+
+
+
Returns:
0 if the motor was not moving and moves now. -1 if the motor is moving and the new steps could not be set.
+

If the previous movement is not finished yet the function will return -1 and not change the steps to move the motor. If the motor does not move it return 0

+

The direction of the movement is indicated by the sign of the steps parameter. It is not determinable if positive values are right or left This depends on the internal construction of the motor and how you connected it to the stepper driver.

+

You can always verify with isMoving() or even use stop() to stop the motor before giving it new step directions.

+
See also:
isMoving(), getStepsLeft(), stop()
+ +

Definition at line 229 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
char TMC26XStepper::stop (void )
+
+
+ +

Stops the motor regardless if it moves or not.

+
Returns:
-1 if the motor was moving and is really stoped or 0 if it was not moving at all.
+

This method directly and apruptely stops the motor and may be used as an emergency stop.

+ +

Definition at line 282 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + +
void TMC26XStepper::un_start ()
+
+
+ +

resets the stepper in unconfigured mode.

+

This routine enables you to call start again. It does not change anything in the internal stepper configuration or the desired configuration. It just marks the stepper as not yet startet. You do not have to reconfigure the stepper to start it again, but it is not reset to any factory settings this has to be configured back by yourself. (Hint: Normally you do not need this function)

+ +

Definition at line 199 of file TMC26XStepper.cpp.

+ +
+
+ +
+
+ + + + + + + + +
int TMC26XStepper::version (void )
+
+
+ +

library version

+
Returns:
the version number as int.
+ +

Definition at line 897 of file TMC26XStepper.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/classes.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/classes.html new file mode 100644 index 000000000..5b5e667a2 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/classes.html @@ -0,0 +1,78 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: Class Index + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
Class Index
+
+
+ + + + + + +
  T  
+
TMC26XStepper   
+ +
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/closed.png b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/closed.png new file mode 100644 index 000000000..b7d4bd9fe Binary files /dev/null and b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/closed.png differ diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.css b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.css new file mode 100644 index 000000000..cee0d06b5 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.css @@ -0,0 +1,949 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 13px; + line-height: 1.3; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, p.starttd { + margin-top: 2px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; +} + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 8px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 8px; + border-top-left-radius: 8px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* opera specific markup */ + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +.params, .retval, .exception, .tparams { + border-spacing: 6px 2px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + + + + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + margin-left: 5px; + font-size: 8pt; + padding-left: 5px; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 7px; +} + +dl +{ + padding: 0 0 0 10px; +} + +dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug +{ + border-left:4px solid; + padding: 0 0 0 6px; +} + +dl.note +{ + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + border-color: #00D000; +} + +dl.deprecated +{ + border-color: #505050; +} + +dl.todo +{ + border-color: #00C0E0; +} + +dl.test +{ + border-color: #3030E0; +} + +dl.bug +{ + border-color: #C08050; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } + pre.fragment + { + overflow: visible; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + } +} + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.png b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.png new file mode 100644 index 000000000..635ed52fc Binary files /dev/null and b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/doxygen.png differ diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/files.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/files.html new file mode 100644 index 000000000..3d40b8868 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/files.html @@ -0,0 +1,72 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: File List + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + +
+
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+ + +
TMC26XStepper.cpp [code]
TMC26XStepper.h [code]
+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions.html new file mode 100644 index 000000000..f53a7334a --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions.html @@ -0,0 +1,261 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: Class Members + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + + + +
+
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions_func.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions_func.html new file mode 100644 index 000000000..1730ddd31 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/functions_func.html @@ -0,0 +1,261 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: Class Members - Functions + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + + + +
+
+  + +

- d -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals.html new file mode 100644 index 000000000..438a5e856 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals.html @@ -0,0 +1,289 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: File Members + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + + + +
+
+
Here is a list of all file members with links to the files they belong to:
+ +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals_defs.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals_defs.html new file mode 100644 index 000000000..58a880e35 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/globals_defs.html @@ -0,0 +1,289 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: File Members + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + + + + +
+
+  + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- v -

+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/index.html b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/index.html new file mode 100644 index 000000000..35d5d3b86 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/index.html @@ -0,0 +1,72 @@ + + + + + +Trinamic TMC26X Stepper Driver for Arduino: TMC 260, 261, 262 Stepper Driver for Arduino + + + + + + + + +
+ + +
+ + + + + + + + + + + +
+
Trinamic TMC26X Stepper Driver for Arduino + +
+ +
+
+ + + +
+
+
+
TMC 260, 261, 262 Stepper Driver for Arduino
+
+
+
Author:
Interactive MAtter, MArcus Nowotny, marcus@interactive-matter.eu
+

+How to use the driver

+

Here we go with aminial how to description

+

+COPYRIGHT NOTIFICATION

+
(c) 2011 Interactive MAtter, Marcus Nowotny
+
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.

+
+ + + + + + diff --git a/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/jquery.js b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/jquery.js new file mode 100644 index 000000000..90b3a2bc3 --- /dev/null +++ b/ArduinoAddons/Arduino_1.6.x/libraries/TMC26XStepper/documentation/html/jquery.js @@ -0,0 +1,64 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0) +{I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function() +{G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); + +/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('