diff --git a/Asixtool/trunk/Kopie von Makefile b/Asixtool/Kopie von Makefile similarity index 100% rename from Asixtool/trunk/Kopie von Makefile rename to Asixtool/Kopie von Makefile diff --git a/Asixtool/trunk/LICENSE b/Asixtool/LICENSE similarity index 100% rename from Asixtool/trunk/LICENSE rename to Asixtool/LICENSE diff --git a/Asixtool/trunk/Makefile b/Asixtool/Makefile similarity index 100% rename from Asixtool/trunk/Makefile rename to Asixtool/Makefile diff --git a/Asixtool/trunk/asix_serial.c b/Asixtool/asix_serial.c similarity index 100% rename from Asixtool/trunk/asix_serial.c rename to Asixtool/asix_serial.c diff --git a/Asixtool/trunk/asix_serial.h b/Asixtool/asix_serial.h similarity index 100% rename from Asixtool/trunk/asix_serial.h rename to Asixtool/asix_serial.h diff --git a/Asixtool/trunk/bootcom.c b/Asixtool/bootcom.c similarity index 100% rename from Asixtool/trunk/bootcom.c rename to Asixtool/bootcom.c diff --git a/Asixtool/trunk/bootcom.h b/Asixtool/bootcom.h similarity index 100% rename from Asixtool/trunk/bootcom.h rename to Asixtool/bootcom.h diff --git a/Asixtool/trunk/infohelper.c b/Asixtool/infohelper.c similarity index 100% rename from Asixtool/trunk/infohelper.c rename to Asixtool/infohelper.c diff --git a/Asixtool/trunk/infohelper.h b/Asixtool/infohelper.h similarity index 100% rename from Asixtool/trunk/infohelper.h rename to Asixtool/infohelper.h diff --git a/Asixtool/trunk/main.c b/Asixtool/main.c similarity index 100% rename from Asixtool/trunk/main.c rename to Asixtool/main.c diff --git a/betty_TAE/MSP430/trunk/Makefile b/betty_TAE/MSP430/Makefile similarity index 100% rename from betty_TAE/MSP430/trunk/Makefile rename to betty_TAE/MSP430/Makefile diff --git a/betty_TAE/MSP430/trunk/cc1100.c b/betty_TAE/MSP430/cc1100.c similarity index 100% rename from betty_TAE/MSP430/trunk/cc1100.c rename to betty_TAE/MSP430/cc1100.c diff --git a/betty_TAE/MSP430/trunk/cc1100.h b/betty_TAE/MSP430/cc1100.h similarity index 100% rename from betty_TAE/MSP430/trunk/cc1100.h rename to betty_TAE/MSP430/cc1100.h diff --git a/betty_TAE/MSP430/trunk/hardware.c b/betty_TAE/MSP430/hardware.c similarity index 100% rename from betty_TAE/MSP430/trunk/hardware.c rename to betty_TAE/MSP430/hardware.c diff --git a/betty_TAE/MSP430/trunk/hardware.h b/betty_TAE/MSP430/hardware.h similarity index 100% rename from betty_TAE/MSP430/trunk/hardware.h rename to betty_TAE/MSP430/hardware.h diff --git a/betty_TAE/MSP430/trunk/main.c b/betty_TAE/MSP430/main.c similarity index 100% rename from betty_TAE/MSP430/trunk/main.c rename to betty_TAE/MSP430/main.c diff --git a/betty_TAE/MSP430/trunk/rf.c b/betty_TAE/MSP430/rf.c similarity index 100% rename from betty_TAE/MSP430/trunk/rf.c rename to betty_TAE/MSP430/rf.c diff --git a/betty_TAE/MSP430/trunk/rf.h b/betty_TAE/MSP430/rf.h similarity index 100% rename from betty_TAE/MSP430/trunk/rf.h rename to betty_TAE/MSP430/rf.h diff --git a/betty_scart/trunk/LICENSE b/betty_scart/LICENSE similarity index 100% rename from betty_scart/trunk/LICENSE rename to betty_scart/LICENSE diff --git a/betty_scart/trunk/Makefile b/betty_scart/Makefile similarity index 100% rename from betty_scart/trunk/Makefile rename to betty_scart/Makefile diff --git a/betty_scart/trunk/Makefile.local.WinSDCC b/betty_scart/Makefile.local.WinSDCC similarity index 100% rename from betty_scart/trunk/Makefile.local.WinSDCC rename to betty_scart/Makefile.local.WinSDCC diff --git a/betty_scart/trunk/Makefile.local.linuxSDCC b/betty_scart/Makefile.local.linuxSDCC similarity index 100% rename from betty_scart/trunk/Makefile.local.linuxSDCC rename to betty_scart/Makefile.local.linuxSDCC diff --git a/betty_scart/trunk/ScartProg.exe b/betty_scart/ScartProg.exe similarity index 100% rename from betty_scart/trunk/ScartProg.exe rename to betty_scart/ScartProg.exe diff --git a/betty_scart/trunk/betty_scart.bin b/betty_scart/betty_scart.bin similarity index 100% rename from betty_scart/trunk/betty_scart.bin rename to betty_scart/betty_scart.bin diff --git a/betty_scart/trunk/boop_icp.py b/betty_scart/boop_icp.py similarity index 100% rename from betty_scart/trunk/boop_icp.py rename to betty_scart/boop_icp.py diff --git a/betty_scart/trunk/cc1100.c b/betty_scart/cc1100.c similarity index 100% rename from betty_scart/trunk/cc1100.c rename to betty_scart/cc1100.c diff --git a/betty_scart/trunk/cc1100.h b/betty_scart/cc1100.h similarity index 100% rename from betty_scart/trunk/cc1100.h rename to betty_scart/cc1100.h diff --git a/betty_scart/trunk/cmd.c b/betty_scart/cmd.c similarity index 100% rename from betty_scart/trunk/cmd.c rename to betty_scart/cmd.c diff --git a/betty_scart/trunk/cmd.h b/betty_scart/cmd.h similarity index 100% rename from betty_scart/trunk/cmd.h rename to betty_scart/cmd.h diff --git a/betty_scart/trunk/main.c b/betty_scart/main.c similarity index 100% rename from betty_scart/trunk/main.c rename to betty_scart/main.c diff --git a/betty_scart/trunk/readme.txt b/betty_scart/readme.txt similarity index 100% rename from betty_scart/trunk/readme.txt rename to betty_scart/readme.txt diff --git a/betty_scart/trunk/rf.c b/betty_scart/rf.c similarity index 100% rename from betty_scart/trunk/rf.c rename to betty_scart/rf.c diff --git a/betty_scart/trunk/rf.h b/betty_scart/rf.h similarity index 100% rename from betty_scart/trunk/rf.h rename to betty_scart/rf.h diff --git a/betty_scart/trunk/serial.c b/betty_scart/serial.c similarity index 100% rename from betty_scart/trunk/serial.c rename to betty_scart/serial.c diff --git a/betty_scart/trunk/serial.h b/betty_scart/serial.h similarity index 100% rename from betty_scart/trunk/serial.h rename to betty_scart/serial.h diff --git a/betty_scart/trunk/timer.c b/betty_scart/timer.c similarity index 100% rename from betty_scart/trunk/timer.c rename to betty_scart/timer.c diff --git a/betty_scart/trunk/timer.h b/betty_scart/timer.h similarity index 100% rename from betty_scart/trunk/timer.h rename to betty_scart/timer.h diff --git a/bmp2b/trunk/Makefile b/bmp2b/Makefile similarity index 100% rename from bmp2b/trunk/Makefile rename to bmp2b/Makefile diff --git a/bmp2b/trunk/README1ST b/bmp2b/README1ST similarity index 100% rename from bmp2b/trunk/README1ST rename to bmp2b/README1ST diff --git a/bmp2b/trunk/betty.bmp b/bmp2b/betty.bmp similarity index 100% rename from bmp2b/trunk/betty.bmp rename to bmp2b/betty.bmp diff --git a/bmp2b/trunk/betty2.bmp b/bmp2b/betty2.bmp similarity index 100% rename from bmp2b/trunk/betty2.bmp rename to bmp2b/betty2.bmp diff --git a/bmp2b/trunk/bmp.c b/bmp2b/bmp.c similarity index 100% rename from bmp2b/trunk/bmp.c rename to bmp2b/bmp.c diff --git a/bmp2b/trunk/bmp.h b/bmp2b/bmp.h similarity index 100% rename from bmp2b/trunk/bmp.h rename to bmp2b/bmp.h diff --git a/bmp2b/trunk/bmp2b.c b/bmp2b/bmp2b.c similarity index 100% rename from bmp2b/trunk/bmp2b.c rename to bmp2b/bmp2b.c diff --git a/bmp2b/trunk/bmp2b.tar.bz2 b/bmp2b/bmp2b.tar.bz2 similarity index 100% rename from bmp2b/trunk/bmp2b.tar.bz2 rename to bmp2b/bmp2b.tar.bz2 diff --git a/boop/branches/ram_version/telekatz_soundtest/Boop.pnproj b/boop/Boop.pnproj similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Boop.pnproj rename to boop/Boop.pnproj diff --git a/boop/branches/ram_version/telekatz_soundtest/CHANGELOG b/boop/CHANGELOG similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/CHANGELOG rename to boop/CHANGELOG diff --git a/boop/branches/ram_version/telekatz_soundtest/LICENSE b/boop/LICENSE similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/LICENSE rename to boop/LICENSE diff --git a/boop/branches/ram_version/telekatz_soundtest/Make.conf b/boop/Make.conf similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Make.conf rename to boop/Make.conf diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile b/boop/Makefile similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile rename to boop/Makefile diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local b/boop/Makefile.local similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local rename to boop/Makefile.local diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.Telekatz b/boop/Makefile.local.Telekatz similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.Telekatz rename to boop/Makefile.local.Telekatz diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.WinARM b/boop/Makefile.local.WinARM similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.WinARM rename to boop/Makefile.local.WinARM diff --git a/boop/branches/ram_version/telekatz_soundtest/Makefile.local.linuxARM b/boop/Makefile.local.linuxARM similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/Makefile.local.linuxARM rename to boop/Makefile.local.linuxARM diff --git a/boop/branches/ram_version/telekatz_soundtest/README b/boop/README similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/README rename to boop/README diff --git a/boop/branches/ram_version/telekatz_soundtest/b.h b/boop/b.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/b.h rename to boop/b.h diff --git a/boop/branches/ram_version/telekatz_soundtest/batt.c b/boop/batt.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/batt.c rename to boop/batt.c diff --git a/boop/branches/ram_version/telekatz_soundtest/batt.h b/boop/batt.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/batt.h rename to boop/batt.h diff --git a/boop/branches/ram_version/telekatz_soundtest/boop.pnps b/boop/boop.pnps similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/boop.pnps rename to boop/boop.pnps diff --git a/boop/branches/ram_version/telekatz_soundtest/boop_flash.ppg b/boop/boop_flash.ppg similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/boop_flash.ppg rename to boop/boop_flash.ppg diff --git a/boop/branches/ram_version/readme.txt b/boop/branches/ram_version/readme.txt deleted file mode 100644 index b2d7001..0000000 --- a/boop/branches/ram_version/readme.txt +++ /dev/null @@ -1 +0,0 @@ -In this directory you find mini boop versions running from RAM. See README in each directory. \ No newline at end of file diff --git a/boop/branches/ram_version/telekatz_soundtest/cc1100.c b/boop/cc1100.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/cc1100.c rename to boop/cc1100.c diff --git a/boop/branches/ram_version/telekatz_soundtest/cc1100.h b/boop/cc1100.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/cc1100.h rename to boop/cc1100.h diff --git a/boop/branches/ram_version/telekatz_soundtest/crt.s b/boop/crt.s similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/crt.s rename to boop/crt.s diff --git a/boop/branches/ram_version/telekatz_soundtest/externs.h b/boop/externs.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/externs.h rename to boop/externs.h diff --git a/boop/branches/ram_version/telekatz_soundtest/flash.c b/boop/flash.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/flash.c rename to boop/flash.c diff --git a/boop/branches/ram_version/telekatz_soundtest/flash.h b/boop/flash.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/flash.h rename to boop/flash.h diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/charset.bits b/boop/fonts/charset.bits similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/charset.bits rename to boop/fonts/charset.bits diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/charset.info b/boop/fonts/charset.info similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/charset.info rename to boop/fonts/charset.info diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/smooth.bits b/boop/fonts/smooth.bits similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/smooth.bits rename to boop/fonts/smooth.bits diff --git a/boop/branches/ram_version/telekatz_soundtest/fonts/smooth.info b/boop/fonts/smooth.info similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonts/smooth.info rename to boop/fonts/smooth.info diff --git a/boop/branches/ram_version/telekatz_soundtest/fonty.c b/boop/fonty.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonty.c rename to boop/fonty.c diff --git a/boop/branches/ram_version/telekatz_soundtest/fonty.h b/boop/fonty.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/fonty.h rename to boop/fonty.h diff --git a/boop/branches/ram_version/telekatz_soundtest/global.c b/boop/global.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/global.c rename to boop/global.c diff --git a/boop/branches/ram_version/telekatz_soundtest/global.h b/boop/global.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/global.h rename to boop/global.h diff --git a/boop/branches/ram_version/telekatz_soundtest/infrared.c b/boop/infrared.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/infrared.c rename to boop/infrared.c diff --git a/boop/branches/ram_version/telekatz_soundtest/infrared.h b/boop/infrared.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/infrared.h rename to boop/infrared.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_itt.c b/boop/ir_itt.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_itt.c rename to boop/ir_itt.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_itt.h b/boop/ir_itt.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_itt.h rename to boop/ir_itt.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_nrc17.c b/boop/ir_nrc17.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_nrc17.c rename to boop/ir_nrc17.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_nrc17.h b/boop/ir_nrc17.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_nrc17.h rename to boop/ir_nrc17.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rc5.c b/boop/ir_rc5.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rc5.c rename to boop/ir_rc5.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rc5.h b/boop/ir_rc5.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rc5.h rename to boop/ir_rc5.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rca.c b/boop/ir_rca.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rca.c rename to boop/ir_rca.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rca.h b/boop/ir_rca.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rca.h rename to boop/ir_rca.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rcmm.c b/boop/ir_rcmm.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rcmm.c rename to boop/ir_rcmm.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rcmm.h b/boop/ir_rcmm.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rcmm.h rename to boop/ir_rcmm.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rec80.c b/boop/ir_rec80.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rec80.c rename to boop/ir_rec80.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_rec80.h b/boop/ir_rec80.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_rec80.h rename to boop/ir_rec80.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_recs80.c b/boop/ir_recs80.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_recs80.c rename to boop/ir_recs80.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_recs80.h b/boop/ir_recs80.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_recs80.h rename to boop/ir_recs80.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_sirc.c b/boop/ir_sirc.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_sirc.c rename to boop/ir_sirc.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_sirc.h b/boop/ir_sirc.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_sirc.h rename to boop/ir_sirc.h diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.c b/boop/ir_spaceenc.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.c rename to boop/ir_spaceenc.c diff --git a/boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.h b/boop/ir_spaceenc.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/ir_spaceenc.h rename to boop/ir_spaceenc.h diff --git a/boop/branches/ram_version/telekatz_soundtest/irq.c b/boop/irq.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/irq.c rename to boop/irq.c diff --git a/boop/branches/ram_version/telekatz_soundtest/irq.h b/boop/irq.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/irq.h rename to boop/irq.h diff --git a/boop/branches/ram_version/telekatz_soundtest/itt_codes.h b/boop/itt_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/itt_codes.h rename to boop/itt_codes.h diff --git a/boop/branches/ram_version/telekatz_soundtest/keyboard.c b/boop/keyboard.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/keyboard.c rename to boop/keyboard.c diff --git a/boop/branches/ram_version/telekatz_soundtest/keyboard.h b/boop/keyboard.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/keyboard.h rename to boop/keyboard.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lcd.c b/boop/lcd.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lcd.c rename to boop/lcd.c diff --git a/boop/branches/ram_version/telekatz_soundtest/lcd.h b/boop/lcd.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lcd.h rename to boop/lcd.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220.h b/boop/lpc2220.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220.h rename to boop/lpc2220.h diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220.ld b/boop/lpc2220.ld similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220.ld rename to boop/lpc2220.ld diff --git a/boop/branches/ram_version/telekatz_soundtest/lpc2220_rom.ld b/boop/lpc2220_rom.ld similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/lpc2220_rom.ld rename to boop/lpc2220_rom.ld diff --git a/boop/branches/ram_version/telekatz_soundtest/main.c b/boop/main.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/main.c rename to boop/main.c diff --git a/boop/branches/ram_version/telekatz_soundtest/serial.c b/boop/serial.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/serial.c rename to boop/serial.c diff --git a/boop/branches/ram_version/telekatz_soundtest/serial.h b/boop/serial.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/serial.h rename to boop/serial.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sirc_codes.h b/boop/sirc_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sirc_codes.h rename to boop/sirc_codes.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sound3.h b/boop/sound3.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sound3.h rename to boop/sound3.h diff --git a/boop/branches/ram_version/telekatz_soundtest/soundcore.c b/boop/soundcore.c similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/soundcore.c rename to boop/soundcore.c diff --git a/boop/branches/ram_version/telekatz_soundtest/soundcore.h b/boop/soundcore.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/soundcore.h rename to boop/soundcore.h diff --git a/boop/branches/ram_version/telekatz_soundtest/sounds.h b/boop/sounds.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/sounds.h rename to boop/sounds.h diff --git a/boop/branches/ram_version/telekatz_soundtest/spaceenc_codes.h b/boop/spaceenc_codes.h similarity index 100% rename from boop/branches/ram_version/telekatz_soundtest/spaceenc_codes.h rename to boop/spaceenc_codes.h diff --git a/boop/trunk/CHANGELOG b/boop/trunk/CHANGELOG deleted file mode 100644 index d267b83..0000000 --- a/boop/trunk/CHANGELOG +++ /dev/null @@ -1,2 +0,0 @@ -06.12.2007 : -- starting complete code rework diff --git a/boop/trunk/LICENSE b/boop/trunk/LICENSE deleted file mode 100644 index 94a9ed0..0000000 --- a/boop/trunk/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/boop/trunk/Make.conf b/boop/trunk/Make.conf deleted file mode 100644 index c8d471a..0000000 --- a/boop/trunk/Make.conf +++ /dev/null @@ -1,5 +0,0 @@ -SUBDIRS := adc audio cc1100 display flash games gui infrared interrupt \ - keyboard rtc serial timer tools - -SRCS := crt.s main.c global.c buffer.c syscalls.c - diff --git a/boop/trunk/Makefile b/boop/trunk/Makefile deleted file mode 100644 index 39e0f13..0000000 --- a/boop/trunk/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -############################################################### -##### -##### Makefile for boop - OpenSource firmware for Betty -##### Created at 30.8.2007 02:26 am -##### -##### boop V0.1 by netguy - ck@mamalala.net -##### Makefile V0.1 by alterego - alteregon@gmx.net -##### Makefile v0.2 by Tobias - tobias-betty@23.gs -##### -############################################################### - -############################################################### -##### -##### PATHS (default installation) -##### -##### You can put your path-config into Makefile.local -##### to override these defaults -##### -############################################################### - -ARMBASE = /opt/toolchains/gcc-arm-none-eabi-4_9-2014q4 -INCLUDEPATH = $(ARMBASE)/include -#LIBGCCPATH = $(ARMBASE)/lib/gcc/arm-none-eabi/4.7.3/thumb/arm7tdmi-s -#LIBCPATH = $(ARMBASE)/arm-none-eabi/lib/thumb/arm7tdmi-s -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-none-eabi- -LPCTOOL = lpctool -OPENOCD = openocd -f betty.cfg -f interface/parport.cfg - -############################################################### -##### -##### Compiler, Linker and Tools -##### -############################################################### - -CC = $(ARMPATH)/$(TOOLPREFIX)gcc -AS = $(ARMPATH)/$(TOOLPREFIX)as -#LD = $(ARMPATH)/$(TOOLPREFIX)ld -LD = $(ARMPATH)/$(TOOLPREFIX)gcc -OC = $(ARMPATH)/$(TOOLPREFIX)objcopy -OD = $(ARMPATH)/$(TOOLPREFIX)objdump - -CPUFLAGS = -mcpu=arm7tdmi-s -OPTFLAGS = -Os -CFLAGS = -Wall -mthumb-interwork -msoft-float -INC = -I$(INCLUDEPATH) -I. -Iinterrupt -Idisplay -Ikeyboard -Iaudio -Iinfrared -Iserial -Iflash -Icc1100 -Igui -Itimer -Igames -Iadc -Irtc -Itools -ASFLAGS = -D --gstabs -mthumb-interwork -mfpu=softfpa -#LDFLAGS = -Tlpc2220_rom.ld -Map boop.map -#LIBS = -lc -lgcc -LDFLAGS = -mthumb-interwork -nostartfiles -Xlinker -Map -Xlinker boop.map -Tlpc2220_rom.ld -THUMBFLAGS = -mthumb - -COMPILE = $(CC) $(CPUFLAGS) $(CFLAGS) $(INC) - -ifeq ($(MAKECMDGOALS),debug) - COMPILE += -D DEBUGMODE -endif - -ifeq ($(MAKECMDGOALS),release) - COMPILE += -D RELEASE -endif - --include Makefile.local - -############################################################### -##### -##### Do the boop -##### -############################################################### - -# Recursive expansion of Makefile rules. -define expand_dir - # Reset vars for subdir for the case that Make.conf does not exist - SUBDIRS := - SRCS := - THUMBSRCS := - THUMBSRCSUNOPT := - -include $(1)Make.conf - ALLSRCS += $$(SRCS:%=$(1)%) - ALLTHUMBSRCS += $$(THUMBSRCS:%=$(1)%) - ALLTHUMBSRCSUNOPT += $$(THUMBSRCSUNOPT:%=$(1)%) - DEPS += $(1).deps - $$(foreach adir,$$(SUBDIRS),$$(eval $$(call expand_dir,$(1)$$(adir)/))) -endef - -ALLSRCS := -ALLTHUMBSRCS := -ALLTHUMBSRCSUNOPT := - -$(eval $(call expand_dir,)) - -OBJS := $(patsubst %.s,%.o,$(ALLSRCS:.c=.o)) $(ALLTHUMBSRCS:.c=.thumb.o) $(ALLTHUMBSRCSUNOPT:.c=.thumbunopt.o) - -all: version $(DEPS) boop_rom.bin boop_rom.hex - -debug: version.h $(DEPS) boop_rom.bin boop_rom.hex - -release: clean version $(DEPS) boop_rom.bin boop_rom.hex - @echo -n '\n\nRelease erstellt SVN Version ++' - @cat .svn/entries | sed -n '4p' - -version: - echo -n '#define SVNVERSION ' > version.h - svnversion -n |cut -f1 -d M -n >> version.h - echo >> version.h - -version.h: - echo -n '#define SVNVERSION ' > version.h - svnversion -n|cut -f1 -d M >> version.h - echo >> version.h - -test: boop_rom.elf - $(OD) -h $< - -%.bin: %.elf - $(OC) -O binary $< $@ - -%.hex: %.elf - $(OC) -O ihex $< $@ - -boop_rom.elf: $(OBJS) - $(LD) $(LDFLAGS) -L$(LIBGCCPATH) -L$(LIBCPATH) -o $@ $^ $(LIBS) - -%.o: %.s - $(AS) $(CPUFLAGS) $(ASFLAGS) -o $@ $< - -%.o: %.c - $(COMPILE) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -%.thumb.o: %.c - $(COMPILE) $(THUMBFLAGS) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -%.thumbunopt.o: %.c - $(COMPILE) $(THUMBFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $< - -$(DEPS): - mkdir -p $@ - -uresident: resident -resident: boop_rom.bin - $(LPCTOOL) -i -v -e -a $< - -program: boop_rom.bin - $(OPENOCD) -c init -c 'flash_boop $<' -c shutdown - -clean: - -rm -Rf $(DEPS) - -rm -f $(OBJS) *.elf *.bin *.hex *~ - --include $(DEPS:=/*) diff --git a/boop/trunk/Makefile.local.Telekatz b/boop/trunk/Makefile.local.Telekatz deleted file mode 100644 index 2a8c536..0000000 --- a/boop/trunk/Makefile.local.Telekatz +++ /dev/null @@ -1,23 +0,0 @@ -############################################################### -##### -##### Makefile.local.WinARM for boop -##### Created in the early morninghours -##### -##### Makefile.local.WinARM V1.0 by alterego - alteregon@gmx.net -##### -##### Copy this file to Makefile.local for your Windows -##### installation -##### -############################################################### - -ARMBASE = F:/Tools/WinARM -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/arm-elf/lib/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool.exe - -CFLAGS = -Wall -mthumb-interwork -msoft-float -ggdb - -######################## EOF ################################## - diff --git a/boop/trunk/Makefile.local.WinARM b/boop/trunk/Makefile.local.WinARM deleted file mode 100644 index efcfb9d..0000000 --- a/boop/trunk/Makefile.local.WinARM +++ /dev/null @@ -1,21 +0,0 @@ -############################################################### -##### -##### Makefile.local.WinARM for boop -##### Created in the early morninghours -##### -##### Makefile.local.WinARM V1.0 by alterego - alteregon@gmx.net -##### -##### Copy this file to Makefile.local for your Windows -##### installation -##### -############################################################### - -ARMBASE = c:/WinARM/ -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/arm-elf/lib/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool.exe -OPENOCD = C:\OpenOCD\openocd.exe -f betty.cfg -f C:\OpenOCD\OpenOCD\interface\parport.cfg - -######################## EOF ################################## diff --git a/boop/trunk/Makefile.local.linuxARM b/boop/trunk/Makefile.local.linuxARM deleted file mode 100644 index e87b3b7..0000000 --- a/boop/trunk/Makefile.local.linuxARM +++ /dev/null @@ -1,19 +0,0 @@ -############################################################### -##### -##### Makefile.local.linuxARM for boop -##### Created in the early morninghours -##### -##### Copy this to Makefile.local and modify for your Linux -##### installation -##### -############################################################### - -ARMBASE = /opt/arm-elf -INCLUDEPATH = $(ARMBASE)/include -LIBPATH = $(ARMBASE)/lib/gcc/arm-elf/4.1.1/interwork -ARMPATH = $(ARMBASE)/bin -TOOLPREFIX = arm-elf- -LPCTOOL = lpctool -d /dev/ttyUSB0 -OPENOCD = openocd -f betty.cfg -f interface/parport.cfg - -######################## EOF ################################## diff --git a/boop/trunk/README b/boop/trunk/README deleted file mode 100644 index 109a0c2..0000000 --- a/boop/trunk/README +++ /dev/null @@ -1,17 +0,0 @@ -9.11.2007: - -- serial console: - 115200 baud, 8N1, no handshake - -- serial commands: - 0 - backlight off - 1 - dimmed backlight - 2 - full backlight - . - prints "HELO" - S - prints RCA_Encode status (hex value) - I - prints irIRQ status (hex value) - K - prints keyIRQ status (hex value) - all other inputs are echoed - -- flash boop_rom.bin: - lpctool -i -e -a ./boop_rom.bin -d /dev/ diff --git a/boop/trunk/adc/Make.conf b/boop/trunk/adc/Make.conf deleted file mode 100644 index 26f9a6d..0000000 --- a/boop/trunk/adc/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := adc.c adcirq.c diff --git a/boop/trunk/adc/adc.c b/boop/trunk/adc/adc.c deleted file mode 100644 index 1b1a838..0000000 --- a/boop/trunk/adc/adc.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - adc.c - adc readout for battery status - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "irq.h" -#include "timerfuncs.h" -#include "adc.h" -#include "adcirq.h" -#include "lcd.h" -#include "fonty.h" -#include "lpc2220.h" - -extern volatile unsigned int bat_adc; -extern volatile unsigned int bmax, bmin; -extern unsigned int is_drawing; - -static unsigned short bat_max, bat_min; -static unsigned short diffs[4]; -static unsigned short diff; -volatile unsigned char bat_state; - - - -void draw_b(unsigned char x, unsigned char y) -{ - unsigned char w; - - if(!(is_drawing)) - { - if(bat_state & BAT_DEBUG) - { - draw_block(4,0,108,24,3,DRAW_ERASE); - draw_numU(4,0,bat_min>>2,0,3,DRAW_PUT); - draw_numU(32,0,bat_max>>2,0,3,DRAW_PUT); - draw_numU(4,8,(bat_max>>2)-(bat_min>>2),0,3,DRAW_PUT); - - draw_numU(60,0,bat_min,0,3,DRAW_PUT); - draw_numU(88,0,bat_max,0,3,DRAW_PUT); - draw_numU(60,8,bat_max-bat_min,0,3,DRAW_PUT); - if((bat_state & BAT_NORMAL)) - draw_string(4,16,"Bat.Operation",3,DRAW_PUT); - if((bat_state & BAT_CHARGE)) - draw_string(4,16,"Charging",3,DRAW_PUT); - if((bat_state & BAT_CHARGE_DONE)) - draw_string(4,16,"Done Charging",3,DRAW_PUT); - } - - if (bat_min<0x320) - w = 0; - else if (bat_min>0x380) - w = 12; - else - w = (bat_min-0x320)/8; - - draw_block(x+1,y+1,12,5,3,DRAW_ERASE); - draw_rect(x,y,14,7,1,3,DRAW_PUT); - draw_vline(x+14,y+2,3,3,DRAW_PUT); - - if(w>0) - draw_block(x+1,y+1,w,5,2,DRAW_PUT); - - if(w<12) - draw_block(x+1+w,y+1,12-w,5,0,DRAW_PUT); - } -} - -void calcBat(unsigned int cb) -{ - ADCR |= ((1<<21) | (1<<24)); -// ADCR |= (1<<24); /* Start A/D Conversion (START:0=1) */ - ADINTEN = 1<<5; -} - -void showBat(unsigned int cb) -{ - static int cnt; - unsigned char x; - - bat_max = bmax; - bat_min = bmin; - - cnt &= 0x03; - diffs[cnt++] = bat_max - bat_min; - - diff = 0; - for(x=0;x<4;x++) - diff += diffs[x]; - diff >>= 2; - - if(bat_state & BAT_NORMAL) - { - if(diff > 15) - { - bat_state |= BAT_CHARGE; - bat_state &= ~BAT_NORMAL; - } - } - else if(bat_state & BAT_CHARGE) - { - if(bat_max >= 1020) - { - bat_state |= BAT_CHARGE_DONE; - bat_state &= ~BAT_CHARGE; - } - } - else if(bat_state & BAT_CHARGE_DONE) - { - if(bat_max < 1000) - { - bat_state |= BAT_CHARGE; - bat_state &= ~BAT_CHARGE_DONE; - } - } - - if((diff < 7) && (bat_min < 1000)) - { - bat_state |= BAT_NORMAL; - bat_state &= ~BAT_CHARGE; - bat_state &= ~BAT_CHARGE_DONE; - } - - draw_b(113,0); - bmin = bat_max; - bmax = bat_min; -} - -void startADC(void) -{ - ADCR = ( 1<<5 | ((15-1)<<8) /*| (1UL<<16)*/ | (1UL<<21) ); - ADCR |= (1UL<<24); /* Start A/D Conversion (START:0=1) */ - while ((ADDR & (1UL<<31)) == 0); /* Wait for the conversion to complete (DONE=1)*/ - bmin = ((ADDR >> 6) & 0x03FF); /* Extract the A/D result */ - ADCR &=~(1UL<<21); - bmax = bmin; - bat_max = bmin; - bat_min = bmin; - bat_state = BAT_NORMAL; - - diffs[0] = 0; - diffs[0] = 1; - diffs[0] = 2; - diffs[0] = 3; - - VICVectAddr14 = (unsigned long)&(adcIRQ); - VICVectCntl14 = VIC_SLOT_EN | INT_SRC_ADC; - VICIntEnable = INT_ADC; - - startCB(addTimerCB(calcBat, 6)); - startCB(addTimerCB(showBat, 220)); -} diff --git a/boop/trunk/adc/adc.h b/boop/trunk/adc/adc.h deleted file mode 100644 index 1f3fe81..0000000 --- a/boop/trunk/adc/adc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - adc.h - adc readout for battery status - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef ADC_H -#define ADC_H - -#define BAT_NORMAL 0x01 -#define BAT_CHARGE 0x02 -#define BAT_CHARGE_DONE 0x04 -#define BAT_DEBUG 0x80 - - -void startADC(void); -void calcBat(unsigned int cb); -void showBat(unsigned int cb); - -#endif diff --git a/boop/trunk/adc/adcirq.c b/boop/trunk/adc/adcirq.c deleted file mode 100644 index 099b461..0000000 --- a/boop/trunk/adc/adcirq.c +++ /dev/null @@ -1,38 +0,0 @@ -/* - adcirq.c - adc iinterrupt handler - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "irq.h" -#include "adcirq.h" -#include "adc.h" -#include "lpc2220.h" - -volatile unsigned int bat_adc; -volatile unsigned int bmax, bmin; - -void __attribute__ ((section(".text.fastcode"))) adcIRQ (void) -{ - ADINTEN = 0; - bat_adc = ADDR; - bat_adc >>= 6; - bat_adc &= 0x03FF; - if(bmax < bat_adc) - bmax = bat_adc; - if(bmin > bat_adc) - bmin = bat_adc; - ADCR &=~(1UL<<21); -} diff --git a/boop/trunk/adc/adcirq.h b/boop/trunk/adc/adcirq.h deleted file mode 100644 index c2e1027..0000000 --- a/boop/trunk/adc/adcirq.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - adcirq.c - adc iinterrupt handler - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef ADCIRQ_H -#define ADCIRQ_H - -void __attribute__ ((section(".text.fastcode"))) adcIRQ (void); - -#endif diff --git a/boop/trunk/audio/Make.conf b/boop/trunk/audio/Make.conf deleted file mode 100644 index ca8a4d0..0000000 --- a/boop/trunk/audio/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := sound.c sid.c -SRCS := soundirq.c diff --git a/boop/trunk/audio/sid.c b/boop/trunk/audio/sid.c deleted file mode 100644 index 0128d39..0000000 --- a/boop/trunk/audio/sid.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - sid.c - tone encoder routines - Copyright (C) 2008 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "irq.h" -#include "sid.h" -#include "sound.h" -#include "soundirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" - -unsigned int playtone_cb; -unsigned char *playtone[3]; -unsigned char playstate; -unsigned char tonelen[3]; -unsigned short playcounter; -unsigned short playcountermax; - -const unsigned short AttackRate[16] = {19531,9766,2441,1628,1028,673,574,488,391,156,78,49,39,13,8,5}; -const unsigned short DecayReleaseRate[16] = {6510,1628,814,543,343,233,191,163,130,52,16,13,4,3,2}; - -const unsigned char song2[] = { note_d,2, note_e,2, note_f,2, note_e,2, note_d,2, note_g,2, note_f,2, note_e,2, - note_d,2, note_e,2, note_f,2, note_g,2, note_a,2, note_g,2, note_f,2, note_e,2, - note_d,2, note_e,2, note_f,2, note_e,2, note_d,2, note_g,2, note_f,2, note_e,2, - note_cis,2, note_d,2, note_e,2, note_f,2, note_g,2, note_a,2, note_f,2, note_e,2,0}; - -const unsigned char song3[] = { note_0,1, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, - note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,2, note_c,1,0}; - -const unsigned short notes[] = {0,4455,4720,5001,5298,5613,5947,6301,6676,7072,7493,7939,8411,0}; - - -void SIDsetfrq(unsigned char voice, unsigned short frq) { - - if (voice < voices) { - SID.reg[(voice * 7) + REG_FREQhi] = frq>>8; - SID.reg[(voice * 7) + REG_FREQlo] = frq & 0xFF; - } -} - -void SIDsetadsr(unsigned char voice,unsigned char attack, unsigned char decay, unsigned char sustain, unsigned char release) { - - if (voice < voices) { - SID.reg[(voice * 7) + REG_AttackDecay] = (attack<<4) + (decay&0x0f); - SID.reg[(voice * 7) + REG_SustainRelease] = (sustain<<4) + (release&0x0f); - } -} - -void SIDsetwave(unsigned char voice,unsigned char wave) { - - if (voice < voices) { - SID.reg[(voice * 7)+REG_Control] &= 0x0f; - SID.reg[(voice * 7)+REG_Control] |= wave; - } -} - -void SIDplaytone(unsigned int cb) { - unsigned char tone; - unsigned char x; - - switch (playstate) { - case 0x01: - playstate++; - setCBIntervall(playtone_cb,48); - for (x=0; x<3; x++) { - if (playtone[x]) { - if (!tonelen[x]) { - tone = *playtone[x]; - if (tone) { - playtone[x]++; - tonelen[x] = *playtone[x]; - playtone[x]++; - SIDsetfrq(x,notes[tone]); - SID.reg[(x*7)+REG_Control] |= GATE; - } - else { - playstate = 0x00; - playtone[0] = 0; - playtone[1] = 0; - playtone[2] = 0; - removeTimerCB(playtone_cb); - } - } - } - } - break; - case 0x02: - playstate = 0x01; - for (x=0; x<3; x++) { - if (playtone[x]) { - tonelen[x]--; - if (!tonelen[x]) - SID.reg[(x*7)+REG_Control] &= ~GATE; - } - } - setCBIntervall(playtone_cb,2); - break; - default: - playstate = 0x00; - removeTimerCB(playtone_cb); - } -} - -void SIDplaydump(unsigned int cb) { - unsigned char x; - - if (playcounter++ < playcountermax) { - for (x=0;x<14;x++) { - SID.reg[x] = *playtone[0]; - playtone[0]++; - } - } - else { - SID.reg[REG_Control] &= ~GATE; - SID.reg[7+REG_Control] &= ~GATE; - SID.reg[14+REG_Control] &= ~GATE; - playstate = 0x00; - playtone[0] =0; - removeTimerCB(playtone_cb); - } -} - -void beepEnd(unsigned int cb) { - SID.reg[REG_Control] &= ~GATE; - SID.flags |= SID_AUTO_OFF; - removeTimerCB(cb); -} - -void beep(unsigned char n) { - - - switch(n) { - case 1: - SIDsetwave(0,TRIANGLE); - SIDsetadsr(0,0,10,0,10); - SIDsetfrq(0,8411); - break; - default: - SIDsetwave(0,SAWTOOTH); - SIDsetadsr(0,1,5,10,5); - SIDsetfrq(0,5001); - break; - } - PWMPR = 0; - switchSound(SOUND_ON); - SID.flags |= SIDenable; - SID.reg[REG_Control] |= GATE; - startCB(addTimerCB(beepEnd, 20)); -} diff --git a/boop/trunk/audio/sid.h b/boop/trunk/audio/sid.h deleted file mode 100644 index e67980f..0000000 --- a/boop/trunk/audio/sid.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - sid.h - tone encoder routines - Copyright (C) 2008 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SID_H -#define SID_H - -// SID voice controll register bits -#define GATE (1<<0) -#define SYNC (1<<1) -#define RINGMOD (1<<2) -#define TEST (1<<3) -#define TRIANGLE (1<<4) -#define SAWTOOTH (1<<5) -#define RECTANGLE (1<<6) -#define NOISE (1<<7) - -// SID RES/FILT ( reg.23 ) -#define FILT1 (1<<0) -#define FILT2 (1<<1) -#define FILT3 (1<<2) -// SID MODE/VOL ( reg.24 ) -#define VOICE3OFF (1<<7) - -// SID registers -#define REG_FREQlo 00 -#define REG_FREQhi 01 -#define REG_PWlo 02 -#define REG_PWhi 03 -#define REG_Control 04 -#define REG_AttackDecay 05 -#define REG_SustainRelease 06 - -#define REG_FClo 21 -#define REG_FChi 22 -#define REG_ResFilt 23 -#define REG_ModeVol 24 - -#define max_sid_registers 25 -#define max_level 40000 -#define voices 3 -#define sustainstep 2666 - -//SID.flags -#define ATTACK 1 -#define SIDenable (1<<3) -#define phaseoverflow (1<<4) -#define SID_AUTO_OFF (1<<5) - - -#define note_c 1 -#define note_cis 2 -#define note_d 3 -#define note_dis 4 -#define note_e 5 -#define note_f 6 -#define note_fis 7 -#define note_g 8 -#define note_gis 9 -#define note_a 10 -#define note_ais 11 -#define note_h 12 -#define note_0 13 - -extern const unsigned char song2[]; -extern const unsigned char song3[]; -extern const unsigned char song4[]; - -extern const unsigned short notes[]; - - -const unsigned short AttackRate[16]; -const unsigned short DecayReleaseRate[16]; - -struct voice_ { - unsigned short envelope; - unsigned short phase; -}; - -struct SID_ { - struct voice_ voice[3]; - unsigned short noise; - unsigned char flags; - unsigned char reg[max_sid_registers]; - -}; - -struct SID_ SID; - -unsigned int playtone_cb; -unsigned char *playtone[3]; -unsigned char playstate; -unsigned char tonelen[3]; -unsigned short playcounter; -unsigned short playcountermax; - -void SIDsetfrq(unsigned char voice, unsigned short frq); -void SIDsetadsr(unsigned char voice,unsigned char attack, unsigned char decay, unsigned char sustain, unsigned char release); -void SIDsetwave(unsigned char voice,unsigned char wave); -void SIDplaytone(unsigned int cb); -void SIDplaydump(unsigned int cb); -void beep(unsigned char n); - -#endif diff --git a/boop/trunk/audio/sidfiles.h b/boop/trunk/audio/sidfiles.h deleted file mode 100644 index 0a4dccb..0000000 --- a/boop/trunk/audio/sidfiles.h +++ /dev/null @@ -1,1004 +0,0 @@ - -const unsigned char song1[] = { -0x00,0x00,0x00,0x00,0x20,0x11,0x70,0x00,0x00,0x00,0x00,0x20,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa2,0x25,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xa5,0x1f,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa5,0x1f,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0x1e,0x19,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0x87,0x21,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xdf,0x1d,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xef,0x13,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x3e,0x2a,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0xa2,0x25,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xc3,0x10,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0xd2,0x0f,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x18,0x0e,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x87,0x21,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0xd1,0x12,0x00,0x00,0x21,0x11,0x70,0x30,0x0b,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x1f,0x15,0x00,0x00,0x21,0x11,0x70,0x8f,0x0c,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x60,0x16,0x00,0x00,0x21,0x11,0x70,0xd1,0x12,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x1e,0x19,0x00,0x00,0x21,0x11,0x70,0x1f,0x15,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0x31,0x1c,0x00,0x00,0x21,0x11,0x70,0x60,0x16,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70, -0xc1,0x2c,0x00,0x00,0x21,0x11,0x70,0x31,0x1c,0x00,0x00,0x21,0x00,0x70 -}; diff --git a/boop/trunk/audio/sound.c b/boop/trunk/audio/sound.c deleted file mode 100644 index 310ecbc..0000000 --- a/boop/trunk/audio/sound.c +++ /dev/null @@ -1,114 +0,0 @@ -/* - sound.c - sound core routines - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "irq.h" -#include "sound.h" -#include "soundirq.h" -#include "lpc2220.h" - -#define AUTO_OFF_TIME 0x4000 - - -extern unsigned int tval; -extern unsigned char bl_val, cmp_val; -extern unsigned int slen; -extern unsigned char *sdata; -extern volatile unsigned char sact; -extern char out1; -extern char last_sample; -extern unsigned char sound_shutdown; - -unsigned char timeout; -unsigned int auto_timeout; - -void startSoundIRQ(void) -{ - timeout = 0; - auto_timeout = 0; - out1 = 0; - - PWMTC = 0; -// PWMPR = 0; - PWMPR = 7; - PWMMR0 = 0x1E6; // pwm rate - PWMMR2 = 0x00; // pwm value - PWMLER = 0x05; - PWMMCR = 0x03; - PWMPCR = (1<<10); - PWMTCR = 0x03; - PWMTCR = 0x09; - - //VICVectAddr0 = (unsigned long)&(soundIRQ); - //VICVectCntl0 = VIC_SLOT_EN | INT_SRC_PWM; - VICIntSelect |= INT_PWM; - VICIntEnable = INT_PWM; -} - -void initSound(void) -{ - slen = 0; - sdata = 0; - sact = 0; - tval = 0; - last_sample = 0; - bl_val = 0x3F; -} - -void switchSound(unsigned char onoff) -{ - if(onoff) - { - sound_shutdown = 0; - PINSEL0 &= ~(3 << (2 * SND_PWM)); // IO - PINSEL0 |= (2 << (2 * SND_PWM)); // PWM - PINSEL0 &= ~(3 << (2 * SND_EN)); // IO - PINSEL0 &= ~(3 << (2 * SND_ON)); // IO - FIODIR0 |= (1< - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SOUND_H -#define SOUND_H - -#define SOUND_OFF 0x00 -#define SOUND_ON 0x01 - -//IO PINS on P0 -#define SND_ON 6 -#define SND_EN 11 -#define SND_PWM 7 - -void startSoundIRQ(void); - -void initSound(void); -void switchSound(unsigned char onoff); -void playSound(unsigned char *sound, unsigned long len); -void stopSound(void); -void waitSound(void); - -#endif diff --git a/boop/trunk/audio/soundirq.c b/boop/trunk/audio/soundirq.c deleted file mode 100644 index d034c08..0000000 --- a/boop/trunk/audio/soundirq.c +++ /dev/null @@ -1,226 +0,0 @@ -/* - soundcore.c - sound core routines (output, ipol, mixing, ...) - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "irq.h" -#include "soundirq.h" -#include "sound.h" -#include "sid.h" -#include "lpc2220.h" - -#define AUTO_OFF_TIME 0x4000 - -/* -extern volatile unsigned int tval; -extern volatile unsigned char bl_val, cmp_val; -extern volatile unsigned int slen; -extern volatile unsigned char *sdata; -extern volatile unsigned char sact; -extern volatile char out1; -extern volatile char last_sample; -*/ - -unsigned int tval; -unsigned char bl_val, cmp_val; // backlight PWM -unsigned int slen; -unsigned char *sdata; -unsigned char sact; -unsigned char out1; -unsigned char last_sample; -unsigned char sound_shutdown; - -const unsigned char prevvoice[3] = {2,0,1}; - -void __attribute__ ((section(".text.fastcode"))) soundIRQ (void) -{ - PWMIR = 0x01; - - // play sample - if(sact != 0) - { - out1++; - if(out1 == 2) // quik & dirty anti-aliasing filter - { // (2 point linear interpolated 2x upsampling) - - PWMMR2 = (sdata[tval] + last_sample) >> 1; - PWMLER = 0x04; - } - else - if(out1 == 4) // prepare next sample - { - out1 = 0; - last_sample = sdata[tval]; - PWMMR2 = last_sample; - tval++; - if(tval >= slen) - { - tval = 0; - FIOCLR0 |= (1<>6; - for (x=0; x<3; x++) { - volatile unsigned char phase8; - unsigned char tempwave; - - if ((SID.reg[(x * 7) + REG_Control] & SYNC) && (SID.flags & phaseoverflow)) - SID.voice[x].phase = 0; - - - tempphase=SID.voice[x].phase + ((SID.reg[(x * 7) + REG_FREQlo] + (SID.reg[(x * 7) + REG_FREQhi]<<8))>>4); - phase8 = (SID.voice[x].phase)>>8; - - switch (SID.reg[(x * 7) + REG_Control] & 0xf0) { - case TRIANGLE: - - tempwave = phase8<<1; - if (phase8 & 0x80) - tempwave ^= 0xff; - - if ((SID.reg[(x * 7) + REG_Control] & RINGMOD) && (SID.voice[prevvoice[x]].phase & 0x8000)) - tempwave ^= 0xff; - - wave[x] = tempwave - 128; - break; - - - case SAWTOOTH: - wave[x] = phase8 - 0x80; - break; - - case RECTANGLE: - if(phase8 > ((SID.reg[(x * 7) + REG_PWlo] + (SID.reg[(x * 7) + REG_PWhi]<<8)) >> 4)) - wave[x] = 127; - else - wave[x] = -128; - break; - - case NOISE: - if(SID.voice[x].phase & 0x4000) - wave[x]=noise8; - break; - - default: - wave[x] = 0; - } - sig[x]=((SID.voice[x].envelope)>>8) * (wave[x]); - - if (SID.voice[x].phase > tempphase) - SID.flags |= phaseoverflow; - else - SID.flags &= ~phaseoverflow; - - SID.voice[x].phase=tempphase; - - if (!PWMcounter) { - signed int envelope; - if (SID.reg[(x * 7) + REG_Control] & GATE) { - if (!(SID.flags & (ATTACK<>4]; - if (envelope > max_level) { - SID.voice[x].envelope = max_level; - SID.flags |= (ATTACK<>4))) - SID.voice[x].envelope = sustainstep * (SID.reg[(x * 7) + REG_SustainRelease]>>4); - else - SID.voice[x].envelope = envelope; - } - } - else { - SID.flags &= ~(ATTACK<>8); - - autooff |= SID.voice[x].envelope; - } - - PWMMR2 = temp; - PWMLER = 0x04; - - if (!(PWMcounter--)) - PWMcounter = 29; - - temp = SID.noise; - SID.noise=SID.noise << 1; - - temp ^= SID.noise; - if ( ( temp & 0x4000 ) == 0x4000 ) - { - SID.noise |= 1; - } - - if((SID.flags & SID_AUTO_OFF) && !autooff) { - FIOCLR0 |= (1<= 63) - { - FIODIR0 |= (1<<4); // sck0/P0.4 - cmp_val -= 63; - } - else - { - FIODIR0 &= ~(1<<4); // sck0/P0.4 - } - -} diff --git a/boop/trunk/audio/soundirq.h b/boop/trunk/audio/soundirq.h deleted file mode 100644 index e988d29..0000000 --- a/boop/trunk/audio/soundirq.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - soundirq.h - sound interrupt handler - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SOUNDIRQ_H -#define SOUNDIRQ_H - -void __attribute__ ((section(".text.fastcode"))) soundIRQ (void); - -#endif diff --git a/boop/trunk/audio/sounds.h b/boop/trunk/audio/sounds.h deleted file mode 100644 index 2fd1f10..0000000 --- a/boop/trunk/audio/sounds.h +++ /dev/null @@ -1,4417 +0,0 @@ -#define sound1_len 0x0000371C -const unsigned char sound1_data[] = { - 0x80,0x7D,0x7B,0x7A,0x7A,0x7D,0x7F,0x80,0x7E,0x7D,0x7F,0x7D,0x7C,0x7F,0x80,0x81, - 0x83,0x83,0x82,0x80,0x7F,0x7D,0x7D,0x7E,0x87,0x8D,0x90,0x92,0x81,0x77,0x6D,0x6B, - 0x72,0x7A,0x77,0x76,0x6B,0x5A,0x80,0x7F,0x73,0x8A,0x8A,0x83,0x7B,0x86,0x80,0x77, - 0x7B,0x75,0x79,0x7C,0x7F,0x7A,0x7A,0x7D,0x7F,0x7D,0x7A,0x88,0x89,0x86,0x88,0x7A, - 0x7E,0x8F,0x8B,0x8B,0xA2,0xA3,0x9A,0x9A,0x82,0x7F,0x93,0x8E,0x98,0xA7,0x97,0x94, - 0x9D,0x95,0x77,0x78,0x8A,0x8F,0x94,0x89,0x79,0x6D,0x6C,0x6B,0x66,0x75,0x7A,0x6E, - 0x6A,0x62,0x5B,0x57,0x5C,0x5E,0x5D,0x61,0x5A,0x59,0x57,0x54,0x61,0x6F,0x70,0x69, - 0x6B,0x73,0x6F,0x63,0x64,0x74,0x7F,0x7D,0x76,0x74,0x71,0x71,0x6E,0x70,0x78,0x77, - 0x79,0x78,0x77,0x7D,0x86,0xA1,0xA9,0x9A,0x8F,0x8C,0x8F,0x8E,0x8F,0x8D,0x8C,0x8D, - 0x90,0x97,0x8C,0x78,0x7B,0x89,0x8C,0x8E,0x96,0x9E,0x97,0x8F,0x89,0x84,0x8C,0x92, - 0x94,0x8D,0x88,0x81,0x7C,0x86,0x8C,0x91,0x99,0x9A,0x95,0x8E,0x8C,0x8B,0x88,0x8D, - 0x94,0x95,0x8F,0x8C,0x88,0x8C,0x93,0x99,0x9A,0x99,0x95,0x8D,0x8E,0x88,0x90,0xA3, - 0xA8,0xA3,0x93,0x87,0x84,0x80,0x80,0x86,0x84,0x7A,0x6E,0x65,0x60,0x5F,0x68,0x6E, - 0x68,0x5C,0x52,0x4B,0x4A,0x57,0x62,0x69,0x70,0x6A,0x5D,0x5C,0x5F,0x63,0x68,0x70, - 0x70,0x67,0x68,0x67,0x6B,0x77,0x78,0x70,0x6C,0x61,0x5D,0x61,0x67,0x76,0x78,0x78, - 0x73,0x70,0x74,0x7D,0x88,0x97,0x9E,0x96,0x95,0x90,0x89,0x92,0x98,0x96,0x95,0x87, - 0x7A,0x79,0x7D,0x87,0x95,0xA1,0xA1,0x96,0x8F,0x8C,0x89,0x8E,0x93,0x8D,0x89,0x86, - 0x7E,0x83,0x93,0x96,0x94,0x91,0x84,0x7D,0x7F,0x8B,0x98,0x9E,0xA2,0x99,0x8C,0x89, - 0x8C,0x90,0x9B,0x95,0x8F,0x8F,0x8C,0x92,0x9E,0xA6,0xA7,0x9E,0x8D,0x82,0x82,0x8C, - 0x98,0xA2,0xA0,0x9B,0x91,0x85,0x85,0x82,0x80,0x7C,0x6F,0x63,0x60,0x62,0x68,0x70, - 0x6C,0x66,0x5B,0x4F,0x50,0x57,0x5F,0x66,0x69,0x68,0x5F,0x5E,0x62,0x62,0x69,0x6A, - 0x66,0x63,0x6A,0x72,0x76,0x7B,0x75,0x6A,0x60,0x5A,0x5A,0x61,0x6C,0x70,0x73,0x74, - 0x73,0x7A,0x80,0x86,0x8F,0x93,0x94,0x95,0x99,0x9C,0x9E,0x9E,0x95,0x8A,0x80,0x7D, - 0x7E,0x87,0x8E,0x92,0x97,0x97,0x95,0x8E,0x8A,0x88,0x83,0x82,0x84,0x87,0x8E,0x94, - 0x99,0x9C,0x96,0x8C,0x82,0x7F,0x85,0x8D,0x9B,0xA5,0xA5,0xA4,0x9D,0x98,0x93,0x8D, - 0x8D,0x8D,0x93,0x9A,0x9F,0xA4,0xA4,0xA1,0x96,0x8D,0x89,0x8A,0x8D,0x93,0x99,0x9C, - 0xA1,0x9E,0x95,0x85,0x7C,0x76,0x78,0x7F,0x7B,0x7A,0x78,0x71,0x6D,0x65,0x5C,0x52, - 0x50,0x55,0x59,0x65,0x6A,0x6B,0x6C,0x64,0x59,0x50,0x4E,0x54,0x59,0x65,0x71,0x71, - 0x74,0x71,0x6C,0x63,0x5B,0x60,0x62,0x65,0x6C,0x71,0x75,0x70,0x6A,0x61,0x5B,0x62, - 0x6B,0x7C,0x8D,0x93,0x9D,0x9E,0x9F,0x9E,0x94,0x92,0x90,0x92,0x95,0x9B,0x9F,0x98, - 0x95,0x89,0x7F,0x7C,0x7B,0x85,0x8D,0x90,0x90,0x8C,0x88,0x82,0x7A,0x7B,0x7B,0x7D, - 0x82,0x88,0x92,0x9B,0xA0,0x98,0x8B,0x81,0x7F,0x8B,0x9B,0xA0,0xA0,0x9A,0x95,0x94, - 0x90,0x92,0x8E,0x8A,0x96,0x99,0xA0,0xA9,0xAB,0xA2,0x94,0x87,0x7D,0x83,0x8F,0x96, - 0x9B,0x96,0x8E,0x88,0x7B,0x74,0x72,0x6E,0x70,0x6B,0x6D,0x74,0x73,0x77,0x68,0x52, - 0x4D,0x4C,0x57,0x67,0x6B,0x69,0x61,0x5C,0x5A,0x54,0x55,0x55,0x5C,0x62,0x68,0x72, - 0x73,0x78,0x6A,0x5A,0x56,0x50,0x5D,0x67,0x69,0x6D,0x66,0x63,0x60,0x5B,0x5F,0x63, - 0x6D,0x7E,0x89,0x99,0xA6,0xA9,0xA5,0x93,0x88,0x85,0x8D,0x9D,0x9F,0xA4,0x99,0x8F, - 0x8C,0x7F,0x7E,0x7B,0x7C,0x85,0x84,0x8E,0x92,0x93,0x8D,0x79,0x73,0x6F,0x7B,0x88, - 0x90,0x95,0x8C,0x8D,0x8E,0x89,0x87,0x87,0x8B,0x97,0x9B,0x9E,0xA2,0x9C,0x99,0x8E, - 0x87,0x87,0x8E,0x9C,0xA3,0xA4,0xA1,0x9C,0x93,0x8A,0x88,0x84,0x8A,0x8F,0x8B,0x96, - 0x99,0x97,0x8D,0x78,0x6E,0x6A,0x73,0x7F,0x7E,0x79,0x72,0x6C,0x63,0x60,0x5A,0x58, - 0x60,0x63,0x68,0x71,0x70,0x6D,0x62,0x51,0x50,0x57,0x63,0x70,0x71,0x74,0x73,0x6C, - 0x67,0x60,0x5C,0x60,0x66,0x65,0x69,0x72,0x72,0x6F,0x5E,0x4E,0x56,0x59,0x6C,0x7B, - 0x7D,0x89,0x8A,0x8D,0x8B,0x8C,0x8E,0x94,0x9C,0x9B,0xA3,0xA6,0xA3,0x9A,0x84,0x7F, - 0x84,0x85,0x93,0x91,0x8F,0x8D,0x85,0x81,0x7A,0x7D,0x7F,0x87,0x89,0x8C,0x95,0x95, - 0x95,0x88,0x7A,0x7E,0x89,0x94,0x9E,0x9D,0x9B,0x95,0x91,0x8C,0x88,0x8B,0x91,0x99, - 0x97,0xA1,0xA6,0xA4,0x9E,0x8F,0x86,0x8B,0x97,0xA0,0x9F,0x9B,0x95,0x8C,0x88,0x83, - 0x81,0x82,0x8C,0x8C,0x8A,0x8D,0x84,0x80,0x6D,0x60,0x60,0x65,0x72,0x75,0x74,0x70, - 0x69,0x62,0x5F,0x5A,0x5B,0x60,0x66,0x66,0x6D,0x73,0x71,0x67,0x59,0x58,0x5E,0x6B, - 0x76,0x77,0x70,0x6A,0x62,0x5A,0x5D,0x5D,0x5F,0x65,0x62,0x6A,0x78,0x81,0x7C,0x6D, - 0x68,0x73,0x85,0x99,0xA5,0xA3,0xA2,0x9E,0x98,0x93,0x94,0x98,0x99,0x96,0x9A,0x9E, - 0x9F,0x96,0x86,0x79,0x74,0x81,0x86,0x8F,0x92,0x8B,0x88,0x81,0x7C,0x78,0x7E,0x88, - 0x93,0x95,0x99,0x9B,0x92,0x8B,0x83,0x81,0x85,0x93,0x9F,0xA4,0xA0,0x94,0x8B,0x82, - 0x88,0x8D,0x95,0x97,0x94,0xA1,0xA4,0xA5,0x90,0x80,0x81,0x84,0x93,0x9B,0x99,0x92, - 0x8B,0x85,0x7E,0x79,0x7C,0x7E,0x7A,0x7E,0x85,0x83,0x7E,0x6C,0x59,0x57,0x5F,0x6A, - 0x70,0x75,0x73,0x6C,0x64,0x5C,0x56,0x59,0x64,0x69,0x6C,0x76,0x7B,0x76,0x68,0x5B, - 0x57,0x60,0x6C,0x71,0x70,0x71,0x69,0x61,0x5A,0x56,0x5A,0x68,0x73,0x75,0x7F,0x84, - 0x83,0x7D,0x79,0x7D,0x8C,0x9D,0xAA,0xAF,0xA9,0x9F,0x91,0x8B,0x8D,0x92,0x98,0x8C, - 0x91,0x9B,0x9E,0x97,0x7A,0x6D,0x6E,0x7A,0x8B,0x8E,0x8A,0x8A,0x89,0x81,0x79,0x75, - 0x7B,0x89,0x8C,0x94,0x9B,0x99,0x90,0x81,0x7C,0x7E,0x8E,0x98,0xA0,0xA0,0x99,0x91, - 0x84,0x85,0x86,0x93,0x91,0x8E,0x9E,0xA3,0xA9,0x97,0x7F,0x79,0x7F,0x90,0x94,0x91, - 0x8E,0x88,0x82,0x79,0x71,0x71,0x7A,0x79,0x7C,0x82,0x7D,0x78,0x66,0x5D,0x5A,0x60, - 0x70,0x77,0x7D,0x73,0x67,0x5E,0x5B,0x5C,0x66,0x67,0x60,0x72,0x78,0x81,0x70,0x59, - 0x54,0x52,0x67,0x71,0x72,0x70,0x6B,0x62,0x5B,0x57,0x5D,0x6A,0x6A,0x77,0x7C,0x83, - 0x88,0x7B,0x79,0x7B,0x8A,0x9B,0xA6,0xAB,0xA5,0x9D,0x8A,0x84,0x85,0x90,0x99,0x91, - 0x99,0x97,0x92,0x84,0x6F,0x6C,0x70,0x83,0x8C,0x90,0x8C,0x82,0x7C,0x71,0x74,0x7B, - 0x84,0x82,0x8D,0x99,0x9A,0x93,0x7C,0x76,0x77,0x87,0x96,0x9A,0x9C,0x98,0x90,0x80, - 0x7B,0x81,0x8F,0x9B,0x9F,0xA0,0x9C,0x97,0x8D,0x80,0x7C,0x83,0x8C,0x99,0x9B,0x8F, - 0x83,0x73,0x6E,0x76,0x7B,0x7F,0x78,0x7D,0x86,0x83,0x78,0x60,0x5A,0x5D,0x6D,0x79, - 0x79,0x78,0x6F,0x68,0x61,0x5C,0x63,0x6F,0x65,0x70,0x7A,0x7B,0x7B,0x65,0x5B,0x59, - 0x62,0x6D,0x70,0x72,0x72,0x6E,0x5C,0x57,0x57,0x62,0x71,0x72,0x7B,0x7E,0x80,0x7A, - 0x73,0x75,0x7D,0x93,0x9F,0xA7,0xA9,0x9D,0x93,0x8C,0x8B,0x96,0x97,0x91,0x9C,0xA0, - 0xA0,0x8B,0x72,0x6F,0x72,0x80,0x8A,0x8C,0x8A,0x85,0x7C,0x71,0x6F,0x79,0x81,0x80, - 0x8E,0x8F,0x90,0x89,0x76,0x75,0x76,0x86,0x92,0x97,0x99,0x95,0x8B,0x7F,0x7E,0x84, - 0x94,0x97,0x9C,0xA4,0x9F,0x9A,0x86,0x7F,0x81,0x8C,0x99,0x9B,0x9A,0x92,0x87,0x7C, - 0x78,0x80,0x85,0x80,0x8A,0x8D,0x8D,0x84,0x6D,0x64,0x64,0x73,0x7C,0x7E,0x81,0x7C, - 0x70,0x65,0x60,0x63,0x73,0x79,0x7A,0x7E,0x78,0x72,0x65,0x5C,0x61,0x6A,0x77,0x7D, - 0x7B,0x77,0x69,0x5B,0x58,0x5D,0x6B,0x70,0x72,0x7C,0x7E,0x7A,0x69,0x64,0x6D,0x7A, - 0x90,0x97,0x9D,0x9F,0x96,0x8F,0x88,0x92,0x9C,0x94,0x9D,0xA5,0xA8,0xA0,0x85,0x7A, - 0x75,0x80,0x89,0x8A,0x8D,0x8C,0x83,0x70,0x6A,0x70,0x7E,0x86,0x85,0x8A,0x88,0x84, - 0x76,0x6F,0x72,0x7A,0x8D,0x92,0x96,0x96,0x89,0x81,0x79,0x81,0x8E,0x8A,0x97,0x9D, - 0xA3,0x9F,0x87,0x81,0x7E,0x8C,0x9A,0x9D,0x9F,0x9A,0x8F,0x7F,0x79,0x82,0x87,0x87, - 0x8E,0x8F,0x94,0x8E,0x75,0x6C,0x69,0x73,0x7F,0x83,0x86,0x82,0x74,0x65,0x5E,0x67, - 0x77,0x7A,0x7B,0x80,0x7D,0x78,0x6A,0x5E,0x60,0x6C,0x79,0x7D,0x80,0x7B,0x6D,0x63, - 0x5C,0x64,0x71,0x70,0x75,0x7A,0x7A,0x77,0x63,0x5F,0x67,0x70,0x81,0x85,0x8C,0x92, - 0x86,0x7C,0x7D,0x89,0x98,0x9C,0x9C,0xA1,0xA3,0x9D,0x8D,0x82,0x85,0x8D,0x93,0x8E, - 0x8C,0x8D,0x84,0x78,0x6E,0x70,0x7D,0x7D,0x7C,0x84,0x85,0x85,0x78,0x6A,0x6E,0x73, - 0x7F,0x81,0x81,0x8B,0x89,0x80,0x78,0x79,0x84,0x88,0x86,0x90,0x96,0x96,0x8F,0x7F, - 0x81,0x85,0x8E,0x96,0x93,0x99,0x99,0x8D,0x83,0x7C,0x86,0x8F,0x88,0x8E,0x92,0x91, - 0x8E,0x79,0x75,0x74,0x79,0x84,0x7D,0x82,0x83,0x7C,0x71,0x66,0x6D,0x79,0x78,0x76, - 0x7C,0x7D,0x81,0x72,0x66,0x67,0x6B,0x78,0x77,0x78,0x7A,0x79,0x70,0x64,0x65,0x70, - 0x75,0x71,0x79,0x7B,0x7E,0x76,0x64,0x66,0x69,0x76,0x7D,0x7D,0x88,0x8A,0x86,0x7B, - 0x78,0x84,0x92,0x8E,0x8F,0x98,0x99,0x9D,0x88,0x80,0x82,0x84,0x91,0x8B,0x8C,0x90, - 0x8B,0x7F,0x73,0x73,0x80,0x83,0x7D,0x87,0x89,0x8D,0x81,0x6F,0x73,0x72,0x7C,0x82, - 0x81,0x89,0x89,0x81,0x72,0x70,0x7C,0x86,0x82,0x83,0x8B,0x8F,0x8F,0x7B,0x75,0x7A, - 0x7E,0x88,0x88,0x8A,0x8E,0x8C,0x81,0x74,0x76,0x82,0x84,0x81,0x8B,0x8B,0x8E,0x85, - 0x72,0x75,0x74,0x7C,0x82,0x81,0x89,0x87,0x7F,0x72,0x6C,0x76,0x82,0x80,0x80,0x87, - 0x87,0x87,0x79,0x6F,0x72,0x77,0x81,0x80,0x83,0x88,0x84,0x7B,0x70,0x6F,0x7A,0x81, - 0x7E,0x86,0x8B,0x8B,0x84,0x73,0x74,0x75,0x7E,0x86,0x84,0x8E,0x8D,0x85,0x7B,0x74, - 0x7C,0x87,0x89,0x87,0x8D,0x8E,0x8E,0x81,0x75,0x78,0x7B,0x85,0x86,0x84,0x8A,0x86, - 0x7C,0x71,0x6D,0x76,0x80,0x7C,0x81,0x84,0x85,0x82,0x6E,0x6D,0x6F,0x76,0x7E,0x7C, - 0x83,0x85,0x80,0x74,0x6D,0x75,0x7F,0x81,0x7E,0x85,0x88,0x8A,0x81,0x72,0x77,0x79, - 0x82,0x86,0x83,0x8A,0x8A,0x84,0x78,0x73,0x7C,0x86,0x85,0x84,0x8B,0x8A,0x8C,0x7F, - 0x75,0x79,0x7B,0x85,0x85,0x86,0x8C,0x8A,0x81,0x75,0x75,0x82,0x88,0x81,0x86,0x8B, - 0x8C,0x89,0x78,0x77,0x78,0x7F,0x86,0x81,0x87,0x88,0x85,0x7B,0x71,0x76,0x81,0x84, - 0x7E,0x87,0x8B,0x8A,0x84,0x75,0x76,0x7A,0x82,0x86,0x84,0x8B,0x8C,0x86,0x7B,0x74, - 0x7A,0x88,0x86,0x85,0x8E,0x8C,0x90,0x80,0x77,0x78,0x79,0x86,0x83,0x84,0x8A,0x88, - 0x82,0x72,0x71,0x79,0x80,0x80,0x7C,0x84,0x86,0x85,0x7A,0x6F,0x72,0x75,0x80,0x81, - 0x7F,0x85,0x85,0x7C,0x73,0x70,0x7A,0x82,0x7E,0x88,0x88,0x8A,0x89,0x77,0x77,0x72, - 0x7A,0x86,0x82,0x88,0x8A,0x88,0x7D,0x72,0x79,0x81,0x88,0x85,0x87,0x8B,0x8D,0x8A, - 0x7C,0x76,0x89,0x86,0x88,0x8F,0x6D,0x80,0x8B,0x6D,0x5E,0x6A,0x7E,0x84,0x8C,0x96, - 0x95,0x94,0x92,0x92,0x92,0x8D,0x95,0x93,0x91,0x94,0x91,0x89,0x71,0x62,0x60,0x61, - 0x60,0x5D,0x62,0x63,0x6A,0x65,0x5C,0x64,0x68,0x76,0x81,0x7F,0x88,0x8D,0x8B,0x80, - 0x7D,0x86,0x91,0x9A,0xA8,0xB5,0xBB,0xBE,0xB1,0xA7,0xA1,0x9C,0xA1,0x9D,0x9B,0x9A, - 0x98,0x8A,0x76,0x71,0x71,0x7C,0x78,0x73,0x7B,0x7A,0x77,0x63,0x58,0x56,0x54,0x57, - 0x4B,0x4C,0x54,0x57,0x54,0x4D,0x50,0x5C,0x6C,0x6F,0x78,0x80,0x80,0x84,0x7B,0x79, - 0x73,0x6F,0x7A,0x82,0x8E,0x92,0x98,0x9B,0x9C,0xA8,0xAB,0xAF,0xAC,0xAC,0xB5,0xB2, - 0xB0,0xA4,0x98,0x93,0x91,0x96,0x95,0x93,0x91,0x8F,0x8E,0x87,0x7D,0x77,0x70,0x6A, - 0x63,0x5B,0x56,0x51,0x49,0x46,0x47,0x4D,0x54,0x58,0x60,0x63,0x66,0x61,0x5E,0x63, - 0x6A,0x7A,0x7D,0x84,0x8F,0x97,0x9F,0x9C,0xA0,0xA8,0xB2,0xBD,0xC3,0xC6,0xC6,0xC6, - 0xBD,0xB1,0xAA,0xA6,0xA2,0x9E,0x9A,0x94,0x90,0x85,0x7C,0x74,0x69,0x68,0x66,0x64, - 0x64,0x5F,0x59,0x4A,0x3E,0x39,0x3A,0x3E,0x3A,0x40,0x42,0x45,0x48,0x45,0x4C,0x52, - 0x5F,0x69,0x6E,0x78,0x7C,0x7C,0x7A,0x79,0x7D,0x83,0x8B,0x92,0x9C,0xA5,0xAB,0xA7, - 0xA5,0xA7,0xA7,0xAF,0xB5,0xB9,0xC2,0xC4,0xC0,0xB9,0xB2,0xB1,0xAE,0xA9,0xA4,0xA2, - 0xA1,0x9E,0x97,0x8F,0x88,0x80,0x7D,0x7A,0x71,0x6E,0x6C,0x66,0x5B,0x52,0x50,0x51, - 0x4F,0x50,0x52,0x51,0x55,0x4B,0x46,0x44,0x45,0x50,0x55,0x60,0x69,0x70,0x76,0x6F, - 0x6E,0x75,0x80,0x85,0x88,0x92,0x96,0x9D,0x9D,0x97,0x9B,0x9F,0xA7,0xAB,0xAC,0xB2, - 0xB2,0xB0,0xA5,0x9D,0xA0,0xA2,0xA2,0xA1,0xA3,0xA2,0xA2,0x98,0x8B,0x85,0x7F,0x80, - 0x7E,0x7D,0x7D,0x7F,0x7B,0x6C,0x65,0x63,0x6B,0x6B,0x6A,0x70,0x6E,0x71,0x69,0x5B, - 0x56,0x53,0x5E,0x62,0x65,0x6D,0x6F,0x70,0x67,0x62,0x63,0x6B,0x73,0x74,0x7C,0x81, - 0x85,0x83,0x7C,0x7B,0x7C,0x85,0x8D,0x90,0x97,0x9C,0x9A,0x90,0x8A,0x8B,0x92,0x96, - 0x97,0x9E,0x9F,0xA2,0x9C,0x91,0x8D,0x88,0x90,0x94,0x94,0x99,0x99,0x98,0x8D,0x84, - 0x81,0x81,0x87,0x85,0x88,0x8A,0x89,0x87,0x76,0x6F,0x69,0x6A,0x73,0x71,0x73,0x75, - 0x73,0x68,0x59,0x55,0x5A,0x61,0x65,0x6B,0x6F,0x74,0x73,0x67,0x63,0x61,0x6A,0x76, - 0x7B,0x82,0x89,0x8D,0x86,0x7A,0x76,0x7A,0x86,0x88,0x8E,0x95,0x95,0x9B,0x8F,0x87, - 0x84,0x83,0x8D,0x8F,0x95,0x98,0x9B,0x9A,0x8C,0x86,0x88,0x91,0x95,0x99,0xA0,0xA3, - 0xA8,0xA0,0x95,0x8E,0x8C,0x95,0x98,0x9A,0x9D,0x9E,0x9A,0x8B,0x81,0x79,0x7B,0x7E, - 0x7B,0x81,0x80,0x80,0x7A,0x6B,0x63,0x5C,0x60,0x62,0x63,0x66,0x67,0x6A,0x60,0x56, - 0x51,0x53,0x5A,0x5A,0x63,0x69,0x6F,0x71,0x65,0x5E,0x58,0x5A,0x61,0x65,0x6D,0x73, - 0x7C,0x79,0x6F,0x6B,0x6C,0x76,0x7A,0x80,0x8A,0x8F,0x96,0x8E,0x86,0x81,0x7F,0x88, - 0x8C,0x94,0x9A,0xA1,0xA5,0x9A,0x90,0x8B,0x91,0x96,0x98,0xA1,0xA4,0xAA,0xA6,0x9A, - 0x94,0x8E,0x91,0x95,0x99,0xA0,0xA3,0xA8,0x9F,0x93,0x8C,0x8A,0x8F,0x8F,0x96,0x9B, - 0x9C,0x9D,0x91,0x8A,0x80,0x7B,0x7E,0x7D,0x83,0x83,0x87,0x86,0x78,0x6F,0x67,0x6A, - 0x6A,0x6D,0x77,0x77,0x7C,0x75,0x6C,0x64,0x5A,0x5E,0x5E,0x64,0x69,0x6B,0x71,0x69, - 0x5F,0x56,0x56,0x5C,0x5C,0x66,0x6B,0x70,0x72,0x69,0x66,0x5E,0x5E,0x65,0x69,0x72, - 0x74,0x7D,0x7F,0x76,0x70,0x6B,0x73,0x76,0x7D,0x88,0x8B,0x94,0x8D,0x87,0x83,0x7D, - 0x85,0x87,0x91,0x97,0x9B,0xA6,0xA1,0x9A,0x90,0x90,0x97,0x97,0xA3,0xA7,0xAC,0xAF, - 0xA4,0x9E,0x91,0x90,0x94,0x95,0x9E,0x9D,0xA4,0xA6,0x9B,0x92,0x86,0x8A,0x8B,0x8E, - 0x98,0x96,0x9C,0x96,0x8C,0x86,0x79,0x7D,0x7A,0x7D,0x82,0x81,0x89,0x81,0x77,0x6D, - 0x64,0x68,0x64,0x6D,0x72,0x71,0x76,0x69,0x64,0x5A,0x54,0x5A,0x57,0x61,0x62,0x68, - 0x6E,0x66,0x61,0x55,0x56,0x5B,0x5B,0x69,0x6A,0x6F,0x70,0x67,0x67,0x5B,0x5D,0x60, - 0x62,0x6F,0x6F,0x7A,0x7A,0x74,0x6F,0x66,0x6D,0x6D,0x73,0x82,0x83,0x8E,0x89,0x86, - 0x84,0x7A,0x82,0x80,0x89,0x8F,0x91,0x9D,0x99,0x95,0x89,0x82,0x89,0x87,0x94,0x9B, - 0x9E,0xA5,0x9B,0x9D,0x94,0x8E,0x91,0x8E,0x9B,0x9B,0xA3,0xAA,0xA4,0x9F,0x91,0x90, - 0x92,0x92,0xA0,0xA1,0xA7,0xA8,0x9D,0x9D,0x8F,0x8F,0x8E,0x8D,0x97,0x94,0x9D,0x9D, - 0x96,0x8C,0x7B,0x7C,0x78,0x7B,0x86,0x83,0x8A,0x82,0x79,0x73,0x65,0x67,0x60,0x65, - 0x6C,0x6C,0x76,0x74,0x71,0x64,0x58,0x5C,0x59,0x64,0x6E,0x6F,0x78,0x6E,0x6D,0x65, - 0x5C,0x5F,0x59,0x64,0x67,0x6C,0x76,0x72,0x6F,0x60,0x59,0x5C,0x5A,0x6A,0x70,0x76, - 0x7C,0x73,0x75,0x6A,0x67,0x68,0x65,0x72,0x74,0x7E,0x85,0x85,0x83,0x74,0x73,0x74, - 0x78,0x88,0x8D,0x97,0x98,0x92,0x93,0x87,0x88,0x84,0x87,0x91,0x94,0x9F,0xA2,0xA3, - 0x9B,0x8D,0x8C,0x89,0x91,0x9F,0xA3,0xAE,0xA9,0xA5,0xA2,0x96,0x97,0x90,0x94,0x9A, - 0x9D,0xA8,0xA9,0xA8,0x9D,0x8F,0x8E,0x8B,0x94,0x9F,0xA2,0xA9,0xA2,0x9F,0x98,0x8E, - 0x8D,0x84,0x89,0x8C,0x90,0x98,0x98,0x97,0x89,0x7E,0x7C,0x77,0x80,0x86,0x8A,0x8F, - 0x86,0x83,0x7B,0x75,0x73,0x6A,0x6D,0x6D,0x73,0x7A,0x7B,0x79,0x6B,0x62,0x5E,0x5A, - 0x64,0x6B,0x70,0x73,0x6B,0x69,0x61,0x5E,0x59,0x51,0x56,0x57,0x60,0x68,0x6C,0x6B, - 0x5F,0x58,0x54,0x53,0x5F,0x66,0x6F,0x71,0x6D,0x6E,0x67,0x66,0x60,0x5B,0x61,0x64, - 0x6F,0x77,0x7E,0x7E,0x71,0x69,0x64,0x66,0x73,0x7C,0x86,0x89,0x86,0x87,0x80,0x7F, - 0x7B,0x77,0x7D,0x7F,0x8A,0x93,0x9A,0x99,0x8C,0x83,0x7E,0x7F,0x8C,0x94,0x9F,0xA0, - 0x9D,0x9D,0x96,0x96,0x91,0x8F,0x92,0x95,0xA0,0xA9,0xAF,0xAD,0xA0,0x98,0x92,0x95, - 0xA1,0xA8,0xB2,0xB0,0xAC,0xA9,0xA2,0xA0,0x98,0x96,0x95,0x96,0x9F,0xA4,0xA9,0xA3, - 0x95,0x8B,0x83,0x85,0x8F,0x96,0x9D,0x98,0x92,0x8E,0x88,0x87,0x7F,0x7C,0x7A,0x7B, - 0x84,0x89,0x8F,0x8A,0x7E,0x74,0x6B,0x6D,0x77,0x7E,0x84,0x81,0x7C,0x77,0x73,0x72, - 0x6B,0x67,0x64,0x65,0x6D,0x72,0x79,0x76,0x6B,0x60,0x56,0x56,0x60,0x68,0x6F,0x6D, - 0x69,0x66,0x62,0x63,0x5E,0x5B,0x58,0x59,0x61,0x68,0x70,0x70,0x67,0x5D,0x54,0x54, - 0x5F,0x6A,0x72,0x73,0x6F,0x6D,0x6B,0x6C,0x6A,0x67,0x65,0x65,0x6C,0x75,0x7E,0x82, - 0x7D,0x73,0x6B,0x68,0x72,0x7E,0x88,0x8B,0x85,0x83,0x80,0x83,0x82,0x7E,0x7D,0x7C, - 0x83,0x8C,0x95,0x9B,0x97,0x8E,0x84,0x80,0x89,0x95,0x9F,0xA3,0x9E,0x9C,0x97,0x9A, - 0x99,0x95,0x92,0x8E,0x92,0x98,0xA0,0xA6,0xA3,0x99,0x8E,0x86,0x8B,0x94,0x9C,0xA1, - 0x9B,0x97,0x92,0x92,0x92,0x8D,0x8A,0x83,0x84,0x89,0x90,0x98,0x97,0x90,0x85,0x7A, - 0x7C,0x85,0x8F,0x96,0x91,0x8E,0x89,0x89,0x8B,0x88,0x86,0x7F,0x7D,0x81,0x87,0x90, - 0x91,0x8B,0x81,0x74,0x72,0x7A,0x83,0x8C,0x87,0x83,0x7D,0x79,0x7D,0x7B,0x7B,0x74, - 0x6F,0x72,0x76,0x7F,0x82,0x7E,0x78,0x6B,0x67,0x6D,0x74,0x7F,0x7E,0x79,0x75,0x6F, - 0x74,0x76,0x76,0x73,0x6B,0x6B,0x6C,0x73,0x7A,0x7A,0x77,0x6D,0x64,0x6A,0x70,0x7A, - 0x7D,0x77,0x76,0x6F,0x73,0x78,0x78,0x79,0x71,0x6E,0x70,0x74,0x7E,0x82,0x80,0x7C, - 0x70,0x71,0x77,0x7C,0x86,0x81,0x80,0x7D,0x7A,0x82,0x82,0x81,0x7D,0x75,0x77,0x7B, - 0x82,0x8A,0x87,0x84,0x7A,0x73,0x7A,0x7D,0x86,0x88,0x83,0x82,0x7D,0x7F,0x83,0x80, - 0x7E,0x7A,0x76,0x7C,0x80,0x85,0x88,0x83,0x7D,0x77,0x79,0x80,0x86,0x8B,0x89,0x85, - 0x82,0x82,0x83,0x85,0x84,0x82,0x81,0x81,0x84,0x88,0x8A,0x87,0x83,0x7F,0x7F,0x85, - 0x88,0x8C,0x8B,0x89,0x87,0x85,0x84,0x85,0x85,0x84,0x83,0x81,0x82,0x84,0x84,0x83, - 0x81,0x80,0x80,0x82,0x83,0x85,0x86,0x85,0x83,0x81,0x80,0x82,0x84,0x84,0x84,0x84, - 0x83,0x84,0x84,0x84,0x83,0x83,0x83,0x83,0x83,0x85,0x86,0x87,0x86,0x85,0x85,0x85, - 0x86,0x87,0x87,0x87,0x86,0x85,0x84,0x83,0x84,0x84,0x84,0x84,0x83,0x83,0x82,0x82, - 0x81,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x81,0x80,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F,0x7E, - 0x7E,0x7E,0x7E,0x7D,0x7D,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7E, - 0x7D,0x7D,0x7D,0x7F,0x81,0x81,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x80,0x80,0x7F,0x7E,0x7D,0x7D, - 0x7F,0x7F,0x7E,0x7D,0x7C,0x7C,0x7B,0x7B,0x7B,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7D, - 0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E, - 0x7E,0x7E,0x7E,0x7E,0x7D,0x7E,0x80,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x80,0x81, - 0x81,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x82,0x82,0x81,0x80,0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x82,0x81, - 0x81,0x80,0x81,0x82,0x83,0x83,0x84,0x84,0x83,0x81,0x81,0x81,0x81,0x81,0x81,0x81, - 0x80,0x80,0x7F,0x7E,0x7E,0x7F,0x7F,0x7E,0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x81, - 0x81,0x81,0x81,0x82,0x81,0x80,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x81,0x80,0x7F, - 0x7F,0x80,0x81,0x82,0x83,0x83,0x83,0x82,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x82, - 0x82,0x81,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x81, - 0x82,0x82,0x82,0x81,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7E,0x7E,0x7E, - 0x7F,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x80,0x80,0x80,0x80,0x81,0x80,0x80, - 0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x82,0x82, - 0x82,0x82,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x80, - 0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x80,0x81,0x82,0x82,0x82,0x81,0x82,0x81,0x81, - 0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x80,0x80, - 0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7E,0x7E,0x7E, - 0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x82,0x82,0x81,0x81,0x80, - 0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x81,0x81,0x82, - 0x82,0x81,0x80,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x80,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x81,0x80,0x80,0x7F,0x7E, - 0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7E,0x80,0x88,0x88,0x68,0x6C,0x85,0x8E,0x7D,0x7A, - 0x95,0x75,0x6D,0x83,0x7F,0x80,0x84,0x94,0x84,0x79,0x86,0x88,0x81,0x77,0x87,0x85, - 0x76,0x73,0x77,0x7F,0x80,0x81,0x87,0x86,0x78,0x7F,0x86,0x8C,0x86,0x86,0x87,0x74, - 0x7C,0x75,0x7C,0x87,0x8B,0x8B,0x75,0x7E,0x73,0x6C,0x90,0x81,0x68,0x82,0x7A,0x6A, - 0x6A,0x72,0x82,0x76,0x77,0x79,0x77,0x7A,0x75,0x7B,0x7A,0x7A,0x82,0x8B,0x8C,0x87, - 0x8B,0x8F,0x85,0x7F,0x88,0x83,0x77,0x84,0x92,0x8F,0x90,0x99,0xA5,0x9C,0x94,0x91, - 0x81,0x7D,0x89,0x8F,0x91,0x98,0x96,0x90,0x8F,0x8F,0x8E,0x7E,0x79,0x81,0x83,0x85, - 0x86,0x84,0x80,0x76,0x6F,0x73,0x6D,0x65,0x67,0x71,0x75,0x78,0x7C,0x71,0x6B,0x6C, - 0x6E,0x77,0x6F,0x64,0x67,0x6E,0x6A,0x66,0x6E,0x6F,0x6D,0x72,0x77,0x70,0x72,0x76, - 0x67,0x5C,0x6D,0x7C,0x7A,0x77,0x7D,0x81,0x76,0x74,0x73,0x74,0x7D,0x7D,0x75,0x77, - 0x85,0x86,0x8A,0x93,0xA2,0xAE,0x9F,0x9C,0xA8,0x98,0x90,0x9A,0x97,0x9C,0x97,0x8D, - 0x8A,0x91,0x88,0x78,0x7E,0x7D,0x86,0x87,0x7E,0x86,0x86,0x80,0x79,0x83,0x91,0x86, - 0x8B,0x88,0x8A,0x97,0x86,0x89,0x93,0x99,0x95,0x90,0x8F,0x89,0x95,0x8E,0x8B,0x8C, - 0x84,0x85,0x7D,0x8F,0x90,0x87,0x91,0x87,0x9A,0x94,0x8A,0x92,0x85,0x8D,0x80,0x79, - 0x7D,0x83,0x8E,0x89,0x90,0x8F,0x8B,0x7A,0x7D,0x8C,0x83,0x86,0x7A,0x7C,0x87,0x79, - 0x78,0x70,0x6D,0x70,0x63,0x5D,0x5F,0x65,0x6A,0x65,0x69,0x66,0x5E,0x55,0x56,0x67, - 0x60,0x5F,0x62,0x66,0x73,0x61,0x5F,0x64,0x63,0x6B,0x60,0x63,0x70,0x72,0x79,0x79, - 0x7C,0x74,0x66,0x5D,0x5E,0x6E,0x6B,0x70,0x79,0x7A,0x83,0x79,0x75,0x7A,0x7C,0x7F, - 0x7D,0x89,0x9F,0xA2,0xA6,0xA6,0xA1,0x9D,0x8E,0x87,0x88,0x96,0x9C,0x97,0x9C,0x99, - 0x9B,0x94,0x80,0x7F,0x84,0x84,0x87,0x86,0x93,0x9A,0x94,0x93,0x88,0x85,0x81,0x7F, - 0x85,0x8D,0xA1,0xA7,0x9F,0x9B,0x97,0x95,0x88,0x82,0x8D,0x8C,0x94,0x94,0x91,0x9C, - 0x95,0x8B,0x84,0x88,0x8C,0x89,0x85,0x88,0x9E,0xA2,0x9B,0x8C,0x87,0x90,0x84,0x7C, - 0x88,0x8E,0x95,0x90,0x8B,0x8F,0x82,0x7A,0x73,0x76,0x7B,0x70,0x67,0x6F,0x84,0x7B, - 0x6B,0x69,0x6C,0x6A,0x59,0x59,0x6A,0x6C,0x67,0x62,0x60,0x63,0x59,0x54,0x5B,0x65, - 0x63,0x5A,0x52,0x65,0x74,0x67,0x64,0x66,0x72,0x70,0x5F,0x6A,0x79,0x78,0x6D,0x63, - 0x6D,0x6D,0x66,0x6C,0x70,0x76,0x73,0x6E,0x6B,0x7A,0x8C,0x84,0x84,0x8A,0x93,0x92, - 0x88,0x94,0xA1,0xA5,0xA3,0xA0,0xA0,0x9C,0x96,0x97,0x96,0x93,0x8E,0x8A,0x83,0x89, - 0x9A,0x8F,0x88,0x88,0x89,0x89,0x79,0x80,0x8F,0x94,0x8E,0x87,0x8C,0x89,0x82,0x8E, - 0x97,0x9B,0x98,0x91,0x90,0x83,0x94,0x9E,0x92,0x98,0x8E,0x8E,0x8D,0x82,0x8B,0x91, - 0x94,0x91,0x86,0x8E,0x88,0x82,0x8F,0x96,0x95,0x87,0x85,0x85,0x8B,0x9C,0x95,0x90, - 0x8A,0x85,0x82,0x76,0x7C,0x87,0x86,0x82,0x77,0x74,0x6D,0x62,0x6B,0x71,0x73,0x6B, - 0x66,0x5F,0x54,0x67,0x70,0x68,0x65,0x5E,0x5C,0x5B,0x54,0x5E,0x64,0x66,0x67,0x60, - 0x63,0x5D,0x5B,0x64,0x68,0x6A,0x68,0x63,0x61,0x6B,0x7E,0x79,0x6A,0x6F,0x69,0x66, - 0x60,0x68,0x78,0x78,0x75,0x72,0x75,0x73,0x76,0x7B,0x89,0x92,0x8B,0x8A,0x8B,0x8A, - 0x9E,0xB2,0xAB,0xA9,0xA2,0x9A,0x94,0x89,0x8F,0x9A,0x9A,0x97,0x91,0x8A,0x89,0x81, - 0x82,0x8C,0x8E,0x86,0x7C,0x78,0x80,0x99,0x97,0x91,0x93,0x8C,0x8C,0x85,0x84,0x98, - 0x9F,0x96,0x95,0x8E,0x92,0x89,0x86,0x98,0x99,0x96,0x8C,0x89,0x82,0x90,0xA3,0x9C, - 0x9A,0x8F,0x8B,0x8D,0x7D,0x8A,0x98,0x93,0x96,0x8C,0x88,0x88,0x7B,0x7F,0x8C,0x8C, - 0x82,0x7A,0x71,0x77,0x8D,0x86,0x7D,0x7B,0x70,0x6D,0x63,0x5D,0x6F,0x75,0x6F,0x6B, - 0x65,0x62,0x58,0x55,0x65,0x69,0x5E,0x5C,0x5A,0x4D,0x5D,0x72,0x69,0x69,0x64,0x5A, - 0x5F,0x5A,0x5C,0x6E,0x73,0x75,0x70,0x6B,0x69,0x61,0x60,0x71,0x6E,0x67,0x6A,0x60, - 0x67,0x80,0x82,0x79,0x80,0x7D,0x7A,0x73,0x77,0x90,0x9C,0x9D,0x9E,0x9E,0x9C,0x9C, - 0x99,0xA8,0xAD,0xA4,0xA0,0x9A,0x8D,0x91,0xA8,0xA3,0x9B,0x94,0x8D,0x89,0x7A,0x7B, - 0x8E,0x8F,0x88,0x8A,0x83,0x84,0x83,0x81,0x8E,0x94,0x8F,0x8B,0x85,0x83,0x98,0xA2, - 0x99,0x96,0x94,0x8E,0x8A,0x82,0x91,0xA3,0x98,0x98,0x97,0x92,0x8E,0x86,0x8E,0x9A, - 0x98,0x90,0x8D,0x86,0x84,0x9A,0x9F,0x91,0x93,0x8A,0x82,0x7E,0x75,0x85,0x8D,0x83, - 0x82,0x7B,0x78,0x77,0x6D,0x74,0x7C,0x75,0x6D,0x67,0x5C,0x65,0x7D,0x71,0x67,0x6C, - 0x64,0x5F,0x53,0x59,0x6E,0x65,0x5D,0x66,0x62,0x5F,0x5A,0x5B,0x69,0x66,0x5F,0x60, - 0x5F,0x58,0x69,0x7B,0x70,0x70,0x6C,0x68,0x67,0x61,0x67,0x77,0x71,0x6D,0x74,0x73, - 0x74,0x70,0x78,0x81,0x82,0x7D,0x82,0x82,0x83,0xA3,0xAB,0xA4,0xAA,0xA4,0x9C,0x9A, - 0x95,0xA1,0xAA,0xA1,0x9F,0x9F,0x97,0x8F,0x8A,0x8B,0x92,0x8B,0x87,0x8A,0x7D,0x7E, - 0x97,0x91,0x8B,0x92,0x88,0x86,0x83,0x81,0x8F,0x91,0x8B,0x8F,0x92,0x8F,0x8B,0x8A, - 0x95,0x98,0x92,0x95,0x93,0x85,0x8F,0xA6,0xA0,0x99,0x9F,0x94,0x8D,0x88,0x84,0x91, - 0x92,0x8F,0x94,0x92,0x8C,0x85,0x83,0x85,0x86,0x7F,0x7D,0x84,0x72,0x74,0x8C,0x82, - 0x77,0x80,0x77,0x6D,0x68,0x63,0x6E,0x70,0x66,0x68,0x71,0x68,0x5D,0x61,0x61,0x63, - 0x5F,0x5A,0x60,0x59,0x59,0x6E,0x71,0x64,0x6C,0x6E,0x5B,0x5A,0x5D,0x5C,0x65,0x63, - 0x64,0x70,0x6D,0x66,0x68,0x6B,0x6A,0x68,0x66,0x6D,0x69,0x5F,0x77,0x8A,0x74,0x78, - 0x8C,0x7F,0x79,0x7F,0x82,0x8C,0x91,0x8E,0xA0,0xAB,0x9F,0xA1,0xAD,0xA7,0x9B,0x9C, - 0x9D,0x9C,0x91,0x8E,0xA4,0xA0,0x8C,0x93,0x9A,0x86,0x7C,0x84,0x84,0x83,0x7E,0x7E, - 0x8B,0x8D,0x80,0x8A,0x95,0x8C,0x85,0x85,0x86,0x89,0x82,0x84,0x9A,0x9A,0x8A,0x97, - 0xA4,0x91,0x8C,0x98,0x95,0x92,0x8E,0x90,0x95,0x94,0x90,0x93,0x9A,0x95,0x91,0x8C, - 0x89,0x89,0x8A,0x86,0x87,0x8A,0x83,0x85,0x87,0x83,0x7E,0x80,0x81,0x77,0x76,0x7A, - 0x73,0x72,0x75,0x72,0x6F,0x6C,0x6D,0x6B,0x69,0x69,0x67,0x68,0x67,0x66,0x64,0x61, - 0x61,0x63,0x63,0x63,0x61,0x64,0x64,0x62,0x64,0x65,0x63,0x61,0x65,0x66,0x67,0x68, - 0x6A,0x6C,0x69,0x6C,0x6D,0x6E,0x70,0x72,0x74,0x77,0x7C,0x7B,0x7C,0x81,0x83,0x84, - 0x87,0x8B,0x8C,0x8E,0x91,0x92,0x93,0x93,0x95,0x96,0x95,0x95,0x95,0x98,0x96,0x94, - 0x96,0x94,0x92,0x90,0x90,0x91,0x91,0x8E,0x91,0x8D,0x8A,0x8B,0x8A,0x8B,0x89,0x89, - 0x88,0x8A,0x88,0x86,0x87,0x86,0x88,0x88,0x86,0x8A,0x89,0x86,0x8B,0x8B,0x89,0x8A, - 0x8B,0x8A,0x8A,0x8B,0x8A,0x8B,0x8A,0x8A,0x8A,0x88,0x86,0x85,0x86,0x84,0x83,0x81, - 0x7F,0x80,0x7F,0x7D,0x7F,0x80,0x7D,0x7D,0x7C,0x7A,0x7A,0x7A,0x7A,0x7A,0x79,0x79, - 0x79,0x77,0x78,0x77,0x77,0x75,0x73,0x72,0x71,0x72,0x71,0x70,0x70,0x72,0x71,0x6F, - 0x71,0x72,0x70,0x71,0x72,0x71,0x72,0x73,0x74,0x75,0x76,0x75,0x77,0x75,0x75,0x77, - 0x76,0x78,0x78,0x77,0x77,0x79,0x79,0x79,0x7B,0x7D,0x7E,0x80,0x80,0x81,0x83,0x82, - 0x86,0x87,0x88,0x8B,0x89,0x8A,0x8B,0x8C,0x8D,0x8C,0x8B,0x8B,0x89,0x88,0x88,0x86, - 0x85,0x84,0x82,0x80,0x81,0x7F,0x81,0x81,0x7E,0x7F,0x7E,0x7D,0x7D,0x7F,0x7E,0x80, - 0x80,0x80,0x80,0x7F,0x80,0x80,0x82,0x82,0x82,0x81,0x82,0x80,0x80,0x80,0x80,0x82, - 0x81,0x80,0x81,0x81,0x82,0x84,0x83,0x83,0x84,0x84,0x84,0x86,0x86,0x86,0x87,0x85, - 0x85,0x85,0x85,0x85,0x85,0x86,0x83,0x81,0x81,0x7F,0x7E,0x80,0x7E,0x7F,0x7F,0x7F, - 0x80,0x7E,0x7D,0x7F,0x7F,0x7C,0x7D,0x7C,0x7E,0x7F,0x7D,0x7F,0x80,0x7F,0x7C,0x7C, - 0x7C,0x7D,0x7D,0x7D,0x7D,0x7B,0x7A,0x7C,0x78,0x78,0x7C,0x79,0x7A,0x7A,0x7B,0x7C, - 0x7D,0x7E,0x80,0x80,0x80,0x81,0x80,0x83,0x83,0x83,0x87,0x87,0x85,0x87,0x87,0x86, - 0x86,0x87,0x87,0x86,0x84,0x84,0x84,0x82,0x84,0x85,0x84,0x84,0x83,0x83,0x84,0x83, - 0x82,0x83,0x82,0x82,0x81,0x82,0x83,0x81,0x81,0x82,0x81,0x7E,0x7F,0x7F,0x7E,0x80, - 0x7F,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7E,0x7E,0x7F,0x80,0x7F,0x82,0x81,0x81,0x81, - 0x81,0x82,0x82,0x83,0x84,0x85,0x85,0x84,0x83,0x81,0x81,0x81,0x81,0x81,0x80,0x80, - 0x80,0x7E,0x7F,0x7D,0x7D,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7F,0x80,0x81, - 0x81,0x82,0x82,0x83,0x80,0x7F,0x81,0x7D,0x7E,0x80,0x7F,0x7E,0x7E,0x7C,0x7B,0x7C, - 0x7A,0x7A,0x7C,0x7D,0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x81,0x83,0x83,0x84, - 0x84,0x83,0x84,0x83,0x82,0x83,0x83,0x83,0x84,0x84,0x82,0x82,0x81,0x81,0x81,0x81, - 0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x82,0x83,0x82,0x83,0x84,0x84,0x83,0x82, - 0x82,0x81,0x81,0x81,0x81,0x81,0x7F,0x80,0x7E,0x7E,0x7B,0x7B,0x7D,0x7B,0x7C,0x7C, - 0x7D,0x7D,0x7E,0x7D,0x7D,0x7E,0x7F,0x80,0x80,0x82,0x83,0x83,0x84,0x83,0x83,0x84, - 0x83,0x82,0x83,0x83,0x82,0x83,0x82,0x81,0x81,0x80,0x7F,0x7F,0x7D,0x7E,0x7F,0x7F, - 0x7F,0x7E,0x7F,0x7F,0x7F,0x80,0x80,0x80,0x82,0x82,0x82,0x81,0x83,0x82,0x83,0x83, - 0x81,0x81,0x80,0x80,0x80,0x80,0x7F,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7B,0x7C,0x7D, - 0x7C,0x7C,0x7D,0x7C,0x7C,0x7E,0x7E,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x81, - 0x82,0x82,0x82,0x81,0x82,0x82,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x7F, - 0x7E,0x7F,0x7F,0x7F,0x81,0x80,0x7F,0x80,0x81,0x7F,0x80,0x81,0x80,0x81,0x81,0x80, - 0x80,0x82,0x80,0x80,0x7F,0x7E,0x7E,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7B,0x7B,0x7B, - 0x7B,0x7C,0x7C,0x7C,0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x82, - 0x83,0x83,0x83,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x7F,0x7E,0x7E,0x7E,0x7E, - 0x7D,0x7E,0x7E,0x7D,0x7E,0x7D,0x7D,0x7E,0x7E,0x7D,0x7F,0x80,0x7F,0x80,0x82,0x80, - 0x81,0x82,0x80,0x81,0x81,0x81,0x81,0x82,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7D, - 0x7D,0x7E,0x7D,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x81,0x81,0x81, - 0x82,0x81,0x82,0x82,0x82,0x82,0x83,0x83,0x83,0x82,0x82,0x82,0x81,0x82,0x81,0x81, - 0x80,0x80,0x7F,0x7F,0x7F,0x7E,0x7E,0x7D,0x7D,0x7D,0x7E,0x7E,0x7D,0x7D,0x7E,0x7E, - 0x7E,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x7F,0x80,0x81,0x80,0x80,0x81,0x81,0x80, - 0x80,0x80,0x7F,0x7F,0x7F,0x7E,0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F,0x7E,0x7F, - 0x81,0x81,0x81,0x82,0x83,0x82,0x83,0x83,0x82,0x83,0x83,0x83,0x82,0x83,0x82,0x81, - 0x82,0x82,0x81,0x82,0x82,0x81,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x7F,0x80,0x7F,0x81,0x80,0x81,0x82,0x82,0x93,0x85,0x86,0x85,0x64,0x7E,0x82,0x6B, - 0x69,0x76,0x7F,0x85,0x8A,0x8B,0x8C,0x88,0x95,0xA1,0xA0,0xA8,0x9F,0x91,0x88,0x75, - 0x88,0x91,0x6D,0x6B,0x75,0x68,0x59,0x59,0x54,0x51,0x5F,0x5E,0x5D,0x54,0x64,0x6F, - 0x6D,0x79,0x6F,0x97,0xAB,0x8C,0x95,0xA2,0x93,0xA7,0xA2,0x91,0xC3,0xA0,0xA1,0xB7, - 0x99,0xB5,0xAC,0x90,0x8E,0x8B,0x93,0x8F,0x7A,0x80,0x73,0x6C,0x7A,0x6B,0x86,0x91, - 0x6A,0x7C,0x87,0x77,0x87,0x67,0x44,0x68,0x6D,0x66,0x6C,0x59,0x50,0x59,0x60,0x62, - 0x64,0x7D,0x87,0x92,0x9D,0x92,0x89,0x8A,0x89,0x80,0x8F,0xA3,0xB3,0xB7,0x9D,0x99, - 0xB2,0xA4,0xA7,0xA4,0x8F,0x97,0x8D,0x88,0x7E,0x7E,0x81,0x6A,0x65,0x64,0x6C,0x6D, - 0x59,0x55,0x4B,0x4B,0x51,0x44,0x3D,0x40,0x47,0x3B,0x37,0x49,0x58,0x5A,0x5D,0x74, - 0x81,0x85,0xA2,0xB2,0xA0,0x9C,0x8C,0x8E,0x9F,0x9A,0x9E,0xA0,0xA2,0xBD,0xCC,0xD2, - 0xD2,0xC1,0xC5,0xC7,0xB1,0xB2,0xAA,0x89,0x81,0x7C,0x7A,0x8A,0x7F,0x6F,0x69,0x5E, - 0x5D,0x68,0x66,0x60,0x56,0x4B,0x67,0x69,0x5D,0x63,0x62,0x6E,0x6B,0x66,0x64,0x60, - 0x73,0x78,0x81,0x86,0x82,0x96,0xA0,0x9A,0xA4,0x96,0x8A,0x94,0x8B,0x9C,0x9D,0x8F, - 0x8F,0x8B,0x92,0x8E,0x91,0x94,0x87,0x97,0x94,0x91,0xA7,0x9C,0x91,0x96,0x97,0x95, - 0x91,0x8D,0x75,0x68,0x71,0x72,0x7C,0x6F,0x6B,0x81,0x82,0x7C,0x64,0x4C,0x51,0x57, - 0x63,0x6C,0x59,0x49,0x47,0x44,0x46,0x54,0x5A,0x4C,0x49,0x47,0x4A,0x4A,0x4E,0x5B, - 0x63,0x7F,0x92,0x94,0x88,0x72,0x7E,0x93,0x8E,0x9B,0xA2,0xA0,0xA9,0x8F,0x7E,0x84, - 0x80,0x7F,0xA2,0xBB,0xA8,0xA6,0xB1,0xB7,0xBC,0xB1,0xB7,0xBC,0xB9,0xB9,0xAD,0xA2, - 0x99,0x8D,0x94,0xAC,0xAF,0x9F,0x8C,0x80,0x80,0x82,0x8A,0x83,0x7D,0x83,0x92,0x7D, - 0x6E,0x6C,0x5C,0x6B,0x65,0x61,0x64,0x5E,0x5F,0x61,0x65,0x5E,0x60,0x6B,0x66,0x67, - 0x79,0x60,0x52,0x60,0x51,0x59,0x5E,0x59,0x66,0x70,0x72,0x70,0x72,0x70,0x78,0x73, - 0x79,0x81,0x83,0x87,0x8D,0x98,0x9A,0xA1,0x99,0x91,0x9D,0x9E,0x8F,0x8B,0x90,0x8D, - 0x8B,0x7C,0x80,0x95,0x8D,0x87,0x84,0x7F,0x76,0x73,0x71,0x65,0x73,0x78,0x78,0x8C, - 0x90,0x8F,0x97,0x95,0x88,0x83,0x78,0x6A,0x6C,0x69,0x6C,0x79,0x81,0x70,0x69,0x70, - 0x6A,0x73,0x79,0x6B,0x6B,0x74,0x78,0x78,0x7B,0x7C,0x76,0x7E,0x7A,0x77,0x8C,0x8B, - 0x8C,0x84,0x80,0x92,0x8F,0x90,0x93,0x8F,0x8B,0x87,0x91,0x91,0x91,0xAB,0xAD,0x9B, - 0x9F,0xAC,0xA7,0xA0,0x99,0x93,0xAF,0xBC,0xB2,0xB7,0xAA,0xA4,0xA9,0xAC,0xAA,0x97, - 0x8E,0x96,0x99,0x91,0x84,0x90,0x95,0x84,0x7D,0x74,0x6D,0x53,0x43,0x45,0x41,0x49, - 0x49,0x51,0x60,0x67,0x60,0x59,0x58,0x49,0x4F,0x55,0x53,0x51,0x50,0x57,0x51,0x46, - 0x43,0x4F,0x54,0x52,0x5E,0x5C,0x5A,0x63,0x5A,0x64,0x71,0x6B,0x7B,0x90,0x9E,0xA7, - 0xA2,0xA6,0x9F,0x9D,0xA9,0xAE,0xB2,0xAC,0xAB,0xAD,0xA4,0x9B,0x99,0xA0,0xA4,0x8E, - 0x8E,0x93,0x7F,0x88,0x8E,0x83,0x87,0x84,0x89,0xA2,0x9E,0x86,0x8B,0x8E,0x8C,0xA1, - 0x9F,0x96,0x99,0x90,0x9F,0xAC,0x9E,0x94,0x8E,0x95,0x95,0x87,0x88,0x89,0x81,0x80, - 0x81,0x86,0x85,0x83,0x81,0x88,0x89,0x82,0x86,0x85,0x82,0x76,0x6F,0x76,0x6D,0x77, - 0x91,0x87,0x7A,0x64,0x70,0x8A,0x75,0x6B,0x5E,0x4D,0x49,0x54,0x5F,0x5C,0x5F,0x58, - 0x59,0x69,0x67,0x5B,0x5B,0x58,0x5E,0x5F,0x5C,0x6C,0x6D,0x69,0x6C,0x72,0x74,0x70, - 0x81,0x8C,0x7A,0x75,0x7E,0x7A,0x7B,0x82,0x84,0x84,0x89,0x90,0x99,0xA9,0xA5,0xAB, - 0xB8,0xB6,0xB6,0xAF,0xA8,0xAB,0xA7,0xA5,0xA5,0x99,0x8B,0x87,0x9D,0xAC,0x99,0x93, - 0x98,0x89,0x80,0x83,0x82,0x7B,0x79,0x7C,0x88,0x86,0x75,0x75,0x7B,0x80,0x7C,0x73, - 0x7B,0x8D,0x89,0x87,0x81,0x6E,0x72,0x70,0x78,0x7D,0x63,0x6A,0x77,0x72,0x6F,0x68, - 0x63,0x6C,0x72,0x6D,0x7E,0x7C,0x64,0x69,0x73,0x78,0x7C,0x74,0x7B,0x86,0x7C,0x83, - 0x84,0x72,0x6A,0x6D,0x7C,0x78,0x6D,0x73,0x70,0x6A,0x69,0x69,0x6C,0x74,0x72,0x71, - 0x75,0x6C,0x65,0x6D,0x7B,0x7D,0x6E,0x6C,0x77,0x79,0x7E,0x83,0x7D,0x76,0x73,0x78, - 0x89,0x80,0x6F,0x78,0x80,0x83,0x84,0x84,0x89,0x8D,0x94,0x9D,0xAC,0xAD,0xA6,0xAE, - 0xB3,0xB8,0xAB,0xA3,0xB5,0xB5,0xA9,0xAB,0xAA,0xA5,0x9A,0x95,0xA0,0x90,0x7F,0x88, - 0x85,0x7A,0x74,0x72,0x7C,0x7E,0x77,0x80,0x87,0x80,0x79,0x73,0x75,0x77,0x6F,0x67, - 0x76,0x7B,0x6F,0x74,0x74,0x79,0x7B,0x7C,0x89,0x7E,0x74,0x7D,0x82,0x6E,0x65,0x6A, - 0x6E,0x74,0x70,0x73,0x7F,0x7B,0x7B,0x85,0x81,0x7A,0x6D,0x67,0x72,0x72,0x6C,0x67, - 0x61,0x63,0x67,0x70,0x7C,0x71,0x6B,0x7C,0x79,0x66,0x59,0x5F,0x67,0x64,0x69,0x75, - 0x7D,0x76,0x7A,0x7C,0x6E,0x69,0x60,0x66,0x71,0x68,0x6C,0x69,0x61,0x6B,0x6F,0x82, - 0x8C,0x76,0x7B,0x8D,0x85,0x77,0x76,0x7D,0x87,0x8F,0x90,0x9E,0xA5,0xA8,0xB6,0xBB, - 0xB7,0xAF,0xAE,0xB6,0xBE,0xB4,0xAA,0xAE,0xAB,0xA2,0xA5,0xBA,0xAC,0x9D,0xA6,0xA1, - 0x9A,0x8C,0x8B,0x91,0x84,0x82,0x90,0x90,0x8B,0x8B,0x89,0x87,0x83,0x7C,0x7C,0x88, - 0x86,0x81,0x87,0x8A,0x87,0x7B,0x89,0x96,0x81,0x88,0x92,0x86,0x79,0x73,0x83,0x80, - 0x77,0x83,0x88,0x85,0x7B,0x7B,0x78,0x70,0x6C,0x5F,0x6B,0x70,0x66,0x68,0x68,0x68, - 0x5C,0x6D,0x7E,0x70,0x5F,0x5B,0x66,0x67,0x4C,0x43,0x6E,0x51,0x3A,0x5C,0x57,0x55, - 0x5A,0x6B,0x63,0x45,0x49,0x59,0x58,0x49,0x54,0x53,0x44,0x42,0x57,0x71,0x68,0x6A, - 0x7B,0x7A,0x62,0x5D,0x68,0x6E,0x6E,0x77,0x8A,0x8B,0x8F,0x94,0x9C,0xA9,0xAB,0xAC, - 0xAC,0xB2,0xBC,0xB9,0xB7,0xB4,0xA9,0xB2,0xC8,0xBC,0xB0,0xBA,0xAF,0xA6,0xA1,0x94, - 0x9D,0x98,0x86,0x94,0xA1,0x97,0x8D,0x8C,0x90,0x97,0x95,0x8A,0x8A,0x90,0x96,0x99, - 0x9C,0x9C,0x98,0xB1,0xB4,0xAD,0xB4,0xAE,0xA8,0x9B,0x95,0x9A,0x95,0x8B,0x98,0xA1, - 0x95,0x96,0x93,0x90,0x93,0x84,0x81,0x85,0x7D,0x7D,0x75,0x77,0x75,0x68,0x80,0x84, - 0x77,0x7E,0x7F,0x79,0x6E,0x65,0x62,0x61,0x55,0x56,0x64,0x60,0x56,0x51,0x54,0x60, - 0x58,0x4C,0x4C,0x49,0x46,0x40,0x40,0x42,0x3A,0x51,0x60,0x4D,0x54,0x54,0x4F,0x57, - 0x4B,0x4C,0x57,0x48,0x48,0x59,0x5C,0x64,0x68,0x66,0x72,0x84,0x89,0x83,0x82,0x8A, - 0x90,0x8E,0x96,0x93,0x90,0xA1,0x9C,0x94,0x99,0x97,0x92,0x96,0x92,0x90,0x96,0x8A, - 0x83,0x8D,0x8D,0x8D,0x8C,0x83,0x87,0x88,0x89,0x8A,0x85,0x8B,0x8D,0x8F,0x99,0x92, - 0x98,0xA9,0xA0,0xA2,0xAB,0xA7,0xA7,0xA8,0xA2,0xAA,0xA8,0x96,0x9D,0xA1,0xA2,0xB0, - 0xA6,0xA3,0xAA,0xA0,0xA4,0xA3,0x99,0x9A,0x8E,0x92,0x98,0x87,0x95,0x9A,0x8D,0x96, - 0x94,0x93,0x92,0x83,0x82,0x83,0x72,0x70,0x76,0x74,0x78,0x74,0x71,0x76,0x6D,0x66, - 0x67,0x60,0x5E,0x56,0x51,0x58,0x4A,0x53,0x6E,0x64,0x65,0x6F,0x6B,0x70,0x64,0x60, - 0x70,0x67,0x5D,0x6C,0x72,0x73,0x75,0x76,0x86,0x8B,0x83,0x8B,0x8D,0x87,0x88,0x8B, - 0x90,0x86,0x86,0x9B,0x95,0x94,0x9D,0x8F,0x87,0x79,0x72,0x7F,0x6F,0x60,0x6A,0x70, - 0x72,0x72,0x70,0x7D,0x7B,0x6F,0x79,0x74,0x6C,0x6D,0x70,0x7A,0x71,0x76,0x8C,0x81, - 0x84,0x96,0x92,0x8D,0x83,0x81,0x8D,0x82,0x7A,0x87,0x84,0x87,0x91,0x92,0x95,0x8D, - 0x88,0x8F,0x88,0x81,0x7E,0x80,0x84,0x77,0x82,0x94,0x84,0x87,0x95,0x90,0x8A,0x7E, - 0x79,0x7B,0x6E,0x6D,0x7B,0x78,0x71,0x73,0x7B,0x7E,0x74,0x71,0x73,0x68,0x62,0x61, - 0x60,0x60,0x55,0x61,0x78,0x66,0x68,0x78,0x6F,0x66,0x5F,0x67,0x6A,0x5B,0x65,0x76, - 0x6F,0x71,0x80,0x88,0x8C,0x84,0x8B,0x93,0x8A,0x8E,0x94,0x93,0x98,0x93,0xA2,0xBB, - 0xA6,0xA2,0xB7,0xAB,0xA1,0x9D,0x9A,0x96,0x82,0x83,0x90,0x81,0x7B,0x84,0x89,0x88, - 0x7F,0x80,0x7E,0x70,0x73,0x79,0x74,0x74,0x6E,0x76,0x93,0x83,0x7F,0x9C,0x90,0x86, - 0x8D,0x8C,0x85,0x79,0x7F,0x8D,0x87,0x82,0x91,0x96,0x91,0x97,0x9B,0x96,0x86,0x85, - 0x8B,0x82,0x82,0x82,0x77,0x8E,0x92,0x7F,0x95,0x92,0x83,0x85,0x7D,0x7A,0x70,0x6C, - 0x7A,0x76,0x6B,0x78,0x80,0x7B,0x7D,0x7F,0x7A,0x71,0x6B,0x6F,0x68,0x64,0x6D,0x62, - 0x67,0x7E,0x6C,0x72,0x85,0x74,0x72,0x75,0x6F,0x6D,0x62,0x66,0x76,0x70,0x71,0x82, - 0x88,0x85,0x8C,0x92,0x8C,0x8A,0x8B,0x89,0x84,0x89,0x90,0x84,0x92,0xA0,0x8B,0x99, - 0xA5,0x90,0x8C,0x91,0x89,0x7E,0x79,0x80,0x80,0x76,0x7A,0x82,0x7D,0x80,0x89,0x82, - 0x79,0x79,0x79,0x72,0x6C,0x75,0x76,0x6A,0x7E,0x8B,0x76,0x83,0x95,0x82,0x7D,0x88, - 0x82,0x75,0x74,0x7E,0x7D,0x73,0x7E,0x8C,0x84,0x89,0x94,0x8C,0x85,0x86,0x85,0x7F, - 0x7D,0x7D,0x80,0x77,0x7F,0x97,0x7D,0x7C,0x99,0x88,0x7A,0x8A,0x85,0x72,0x74,0x7C, - 0x79,0x72,0x7B,0x82,0x7B,0x7D,0x89,0x83,0x7C,0x84,0x82,0x77,0x78,0x79,0x7A,0x75, - 0x73,0x8B,0x81,0x71,0x8F,0x88,0x70,0x7F,0x81,0x6F,0x73,0x7A,0x75,0x71,0x78,0x7F, - 0x7B,0x7E,0x8A,0x87,0x80,0x8C,0x8C,0x83,0x85,0x88,0x86,0x8A,0x84,0x85,0x9A,0x89, - 0x87,0x9E,0x8A,0x82,0x96,0x88,0x7A,0x82,0x7D,0x78,0x7B,0x7C,0x7E,0x7C,0x7F,0x83, - 0x7E,0x7F,0x83,0x7A,0x77,0x7C,0x7C,0x79,0x7B,0x76,0x6F,0x87,0x83,0x74,0x8A,0x86, - 0x76,0x86,0x85,0x74,0x7C,0x7E,0x78,0x79,0x7D,0x81,0x7D,0x7D,0x88,0x86,0x81,0x8A, - 0x8A,0x82,0x85,0x84,0x80,0x83,0x84,0x7D,0x77,0x89,0x84,0x77,0x8D,0x88,0x75,0x80, - 0x84,0x72,0x76,0x7E,0x71,0x6F,0x7A,0x79,0x75,0x7A,0x7E,0x7D,0x7C,0x82,0x81,0x7E, - 0x80,0x7F,0x7D,0x7F,0x7E,0x7C,0x77,0x80,0x86,0x7A,0x86,0x8D,0x7E,0x7F,0x88,0x7A, - 0x78,0x81,0x7B,0x78,0x80,0x7F,0x7C,0x82,0x86,0x86,0x88,0x8B,0x89,0x8A,0x8D,0x8A, - 0x87,0x87,0x84,0x83,0x86,0x80,0x80,0x8A,0x84,0x83,0x8E,0x85,0x81,0x86,0x7E,0x79, - 0x7B,0x79,0x76,0x7A,0x7C,0x78,0x7C,0x80,0x7E,0x7E,0x84,0x82,0x80,0x83,0x81,0x7D, - 0x7E,0x7F,0x79,0x7B,0x85,0x7E,0x7F,0x8B,0x84,0x7F,0x87,0x81,0x76,0x7B,0x7C,0x79, - 0x7C,0x7F,0x7D,0x81,0x84,0x83,0x86,0x87,0x86,0x88,0x8A,0x87,0x85,0x85,0x83,0x82, - 0x82,0x83,0x82,0x7F,0x81,0x82,0x7F,0x7F,0x7C,0x79,0x7A,0x7B,0x79,0x79,0x7A,0x7B, - 0x7E,0x7F,0x7F,0x80,0x82,0x84,0x84,0x84,0x84,0x83,0x83,0x83,0x83,0x85,0x83,0x81, - 0x85,0x86,0x83,0x84,0x85,0x82,0x82,0x83,0x7F,0x7D,0x7E,0x7F,0x7F,0x81,0x80,0x7F, - 0x82,0x82,0x82,0x82,0x82,0x81,0x83,0x83,0x82,0x81,0x81,0x80,0x81,0x81,0x7F,0x7E, - 0x7E,0x7D,0x7D,0x7E,0x7E,0x7D,0x7B,0x7B,0x7A,0x77,0x77,0x7A,0x79,0x7A,0x7B,0x7B, - 0x7B,0x7C,0x7F,0x80,0x7F,0x80,0x82,0x81,0x81,0x82,0x81,0x81,0x80,0x82,0x80,0x80, - 0x82,0x81,0x81,0x81,0x81,0x81,0x80,0x7F,0x80,0x80,0x7F,0x7E,0x7F,0x80,0x80,0x80, - 0x80,0x80,0x81,0x81,0x80,0x80,0x82,0x82,0x82,0x82,0x7F,0x7F,0x7F,0x81,0x80,0x7E, - 0x7F,0x7F,0x7D,0x7C,0x7D,0x7E,0x7E,0x7E,0x80,0x7F,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F, - 0x80,0x7F,0x7D,0x80,0x82,0x81,0x7F,0x7F,0x7F,0x80,0x84,0x83,0x7F,0x80,0x85,0x84, - 0x82,0x81,0x7F,0x81,0x83,0x80,0x7C,0x7A,0x7B,0x7F,0x7F,0x7D,0x7E,0x7F,0x80,0x7C, - 0x7B,0x7D,0x7E,0x7F,0x7F,0x82,0x82,0x7D,0x80,0x83,0x82,0x83,0x7F,0x80,0x83,0x80, - 0x7D,0x7F,0x80,0x7D,0x7F,0x7D,0x7F,0x7F,0x80,0x82,0x83,0x80,0x7D,0x7B,0x77,0x79, - 0x7A,0x7D,0x7D,0x7E,0x7F,0x7C,0x7F,0x82,0x7F,0x82,0x86,0x84,0x82,0x84,0x8B,0x85, - 0x83,0x86,0x89,0x81,0x7F,0x85,0x81,0x80,0x82,0x82,0x82,0x83,0x81,0x80,0x83,0x7F, - 0x7C,0x7C,0x7C,0x7B,0x74,0x7B,0x81,0x7B,0x7F,0x80,0x7D,0x7E,0x7E,0x7F,0x81,0x80, - 0x7B,0x82,0x82,0x83,0x85,0x84,0x87,0x84,0x84,0x84,0x83,0x7F,0x84,0x88,0x83,0x86, - 0x85,0x81,0x85,0x86,0x82,0x80,0x83,0x82,0x7D,0x81,0x85,0x7F,0x83,0x86,0x7E,0x7F, - 0x81,0x7D,0x7E,0x82,0x7D,0x7F,0x81,0x7B,0x7A,0x7F,0x80,0x7E,0x80,0x7F,0x7F,0x7E, - 0x7C,0x81,0x80,0x82,0x84,0x83,0x80,0x80,0x81,0x80,0x82,0x81,0x7D,0x7E,0x80,0x81, - 0x82,0x87,0x83,0x7D,0x81,0x7C,0x7D,0x7F,0x81,0x7F,0x80,0x80,0x81,0x86,0x81,0x83, - 0x82,0x7F,0x7E,0x7D,0x82,0x82,0x82,0x82,0x81,0x81,0x82,0x84,0x80,0x82,0x81,0x7E, - 0x81,0x7D,0x7E,0x7F,0x7F,0x82,0x7E,0x7F,0x80,0x7E,0x7C,0x7E,0x7E,0x7E,0x7E,0x80, - 0x83,0x82,0x81,0x81,0x80,0x7F,0x83,0x81,0x84,0x85,0x81,0x83,0x86,0x82,0x83,0x85, - 0x83,0x83,0x83,0x83,0x81,0x85,0x85,0x81,0x83,0x83,0x7D,0x7D,0x80,0x7D,0x7E,0x80, - 0x7C,0x7D,0x7F,0x80,0x7F,0x7B,0x7C,0x7F,0x7C,0x7D,0x7D,0x7E,0x7E,0x80,0x7E,0x80, - 0x7F,0x7E,0x81,0x82,0x83,0x80,0x80,0x80,0x7E,0x7C,0x7F,0x7F,0x7D,0x82,0x81,0x7D, - 0x82,0x81,0x80,0x83,0x7F,0x81,0x80,0x82,0x80,0x7F,0x81,0x7F,0x83,0x80,0x82,0x86, - 0x80,0x83,0x83,0x81,0x84,0x85,0x84,0x82,0x81,0x81,0x7F,0x82,0x80,0x82,0x83,0x83, - 0x84,0x80,0x84,0x83,0x7D,0x80,0x7D,0x7C,0x7E,0x80,0x81,0x7D,0x7D,0x82,0x7F,0x7C, - 0x80,0x80,0x7E,0x80,0x7E,0x7C,0x7E,0x7E,0x7E,0x7E,0x80,0x81,0x81,0x81,0x81,0x83, - 0x84,0x86,0x83,0x81,0x85,0x83,0x81,0x80,0x82,0x84,0x7F,0x82,0x81,0x7E,0x82,0x80, - 0x7E,0x7C,0x7C,0x80,0x7E,0x7E,0x7F,0x7E,0x80,0x81,0x7C,0x7D,0x80,0x7C,0x7F,0x7F, - 0x7F,0x82,0x83,0x85,0x82,0x82,0x84,0x84,0x82,0x80,0x84,0x80,0x80,0x83,0x80,0x80, - 0x80,0x81,0x80,0x7F,0x81,0x7E,0x7E,0x80,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x7C,0x7A, - 0x7F,0x80,0x80,0x7F,0x81,0x81,0x80,0x80,0x7D,0x80,0x81,0x82,0x82,0x81,0x81,0x83, - 0x81,0x81,0x82,0x80,0x80,0x80,0x81,0x82,0x81,0x81,0x82,0x80,0x80,0x80,0x7E,0x81, - 0x7F,0x7C,0x7D,0x7B,0x7D,0x7C,0x7F,0x7F,0x7D,0x81,0x81,0x80,0x82,0x7F,0x7E,0x7F, - 0x7F,0x7F,0x80,0x82,0x7F,0x82,0x82,0x82,0x83,0x81,0x81,0x80,0x80,0x81,0x7F,0x7E, - 0x80,0x80,0x83,0x82,0x81,0x82,0x81,0x7D,0x7E,0x7E,0x7D,0x7E,0x7E,0x7F,0x7E,0x7F, - 0x80,0x7F,0x7E,0x7B,0x7F,0x80,0x7E,0x7F,0x80,0x81,0x7E,0x7F,0x7F,0x7F,0x81,0x82, - 0x81,0x7F,0x81,0x84,0x82,0x82,0x81,0x81,0x83,0x80,0x7F,0x7D,0x7F,0x80,0x7C,0x7E, - 0x7E,0x7F,0x82,0x80,0x7F,0x80,0x7E,0x80,0x7F,0x7D,0x7D,0x80,0x80,0x7E,0x80,0x82, - 0x81,0x80,0x83,0x82,0x7F,0x81,0x83,0x7E,0x80,0x83,0x7D,0x81,0x83,0x7F,0x81,0x82, - 0x81,0x82,0x82,0x81,0x7F,0x82,0x83,0x80,0x7E,0x80,0x80,0x7D,0x80,0x7F,0x7E,0x7F, - 0x80,0x81,0x81,0x81,0x81,0x80,0x7E,0x7E,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7F, - 0x81,0x81,0x81,0x81,0x80,0x81,0x81,0x7E,0x81,0x81,0x7D,0x7E,0x7F,0x7C,0x7C,0x7F, - 0x7E,0x7D,0x7E,0x7D,0x7D,0x80,0x7E,0x7F,0x81,0x7F,0x81,0x81,0x81,0x7E,0x81,0x82, - 0x7F,0x83,0x80,0x81,0x83,0x80,0x81,0x84,0x83,0x83,0x81,0x82,0x82,0x80,0x81,0x80, - 0x80,0x82,0x80,0x80,0x83,0x81,0x7D,0x7F,0x7F,0x7D,0x80,0x82,0x7C,0x7F,0x80,0x7B, - 0x7E,0x81,0x7F,0x7E,0x7F,0x7F,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x82,0x82,0x81, - 0x7F,0x81,0x80,0x7D,0x7F,0x81,0x80,0x7F,0x82,0x7F,0x7F,0x82,0x81,0x7E,0x80,0x81, - 0x7C,0x81,0x7E,0x7F,0x80,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x80,0x7D,0x80,0x7F, - 0x7F,0x7F,0x80,0x82,0x81,0x80,0x7F,0x81,0x7F,0x7F,0x81,0x7F,0x7E,0x80,0x7F,0x7E, - 0x7F,0x7F,0x81,0x80,0x7E,0x81,0x81,0x7F,0x81,0x80,0x7F,0x81,0x81,0x7F,0x82,0x81, - 0x81,0x83,0x80,0x81,0x82,0x81,0x81,0x81,0x80,0x80,0x81,0x81,0x80,0x7F,0x82,0x81, - 0x81,0x83,0x81,0x82,0x82,0x81,0x7F,0x81,0x81,0x81,0x81,0x80,0x81,0x7F,0x80,0x7F, - 0x7F,0x7F,0x7F,0x7E,0x80,0x80,0x7F,0x81,0x81,0x82,0x82,0x7E,0x7E,0x80,0x7E,0x80, - 0x81,0x81,0x81,0x80,0x83,0x81,0x80,0x81,0x82,0x7F,0x82,0x82,0x7E,0x81,0x7F,0x7F, - 0x80,0x81,0x7E,0x7E,0x81,0x7F,0x83,0x81,0x81,0x81,0x80,0x82,0x80,0x80,0x81,0x7E, - 0x80,0x85,0x7F,0x80,0x84,0x81,0x82,0x83,0x82,0x81,0x82,0x81,0x81,0x83,0x82,0x81, - 0x83,0x87,0x8F,0x80,0x68,0x7A,0x8B,0x8B,0x76,0x87,0x8C,0x6C,0x7C,0x82,0x7D,0x81, - 0x8B,0x90,0x7E,0x81,0x89,0x86,0x79,0x7B,0x8B,0x7C,0x71,0x75,0x7D,0x83,0x81,0x82, - 0x89,0x7C,0x72,0x7C,0x76,0x79,0x7C,0x7F,0x81,0x84,0x85,0x81,0x88,0x89,0x8C,0x89, - 0x81,0x85,0x86,0x85,0x87,0x81,0x81,0x85,0x7E,0x7F,0x85,0x81,0x7C,0x81,0x7A,0x7A, - 0x83,0x7B,0x7A,0x7B,0x7A,0x78,0x77,0x7B,0x81,0x88,0x86,0x7B,0x7B,0x85,0x84,0x82, - 0x8D,0x89,0x81,0x84,0x86,0x83,0x80,0x85,0x85,0x81,0x80,0x7F,0x7F,0x83,0x86,0x7E, - 0x78,0x7B,0x7E,0x7A,0x7A,0x80,0x7A,0x79,0x7C,0x7F,0x80,0x7C,0x78,0x7C,0x80,0x79, - 0x7D,0x7E,0x84,0x89,0x84,0x82,0x7E,0x7F,0x83,0x86,0x88,0x86,0x7F,0x80,0x86,0x85, - 0x85,0x84,0x81,0x7E,0x79,0x7C,0x7D,0x7C,0x80,0x7F,0x7A,0x7A,0x7D,0x7E,0x81,0x80, - 0x7F,0x7F,0x7A,0x7E,0x83,0x81,0x81,0x7F,0x80,0x81,0x82,0x83,0x7F,0x7F,0x82,0x81, - 0x80,0x84,0x82,0x84,0x83,0x81,0x80,0x7E,0x80,0x80,0x80,0x7C,0x7C,0x7F,0x81,0x80, - 0x7F,0x82,0x83,0x82,0x7F,0x7C,0x7B,0x7A,0x7C,0x7F,0x7F,0x7D,0x7C,0x7F,0x80,0x80, - 0x7E,0x82,0x84,0x7E,0x7C,0x7E,0x81,0x7F,0x7C,0x7F,0x81,0x81,0x81,0x80,0x84,0x86, - 0x82,0x80,0x7C,0x7C,0x7D,0x7C,0x7D,0x7B,0x7B,0x7B,0x7E,0x7F,0x7F,0x82,0x83,0x81, - 0x82,0x83,0x81,0x81,0x81,0x7F,0x80,0x81,0x83,0x81,0x84,0x86,0x82,0x81,0x7F,0x80, - 0x81,0x7F,0x7E,0x7E,0x7E,0x7C,0x7C,0x80,0x81,0x82,0x81,0x81,0x83,0x7E,0x7E,0x80, - 0x81,0x80,0x80,0x82,0x82,0x80,0x81,0x80,0x81,0x80,0x80,0x7E,0x7F,0x7F,0x7D,0x7E, - 0x7E,0x7E,0x7F,0x7F,0x80,0x82,0x80,0x7D,0x7D,0x7E,0x7F,0x7F,0x7E,0x7E,0x80,0x80, - 0x7F,0x7F,0x81,0x83,0x7F,0x7F,0x7F,0x7D,0x7E,0x7F,0x82,0x82,0x83,0x82,0x80,0x80, - 0x82,0x82,0x80,0x81,0x82,0x7F,0x7E,0x80,0x80,0x80,0x81,0x82,0x80,0x80,0x81,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x82,0x80,0x7E,0x81,0x81,0x80,0x80,0x81,0x7F, - 0x7E,0x80,0x7E,0x80,0x82,0x82,0x82,0x80,0x7E,0x7F,0x82,0x80,0x7C,0x7F,0x7E,0x7F, - 0x80,0x7E,0x7E,0x7F,0x81,0x81,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x7F,0x80,0x81,0x81, - 0x81,0x83,0x80,0x7F,0x80,0x7E,0x81,0x80,0x81,0x7F,0x7D,0x80,0x7F,0x81,0x82,0x81, - 0x82,0x81,0x7F,0x80,0x82,0x81,0x83,0x82,0x80,0x82,0x82,0x81,0x83,0x82,0x82,0x83, - 0x81,0x83,0x81,0x7F,0x82,0x83,0x81,0x81,0x81,0x82,0x81,0x80,0x83,0x81,0x7F,0x80, - 0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x81,0x7F,0x81,0x83,0x80,0x80,0x80,0x82, - 0x81,0x81,0x82,0x80,0x7F,0x82,0x82,0x82,0x84,0x82,0x7F,0x80,0x80,0x7F,0x80,0x81, - 0x81,0x81,0x7F,0x80,0x81,0x81,0x81,0x81,0x81,0x7F,0x7F,0x80,0x7F,0x7E,0x82,0x80, - 0x7E,0x7F,0x7F,0x81,0x82,0x83,0x80,0x82,0x83,0x80,0x81,0x82,0x82,0x81,0x81,0x82, - 0x81,0x80,0x82,0x82,0x83,0x84,0x81,0x81,0x82,0x7F,0x80,0x81,0x7D,0x7D,0x7F,0x81, - 0x81,0x80,0x81,0x80,0x7E,0x80,0x82,0x81,0x80,0x80,0x80,0x80,0x80,0x7F,0x82,0x81, - 0x81,0x81,0x80,0x80,0x80,0x81,0x80,0x7F,0x7F,0x80,0x7E,0x7D,0x7F,0x80,0x7F,0x7D, - 0x7F,0x7F,0x7E,0x7E,0x80,0x80,0x7C,0x7F,0x80,0x7F,0x80,0x81,0x82,0x81,0x81,0x80, - 0x7F,0x7F,0x7F,0x7F,0x80,0x7E,0x7C,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x81,0x80,0x7F, - 0x82,0x81,0x81,0x80,0x80,0x7F,0x80,0x80,0x81,0x80,0x81,0x80,0x7D,0x7E,0x7F,0x7E, - 0x7F,0x80,0x7D,0x7D,0x7F,0x7E,0x7E,0x7F,0x80,0x81,0x80,0x80,0x81,0x7F,0x7F,0x80, - 0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7E,0x7F,0x80,0x7E,0x7F,0x80,0x7F,0x7F, - 0x7E,0x7D,0x7D,0x7D,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x81,0x80, - 0x7F,0x7F,0x7E,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x81,0x7F,0x80,0x80,0x7E,0x7E, - 0x7F,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x7F,0x7E, - 0x80,0x7F,0x7E,0x80,0x80,0x7F,0x80,0x81,0x80,0x80,0x81,0x7F,0x80,0x81,0x80,0x80, - 0x7F,0x7F,0x80,0x7F,0x80,0x80,0x80,0x81,0x80,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F, - 0x80,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x80,0x80,0x81,0x80,0x80,0x82,0x81,0x80, - 0x82,0x82,0x80,0x7F,0x81,0x81,0x7F,0x80,0x81,0x80,0x7E,0x7F,0x80,0x7F,0x80,0x80, - 0x80,0x80,0x80,0x81,0x81,0x81,0x82,0x81,0x80,0x81,0x7F,0x80,0x82,0x81,0x81,0x81, - 0x80,0x81,0x81,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x81,0x80,0x82,0x81,0x80,0x80, - 0x7F,0x7F,0x7F,0x80,0x7F,0x80,0x81,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x82, - 0x81,0x82,0x83,0x82,0x82,0x82,0x83,0x82,0x81,0x82,0x81,0x80,0x80,0x80,0x80,0x80, - 0x7F,0x80,0x81,0x80,0x7F,0x80,0x81,0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x82, - 0x82,0x81,0x81,0x81,0x82,0x83,0x82,0x82,0x83,0x83,0x82,0x81,0x82,0x81,0x81,0x82, - 0x81,0x81,0x82,0x82,0x81,0x82,0x81,0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x80,0x80, - 0x80,0x80,0x81,0x81,0x80,0x82,0x81,0x81,0x81,0x82,0x81,0x81,0x82,0x81,0x82,0x82, - 0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x81,0x81,0x7F,0x7F,0x81, - 0x80,0x80,0x81,0x80,0x7F,0x80,0x80,0x7F,0x80,0x80,0x80,0x81,0x81,0x80,0x80,0x80, - 0x81,0x81,0x81,0x81,0x81,0x80,0x82,0x7F,0x91,0x88,0x83,0x89,0x66,0x78,0x84,0x6D, - 0x67,0x75,0x7F,0x83,0x8A,0x8A,0x8C,0x87,0x92,0xA2,0x9F,0x9A,0x95,0x91,0x8D,0x89, - 0x87,0x82,0x76,0x6A,0x61,0x5D,0x5F,0x63,0x6A,0x60,0x5F,0x6B,0x69,0x6A,0x70,0x6E, - 0x74,0x81,0x7E,0x8C,0x86,0x7C,0x92,0x83,0x7C,0x9A,0xB1,0xA3,0xA1,0xBA,0xB3,0xA7, - 0xA1,0x91,0x95,0x9D,0x8F,0x84,0x84,0x7D,0x77,0x7B,0x78,0x77,0x76,0x6C,0x6A,0x6D, - 0x70,0x73,0x73,0x67,0x5D,0x57,0x59,0x52,0x51,0x57,0x4E,0x56,0x60,0x6A,0x6F,0x69, - 0x6E,0x7E,0x8E,0x92,0x98,0x9B,0x9B,0x98,0x9C,0xA7,0xAC,0xAB,0xB0,0xBF,0xC5,0xB8, - 0xA8,0xAC,0xB2,0xB3,0xAC,0xAD,0xB0,0xA3,0x9E,0x9B,0x91,0x85,0x78,0x79,0x77,0x6E, - 0x6D,0x66,0x58,0x4E,0x4C,0x4A,0x45,0x3F,0x40,0x40,0x40,0x4A,0x4D,0x54,0x5F,0x5D, - 0x5F,0x60,0x62,0x61,0x5E,0x62,0x65,0x6E,0x71,0x70,0x78,0x78,0x7A,0x86,0x8F,0x93, - 0x91,0x97,0x9B,0xA0,0xA4,0xA0,0x9D,0x97,0x9D,0x9B,0x91,0x8D,0x8B,0x93,0x95,0x94, - 0x95,0x90,0x8E,0x8D,0x8E,0x91,0x90,0x8D,0x92,0x93,0x89,0x7B,0x73,0x6D,0x69,0x67, - 0x67,0x6D,0x6F,0x71,0x70,0x6E,0x6E,0x73,0x78,0x7D,0x7F,0x7D,0x7D,0x7C,0x79,0x7A, - 0x7E,0x80,0x86,0x8C,0x8E,0x95,0x9A,0x9C,0x9E,0xA2,0xA7,0xA9,0xAB,0xA9,0xA7,0xA4, - 0xA3,0xA1,0x9C,0x9C,0x9B,0x99,0x97,0x91,0x8E,0x8B,0x87,0x85,0x82,0x7F,0x7A,0x74, - 0x6E,0x69,0x6C,0x66,0x60,0x5D,0x5D,0x5D,0x5A,0x57,0x53,0x55,0x58,0x5C,0x62,0x67, - 0x6D,0x72,0x74,0x76,0x7B,0x7F,0x83,0x88,0x88,0x85,0x83,0x8B,0x90,0x8D,0x8E,0x8E, - 0x8B,0x90,0x92,0x85,0x81,0x87,0x80,0x7C,0x7E,0x77,0x78,0x7D,0x74,0x71,0x77,0x75, - 0x70,0x6C,0x66,0x66,0x64,0x5A,0x56,0x55,0x56,0x63,0x69,0x64,0x62,0x5E,0x56,0x54, - 0x4C,0x44,0x4C,0x56,0x57,0x5A,0x60,0x65,0x6A,0x6A,0x67,0x6E,0x76,0x78,0x7F,0x89, - 0x90,0x94,0x94,0x93,0x98,0xA8,0xB2,0xB2,0xB3,0xBA,0xC0,0xC2,0xC2,0xC1,0xCB,0xD1, - 0xCB,0xC6,0xC7,0xCB,0xC7,0xBE,0xB7,0xB6,0xB6,0xAC,0xA7,0xA8,0xA6,0x9F,0x94,0x8B, - 0x84,0x87,0x90,0x88,0x7E,0x81,0x7E,0x78,0x75,0x70,0x76,0x7F,0x7B,0x77,0x7E,0x80, - 0x77,0x70,0x6D,0x6F,0x73,0x6F,0x6E,0x79,0x7C,0x71,0x68,0x6A,0x6A,0x6A,0x79,0x7D, - 0x76,0x79,0x74,0x6A,0x6A,0x66,0x68,0x76,0x7B,0x7A,0x83,0x88,0x83,0x7F,0x7F,0x85, - 0x8F,0x90,0x8F,0x9B,0x9E,0x95,0x8C,0x8F,0x91,0x8F,0xA0,0xAD,0xA5,0xA2,0xA0,0x97, - 0x91,0x8B,0x87,0x91,0x96,0x8E,0x90,0x92,0x86,0x79,0x72,0x72,0x78,0x78,0x73,0x78, - 0x7B,0x70,0x62,0x5E,0x62,0x58,0x5D,0x6C,0x67,0x5F,0x5C,0x54,0x4C,0x4A,0x47,0x4D, - 0x54,0x50,0x50,0x52,0x4C,0x47,0x45,0x47,0x4F,0x56,0x55,0x5A,0x5D,0x56,0x4E,0x4E, - 0x54,0x53,0x5C,0x6E,0x70,0x6F,0x72,0x71,0x73,0x78,0x7C,0x8B,0x9A,0x9E,0xA7,0xB2, - 0xB1,0xB1,0xB5,0xBC,0xCA,0xD1,0xD1,0xD7,0xD9,0xD1,0xC9,0xC9,0xCA,0xC2,0xC7,0xD3, - 0xCB,0xBE,0xB8,0xAE,0xA5,0x9F,0x9B,0xA1,0xA6,0x9E,0x98,0x99,0x91,0x88,0x85,0x87, - 0x8F,0x90,0x8B,0x8E,0x8B,0x7F,0x7C,0x80,0x83,0x7D,0x89,0x9A,0x92,0x87,0x87,0x80, - 0x7A,0x78,0x77,0x7F,0x82,0x77,0x73,0x71,0x68,0x5F,0x5E,0x62,0x67,0x67,0x65,0x69, - 0x64,0x5A,0x5B,0x61,0x65,0x5E,0x66,0x7B,0x75,0x68,0x6B,0x6C,0x67,0x67,0x6B,0x76, - 0x7B,0x74,0x71,0x73,0x6E,0x68,0x6A,0x6F,0x74,0x74,0x71,0x71,0x6E,0x66,0x65,0x6A, - 0x6B,0x64,0x6E,0x81,0x77,0x6C,0x71,0x70,0x6B,0x6C,0x71,0x7E,0x82,0x79,0x7B,0x82, - 0x7B,0x77,0x7C,0x83,0x89,0x88,0x84,0x88,0x85,0x7D,0x7F,0x86,0x88,0x80,0x87,0x9A, - 0x90,0x80,0x85,0x86,0x7F,0x7E,0x85,0x8F,0x93,0x8B,0x89,0x8E,0x87,0x82,0x87,0x8E, - 0x93,0x94,0x92,0x95,0x93,0x8D,0x91,0x98,0x9A,0x93,0x9B,0xAD,0xA3,0x92,0x96,0x95, - 0x8A,0x84,0x86,0x8C,0x8A,0x7C,0x76,0x77,0x6C,0x62,0x65,0x68,0x68,0x66,0x62,0x63, - 0x61,0x58,0x5C,0x62,0x62,0x5D,0x61,0x75,0x72,0x63,0x6A,0x70,0x6B,0x6B,0x73,0x7F, - 0x86,0x7F,0x7F,0x87,0x84,0x7F,0x86,0x8D,0x91,0x92,0x90,0x94,0x93,0x8C,0x8F,0x95, - 0x95,0x8E,0x92,0xA6,0xA1,0x91,0x97,0x99,0x91,0x90,0x95,0x9E,0xA3,0x98,0x95,0x9C, - 0x94,0x8C,0x90,0x95,0x96,0x94,0x90,0x90,0x8D,0x83,0x84,0x88,0x86,0x7E,0x7E,0x8E, - 0x89,0x74,0x75,0x76,0x6A,0x64,0x67,0x6E,0x70,0x66,0x5F,0x64,0x5C,0x51,0x55,0x5A, - 0x5B,0x5A,0x57,0x59,0x56,0x4D,0x4C,0x50,0x50,0x49,0x4D,0x61,0x5D,0x4D,0x52,0x56, - 0x4E,0x4D,0x54,0x5F,0x64,0x5D,0x5C,0x64,0x5F,0x59,0x61,0x6B,0x70,0x71,0x72,0x77, - 0x78,0x73,0x78,0x81,0x84,0x81,0x8C,0xA3,0xA0,0x95,0x9F,0xA4,0x9F,0xA1,0xA9,0xB6, - 0xBB,0xB0,0xB1,0xB7,0xAC,0xA3,0xA8,0xAC,0xAB,0xA6,0xA2,0xA3,0x9A,0x91,0x93,0x95, - 0x90,0x89,0x93,0xA3,0x95,0x8A,0x93,0x90,0x88,0x88,0x8F,0x99,0x97,0x8F,0x93,0x96, - 0x8D,0x8C,0x92,0x98,0x9B,0x9A,0x9B,0x9E,0x96,0x91,0x97,0x99,0x95,0x91,0x9F,0xAC, - 0x9B,0x93,0x9B,0x95,0x8C,0x8E,0x95,0x9B,0x98,0x8F,0x93,0x92,0x88,0x86,0x8B,0x8E, - 0x8D,0x89,0x89,0x88,0x7E,0x7A,0x7D,0x7C,0x74,0x74,0x84,0x82,0x6F,0x6D,0x6E,0x63, - 0x5E,0x5F,0x66,0x69,0x5F,0x59,0x5B,0x53,0x4A,0x4B,0x50,0x54,0x53,0x4F,0x50,0x4D, - 0x44,0x45,0x49,0x48,0x43,0x4D,0x5E,0x56,0x4A,0x51,0x50,0x49,0x4B,0x52,0x5E,0x61, - 0x59,0x5D,0x63,0x5C,0x5A,0x60,0x67,0x6E,0x6D,0x6F,0x74,0x72,0x6F,0x74,0x79,0x79, - 0x7A,0x8E,0x98,0x8B,0x8D,0x93,0x8F,0x8E,0x95,0xA1,0xAC,0xAA,0xA9,0xB4,0xB4,0xB0, - 0xB7,0xBF,0xC8,0xCD,0xCC,0xCF,0xCE,0xC5,0xC2,0xC3,0xC1,0xB9,0xBD,0xCD,0xC3,0xB1, - 0xB2,0xAC,0xA0,0x9B,0x9C,0xA3,0xA4,0x99,0x96,0x98,0x8E,0x88,0x8C,0x8E,0x91,0x91, - 0x8F,0x91,0x8D,0x87,0x87,0x8A,0x86,0x83,0x94,0x9D,0x8C,0x88,0x8C,0x84,0x81,0x81, - 0x88,0x8F,0x8A,0x83,0x87,0x85,0x7C,0x7D,0x80,0x83,0x84,0x81,0x82,0x82,0x7B,0x78, - 0x79,0x7A,0x74,0x79,0x8B,0x84,0x76,0x78,0x74,0x6D,0x6A,0x6C,0x73,0x75,0x6C,0x6A, - 0x6B,0x63,0x5D,0x5E,0x61,0x63,0x60,0x5D,0x5E,0x59,0x52,0x50,0x51,0x4C,0x48,0x5A, - 0x62,0x51,0x4F,0x52,0x4A,0x47,0x48,0x4F,0x59,0x56,0x51,0x55,0x54,0x4F,0x50,0x55, - 0x5C,0x5F,0x5E,0x62,0x65,0x61,0x5F,0x62,0x66,0x62,0x6A,0x81,0x7E,0x72,0x79,0x78, - 0x73,0x75,0x7B,0x86,0x8B,0x86,0x8A,0x90,0x8D,0x8B,0x90,0x98,0xA0,0xA3,0xA5,0xAC, - 0xAE,0xAD,0xAE,0xB5,0xB8,0xB8,0xCD,0xDA,0xCC,0xCB,0xCD,0xC4,0xBE,0xBD,0xC2,0xC7, - 0xBE,0xB6,0xB5,0xAE,0xA4,0x9D,0x9B,0x9B,0x98,0x91,0x8D,0x8B,0x83,0x7A,0x77,0x75, - 0x6E,0x77,0x88,0x7E,0x73,0x76,0x70,0x6A,0x6A,0x6E,0x7A,0x7B,0x75,0x78,0x7A,0x77, - 0x74,0x77,0x7E,0x83,0x82,0x83,0x86,0x84,0x80,0x7D,0x7F,0x7C,0x7F,0x95,0x95,0x86, - 0x87,0x82,0x7B,0x7A,0x7A,0x84,0x89,0x82,0x7F,0x81,0x7E,0x79,0x76,0x7A,0x7F,0x7F, - 0x7B,0x7B,0x7A,0x75,0x6F,0x6E,0x6D,0x68,0x7A,0x85,0x74,0x70,0x70,0x67,0x61,0x5F, - 0x66,0x6E,0x68,0x61,0x62,0x60,0x5B,0x58,0x59,0x5F,0x61,0x5E,0x5E,0x5F,0x5C,0x57, - 0x55,0x58,0x52,0x5B,0x73,0x6A,0x5E,0x63,0x60,0x5B,0x5A,0x5D,0x6B,0x6E,0x68,0x69, - 0x6C,0x6B,0x69,0x69,0x71,0x78,0x78,0x79,0x7C,0x7E,0x7C,0x79,0x7E,0x7F,0x7F,0x97, - 0xA0,0x91,0x93,0x96,0x92,0x92,0x93,0xA0,0xAC,0xA9,0xA8,0xAC,0xAE,0xAC,0xA8,0xAA, - 0xB0,0xB1,0xAD,0xAB,0xA9,0xA3,0x9A,0x96,0x94,0x8C,0x97,0xA3,0x92,0x87,0x85,0x7B, - 0x74,0x6E,0x71,0x7B,0x76,0x6E,0x6F,0x70,0x6F,0x68,0x68,0x6F,0x73,0x71,0x71,0x73, - 0x74,0x6F,0x6D,0x72,0x70,0x7B,0x92,0x8D,0x83,0x86,0x83,0x81,0x7E,0x81,0x8F,0x94, - 0x8E,0x8C,0x8F,0x91,0x8D,0x89,0x8D,0x94,0x95,0x92,0x91,0x93,0x90,0x88,0x89,0x85, - 0x8A,0xA0,0x9D,0x90,0x91,0x8C,0x87,0x81,0x7F,0x89,0x8D,0x87,0x83,0x83,0x84,0x80, - 0x79,0x7B,0x7F,0x7F,0x7B,0x77,0x79,0x76,0x6D,0x6B,0x68,0x6C,0x80,0x80,0x71,0x70, - 0x6C,0x68,0x62,0x5E,0x67,0x6F,0x6B,0x65,0x65,0x68,0x66,0x61,0x62,0x68,0x6D,0x6B, - 0x68,0x6B,0x6D,0x67,0x65,0x65,0x69,0x82,0x87,0x7A,0x7B,0x7B,0x7A,0x77,0x74,0x7F, - 0x8B,0x8B,0x87,0x88,0x90,0x93,0x8E,0x8F,0x98,0xA1,0xA2,0x9F,0xA1,0xA7,0xA4,0xA2, - 0xA1,0xA3,0xBA,0xC4,0xB5,0xAE,0xAC,0xA8,0xA1,0x96,0x98,0xA0,0x9F,0x96,0x8C,0x8C, - 0x8B,0x81,0x78,0x77,0x7C,0x7B,0x72,0x6C,0x6C,0x69,0x62,0x5D,0x5A,0x6D,0x7E,0x73, - 0x68,0x68,0x68,0x66,0x5F,0x60,0x6C,0x76,0x78,0x73,0x75,0x7C,0x7C,0x78,0x79,0x82, - 0x8A,0x8A,0x86,0x87,0x89,0x87,0x84,0x81,0x8F,0xA5,0xA2,0x96,0x91,0x90,0x91,0x8A, - 0x84,0x8A,0x94,0x97,0x92,0x8C,0x8C,0x8E,0x8B,0x84,0x85,0x8B,0x8D,0x89,0x83,0x80, - 0x7F,0x7C,0x74,0x76,0x8B,0x92,0x89,0x7F,0x77,0x77,0x74,0x6C,0x6A,0x72,0x78,0x79, - 0x73,0x6F,0x70,0x71,0x6E,0x6A,0x6B,0x6F,0x70,0x6E,0x6B,0x68,0x66,0x63,0x60,0x6F, - 0x7D,0x79,0x73,0x6D,0x68,0x69,0x65,0x61,0x65,0x6C,0x72,0x75,0x74,0x74,0x76,0x78, - 0x79,0x7A,0x7C,0x81,0x86,0x89,0x88,0x87,0x88,0x85,0x8E,0xA3,0xA9,0xA5,0xA1,0x9B, - 0x9B,0x9D,0x98,0x96,0x99,0x9C,0xA2,0xA3,0x9E,0x9B,0x9A,0x99,0x96,0x94,0x91,0x90, - 0x90,0x8D,0x88,0x85,0x80,0x7A,0x83,0x8C,0x89,0x85,0x7F,0x76,0x77,0x77,0x70,0x6F, - 0x6E,0x6D,0x72,0x73,0x71,0x72,0x72,0x71,0x74,0x76,0x75,0x74,0x74,0x75,0x76,0x76, - 0x76,0x74,0x7D,0x86,0x82,0x80,0x81,0x7D,0x81,0x84,0x80,0x81,0x82,0x81,0x85,0x84, - 0x83,0x85,0x83,0x83,0x85,0x86,0x87,0x87,0x87,0x88,0x88,0x87,0x86,0x85,0x88,0x8C, - 0x88,0x88,0x88,0x84,0x87,0x88,0x83,0x84,0x84,0x82,0x82,0x7F,0x7C,0x7C,0x78,0x77, - 0x78,0x79,0x79,0x78,0x77,0x78,0x79,0x79,0x79,0x78,0x7B,0x80,0x7D,0x7C,0x7D,0x7A, - 0x7D,0x80,0x7C,0x7D,0x7E,0x7B,0x7B,0x79,0x77,0x78,0x75,0x75,0x77,0x78,0x79,0x79, - 0x79,0x7A,0x7C,0x7D,0x7E,0x7D,0x7F,0x86,0x84,0x81,0x84,0x81,0x84,0x8A,0x86,0x87, - 0x89,0x84,0x84,0x85,0x82,0x83,0x82,0x80,0x83,0x84,0x84,0x84,0x84,0x85,0x85,0x86, - 0x87,0x85,0x83,0x87,0x88,0x82,0x82,0x82,0x7E,0x83,0x83,0x7D,0x7E,0x7A,0x76,0x77, - 0x74,0x72,0x72,0x6F,0x70,0x71,0x72,0x73,0x73,0x73,0x75,0x77,0x79,0x79,0x78,0x79, - 0x80,0x7F,0x7B,0x7F,0x7E,0x80,0x86,0x82,0x81,0x82,0x7E,0x7F,0x81,0x7E,0x7E,0x7D, - 0x7C,0x7E,0x80,0x81,0x81,0x82,0x83,0x85,0x88,0x88,0x87,0x86,0x89,0x8E,0x8B,0x89, - 0x8C,0x89,0x8C,0x8F,0x8A,0x8A,0x89,0x84,0x86,0x85,0x81,0x81,0x7E,0x7D,0x7F,0x7F, - 0x80,0x80,0x81,0x81,0x84,0x85,0x83,0x82,0x81,0x85,0x89,0x84,0x84,0x85,0x81,0x86, - 0x87,0x83,0x86,0x8E,0x78,0x61,0x75,0x85,0x82,0x68,0x80,0x83,0x5F,0x72,0x7C,0x7B, - 0x7C,0x8B,0x91,0x7A,0x80,0x88,0x8B,0x82,0x80,0x8E,0x7D,0x71,0x78,0x81,0x81,0x80, - 0x81,0x85,0x7C,0x73,0x78,0x71,0x73,0x73,0x7A,0x7B,0x76,0x7D,0x7B,0x83,0x87,0x91, - 0x92,0x88,0x8C,0x90,0x8F,0x8D,0x89,0x89,0x88,0x8B,0x85,0x84,0x8A,0x80,0x7F,0x7F, - 0x7A,0x7C,0x73,0x6C,0x69,0x6A,0x6A,0x68,0x6D,0x71,0x7E,0x84,0x77,0x75,0x7C,0x7B, - 0x7B,0x87,0x85,0x7A,0x7F,0x7E,0x81,0x83,0x7F,0x87,0x7E,0x78,0x80,0x79,0x76,0x80, - 0x78,0x6F,0x77,0x7C,0x7A,0x79,0x79,0x7E,0x80,0x83,0x85,0x83,0x83,0x85,0x85,0x87, - 0x86,0x81,0x81,0x88,0x92,0x91,0x8A,0x88,0x85,0x88,0x83,0x80,0x83,0x7A,0x7B,0x82, - 0x82,0x81,0x81,0x86,0x84,0x80,0x86,0x89,0x88,0x87,0x85,0x88,0x82,0x84,0x85,0x82, - 0x84,0x87,0x87,0x84,0x84,0x85,0x82,0x80,0x7A,0x76,0x7A,0x76,0x7A,0x7F,0x7B,0x7B, - 0x7D,0x7E,0x81,0x87,0x80,0x82,0x87,0x7F,0x7C,0x84,0x85,0x80,0x83,0x7A,0x7D,0x88, - 0x89,0x84,0x82,0x85,0x7F,0x7C,0x79,0x77,0x72,0x70,0x7C,0x7D,0x79,0x7F,0x7C,0x7D, - 0x84,0x85,0x88,0x87,0x8B,0x82,0x85,0x89,0x83,0x87,0x80,0x85,0x8C,0x8C,0x89,0x88, - 0x8F,0x84,0x80,0x80,0x7C,0x7C,0x78,0x77,0x7A,0x7D,0x7A,0x77,0x7C,0x80,0x82,0x84, - 0x84,0x82,0x7E,0x80,0x84,0x83,0x7F,0x7E,0x7D,0x7D,0x85,0x81,0x7A,0x7C,0x7C,0x78, - 0x75,0x7D,0x78,0x77,0x76,0x75,0x7B,0x74,0x7A,0x7D,0x7A,0x83,0x82,0x85,0x88,0x7F, - 0x7D,0x83,0x94,0x93,0x8C,0x8E,0x89,0x85,0x89,0x88,0x7C,0x76,0x7D,0x7F,0x7B,0x7F, - 0x7D,0x78,0x81,0x84,0x82,0x84,0x83,0x86,0x83,0x7F,0x80,0x79,0x7E,0x83,0x7C,0x7C, - 0x91,0x9B,0x8E,0x8D,0x87,0x85,0x8A,0x82,0x7B,0x74,0x76,0x81,0x7E,0x80,0x81,0x7A, - 0x80,0x8A,0x84,0x80,0x81,0x88,0x8A,0x7D,0x7B,0x7E,0x7E,0x7D,0x76,0x7D,0x90,0x8F, - 0x89,0x87,0x81,0x81,0x83,0x7B,0x75,0x72,0x78,0x81,0x79,0x7B,0x7C,0x7E,0x86,0x87, - 0x82,0x80,0x7F,0x84,0x83,0x7A,0x82,0x85,0x82,0x7E,0x76,0x84,0x95,0x91,0x87,0x84, - 0x87,0x8A,0x83,0x77,0x73,0x71,0x79,0x7F,0x74,0x78,0x7E,0x80,0x8C,0x80,0x80,0x85, - 0x84,0x84,0x7A,0x7D,0x83,0x7F,0x7C,0x77,0x74,0x89,0x98,0x8B,0x87,0x85,0x83,0x88, - 0x7C,0x6F,0x74,0x74,0x7B,0x77,0x73,0x7F,0x80,0x84,0x89,0x7B,0x7E,0x83,0x79,0x7B, - 0x7D,0x7E,0x83,0x80,0x7A,0x75,0x7B,0x8E,0x91,0x84,0x8A,0x89,0x84,0x8A,0x7A,0x74, - 0x7B,0x7D,0x7E,0x78,0x77,0x82,0x87,0x84,0x7F,0x81,0x88,0x83,0x78,0x80,0x82,0x7E, - 0x80,0x7C,0x7A,0x76,0x7A,0x8F,0x8C,0x82,0x8C,0x86,0x85,0x8B,0x7B,0x75,0x7C,0x7B, - 0x7D,0x78,0x7A,0x82,0x8A,0x86,0x7E,0x81,0x87,0x82,0x7E,0x82,0x7C,0x7E,0x80,0x7A, - 0x7B,0x7A,0x7C,0x8D,0x89,0x7F,0x8B,0x85,0x87,0x89,0x76,0x79,0x7F,0x78,0x78,0x76, - 0x77,0x81,0x81,0x83,0x81,0x7E,0x8A,0x89,0x7B,0x82,0x82,0x7A,0x7A,0x77,0x7F,0x7B, - 0x75,0x8C,0x8E,0x80,0x8A,0x85,0x83,0x89,0x74,0x76,0x84,0x72,0x79,0x7A,0x72,0x82, - 0x82,0x7D,0x7F,0x85,0x86,0x87,0x7E,0x7C,0x80,0x7C,0x79,0x79,0x7C,0x78,0x74,0x86, - 0x8E,0x7F,0x8B,0x89,0x7F,0x89,0x7A,0x72,0x80,0x75,0x76,0x7A,0x70,0x81,0x85,0x7E, - 0x88,0x85,0x82,0x87,0x80,0x7D,0x80,0x82,0x7D,0x76,0x7E,0x7B,0x73,0x82,0x90,0x86, - 0x87,0x8C,0x82,0x8B,0x83,0x73,0x81,0x7A,0x71,0x7C,0x76,0x7B,0x85,0x7F,0x86,0x86, - 0x82,0x86,0x83,0x80,0x84,0x81,0x7D,0x7C,0x7C,0x80,0x75,0x76,0x8B,0x87,0x83,0x8B, - 0x83,0x84,0x8A,0x7B,0x7C,0x7F,0x71,0x7C,0x78,0x72,0x83,0x7F,0x7D,0x84,0x83,0x85, - 0x86,0x82,0x83,0x83,0x7F,0x78,0x7A,0x80,0x7B,0x75,0x7E,0x8D,0x83,0x86,0x8A,0x7E, - 0x8C,0x88,0x76,0x80,0x77,0x74,0x7E,0x71,0x75,0x81,0x79,0x7E,0x84,0x81,0x8A,0x85, - 0x81,0x87,0x81,0x7C,0x79,0x7A,0x82,0x7B,0x72,0x87,0x8B,0x82,0x8C,0x86,0x7F,0x8D, - 0x82,0x74,0x7D,0x76,0x78,0x7B,0x71,0x7D,0x7D,0x7E,0x87,0x7E,0x84,0x89,0x7F,0x82, - 0x84,0x7C,0x7A,0x7C,0x76,0x79,0x77,0x72,0x81,0x85,0x83,0x86,0x80,0x85,0x8B,0x7B, - 0x77,0x7B,0x76,0x78,0x77,0x70,0x7B,0x80,0x7D,0x84,0x81,0x84,0x8A,0x85,0x83,0x86, - 0x80,0x7D,0x7C,0x7D,0x7F,0x7A,0x7B,0x88,0x87,0x82,0x88,0x84,0x83,0x8C,0x81,0x76, - 0x81,0x7C,0x78,0x7D,0x76,0x7B,0x7F,0x7E,0x7E,0x7C,0x84,0x8C,0x82,0x82,0x87,0x7F, - 0x81,0x81,0x7F,0x81,0x7C,0x78,0x83,0x87,0x80,0x85,0x88,0x86,0x88,0x83,0x7E,0x82, - 0x7E,0x7B,0x7C,0x75,0x79,0x7F,0x7C,0x7E,0x7F,0x80,0x87,0x82,0x82,0x86,0x82,0x85, - 0x80,0x7C,0x80,0x7D,0x7B,0x81,0x87,0x7F,0x84,0x85,0x83,0x89,0x86,0x81,0x83,0x80, - 0x7D,0x7D,0x79,0x7B,0x81,0x7B,0x7D,0x80,0x7F,0x87,0x84,0x81,0x89,0x84,0x82,0x82, - 0x7E,0x84,0x82,0x7D,0x83,0x86,0x82,0x86,0x84,0x81,0x89,0x85,0x81,0x85,0x82,0x80, - 0x81,0x7A,0x7A,0x7F,0x7A,0x7D,0x80,0x80,0x84,0x83,0x81,0x86,0x84,0x82,0x83,0x81, - 0x81,0x81,0x79,0x7F,0x85,0x80,0x82,0x81,0x81,0x84,0x82,0x80,0x82,0x80,0x7F,0x81, - 0x7A,0x7B,0x81,0x7E,0x7D,0x81,0x7E,0x83,0x82,0x82,0x87,0x84,0x84,0x83,0x80,0x81, - 0x82,0x7D,0x83,0x88,0x81,0x83,0x83,0x82,0x87,0x82,0x80,0x85,0x82,0x82,0x83,0x7D, - 0x7F,0x81,0x7C,0x80,0x81,0x7B,0x84,0x88,0x82,0x86,0x83,0x82,0x87,0x82,0x85,0x84, - 0x7B,0x86,0x86,0x7D,0x85,0x82,0x82,0x8A,0x82,0x7E,0x84,0x7F,0x80,0x7F,0x79,0x80, - 0x7D,0x7B,0x80,0x7D,0x7B,0x84,0x86,0x81,0x83,0x82,0x84,0x84,0x7D,0x83,0x85,0x88, - 0x94,0x87,0x85,0x81,0x75,0x79,0x76,0x7B,0x7B,0x7E,0x71,0x75,0x7C,0x5F,0x76,0x92, - 0x75,0x79,0x89,0x7F,0x84,0x76,0x82,0x93,0x82,0x85,0x83,0x7D,0x82,0x82,0x88,0x89, - 0x82,0x87,0x8A,0x87,0x88,0x87,0x8C,0x8E,0x88,0x86,0x7F,0x79,0x7F,0x86,0x7C,0x77, - 0x82,0x88,0x86,0x89,0x86,0x7B,0x7E,0x88,0x8A,0x88,0x90,0x8D,0x87,0x89,0x86,0x7F, - 0x79,0x7C,0x85,0x8A,0x91,0x91,0x83,0x79,0x76,0x74,0x75,0x75,0x71,0x74,0x76,0x70, - 0x6D,0x6A,0x69,0x6D,0x72,0x70,0x6A,0x6A,0x68,0x64,0x6D,0x6E,0x63,0x6D,0x75,0x79, - 0x7C,0x75,0x74,0x79,0x72,0x6C,0x68,0x69,0x76,0x7C,0x72,0x70,0x77,0x79,0x7A,0x74, - 0x74,0x7F,0x80,0x7C,0x7B,0x7E,0x7C,0x89,0xA7,0xAF,0xB5,0xB6,0xA4,0xA4,0x9C,0x88, - 0x8B,0x90,0x8A,0x86,0x7E,0x82,0x92,0x89,0x7E,0x86,0x88,0x89,0x88,0x82,0x89,0x89, - 0x84,0x86,0x84,0x79,0x8C,0xA6,0x9A,0x98,0x9A,0x93,0x97,0x85,0x75,0x86,0x8C,0x89, - 0x8E,0x8B,0x94,0x97,0x82,0x82,0x88,0x82,0x80,0x79,0x7F,0x87,0x7F,0x77,0x7B,0x78, - 0x76,0x8F,0x92,0x85,0x8A,0x87,0x83,0x7D,0x69,0x6C,0x7A,0x77,0x7C,0x80,0x81,0x8B, - 0x80,0x73,0x7A,0x75,0x71,0x73,0x72,0x79,0x7A,0x6A,0x64,0x61,0x56,0x66,0x76,0x69, - 0x6A,0x6D,0x5E,0x5A,0x4D,0x48,0x5A,0x5D,0x5B,0x65,0x67,0x6C,0x68,0x5B,0x5F,0x67, - 0x69,0x6A,0x70,0x77,0x76,0x69,0x64,0x66,0x5E,0x6E,0x81,0x7A,0x7B,0x7B,0x6D,0x6E, - 0x67,0x65,0x7B,0x86,0x8C,0x99,0x9D,0xA2,0xA0,0x91,0x94,0x9E,0x9F,0xA2,0xA3,0xA0, - 0x99,0x86,0x83,0x86,0x7B,0x90,0xA6,0x99,0x97,0x93,0x86,0x81,0x7B,0x7B,0x8F,0x96, - 0x94,0x9B,0x99,0x93,0x8C,0x82,0x8B,0x99,0x97,0x9A,0x9E,0x9B,0x93,0x87,0x8A,0x8C, - 0x8B,0xA4,0xAB,0x9B,0x9B,0x90,0x82,0x7C,0x72,0x7C,0x8F,0x8F,0x8D,0x93,0x8D,0x84, - 0x78,0x74,0x85,0x8D,0x89,0x8B,0x8D,0x83,0x78,0x77,0x7D,0x7C,0x89,0x9F,0x97,0x8C, - 0x88,0x7B,0x73,0x6D,0x6A,0x78,0x7D,0x74,0x76,0x70,0x67,0x5D,0x52,0x59,0x66,0x63, - 0x61,0x63,0x5F,0x55,0x4D,0x56,0x56,0x5B,0x75,0x76,0x69,0x69,0x63,0x5D,0x5C,0x5B, - 0x67,0x73,0x6E,0x6C,0x6C,0x67,0x64,0x5D,0x60,0x70,0x73,0x72,0x77,0x78,0x76,0x71, - 0x77,0x81,0x7F,0x9B,0xB4,0xA8,0xA7,0xAA,0xA1,0x9E,0x98,0x98,0xA8,0xA4,0x97,0x9A, - 0x93,0x8B,0x86,0x83,0x90,0x96,0x8D,0x8E,0x90,0x89,0x83,0x83,0x8D,0x89,0x93,0xAE, - 0xA6,0x97,0x94,0x90,0x8D,0x8B,0x89,0x9B,0xA6,0x98,0x97,0x97,0x91,0x8C,0x88,0x8F, - 0x9A,0x96,0x92,0x90,0x85,0x83,0x81,0x87,0x8B,0x82,0x95,0xA8,0x91,0x85,0x8A,0x82, - 0x80,0x7C,0x80,0x94,0x92,0x81,0x83,0x84,0x7F,0x7C,0x7B,0x88,0x8E,0x87,0x85,0x82, - 0x7A,0x74,0x74,0x74,0x68,0x6E,0x87,0x7B,0x67,0x65,0x5F,0x5B,0x56,0x54,0x65,0x6F, - 0x60,0x5B,0x5E,0x59,0x55,0x54,0x5C,0x69,0x67,0x62,0x68,0x63,0x5B,0x5E,0x64,0x69, - 0x60,0x66,0x7E,0x72,0x5F,0x65,0x62,0x62,0x66,0x67,0x77,0x84,0x76,0x73,0x7F,0x7F, - 0x82,0x8A,0x95,0xA5,0xA7,0xA1,0xA2,0x9F,0x97,0x94,0x97,0x92,0x8C,0xA4,0xA9,0x8F, - 0x8D,0x8C,0x83,0x80,0x7F,0x89,0x94,0x90,0x87,0x8C,0x89,0x86,0x84,0x88,0x97,0x9A, - 0x92,0x93,0x93,0x89,0x8A,0x90,0x90,0x95,0x8F,0x91,0xA6,0x99,0x85,0x8D,0x89,0x83, - 0x86,0x87,0x91,0x95,0x86,0x86,0x89,0x86,0x83,0x81,0x8B,0x91,0x8A,0x84,0x85,0x83, - 0x80,0x7F,0x83,0x7F,0x7B,0x94,0x97,0x82,0x84,0x82,0x7C,0x79,0x76,0x81,0x8B,0x80, - 0x78,0x78,0x72,0x6A,0x65,0x68,0x70,0x73,0x69,0x68,0x68,0x5E,0x58,0x5D,0x62,0x64, - 0x63,0x5C,0x6D,0x74,0x5B,0x59,0x63,0x5F,0x60,0x5E,0x64,0x72,0x67,0x5C,0x63,0x63, - 0x60,0x62,0x64,0x6F,0x72,0x6A,0x6D,0x6F,0x6E,0x70,0x76,0x7E,0x7B,0x7F,0x9B,0x9E, - 0x91,0x97,0x97,0x97,0x98,0x93,0xA0,0xA9,0x98,0x94,0x97,0x8F,0x8C,0x8A,0x8E,0x97, - 0x93,0x89,0x8C,0x8C,0x85,0x82,0x89,0x90,0x91,0x8C,0x87,0x9B,0xA3,0x8A,0x89,0x90, - 0x8B,0x8A,0x88,0x8F,0x9B,0x92,0x86,0x8E,0x90,0x89,0x88,0x8C,0x91,0x92,0x89,0x88, - 0x8D,0x89,0x87,0x87,0x8C,0x85,0x7C,0x98,0x9E,0x88,0x87,0x88,0x83,0x81,0x7A,0x86, - 0x93,0x88,0x82,0x84,0x81,0x7F,0x7B,0x7F,0x8A,0x8A,0x80,0x80,0x82,0x7C,0x75,0x75, - 0x78,0x73,0x6F,0x6A,0x72,0x81,0x6C,0x60,0x69,0x65,0x60,0x5D,0x63,0x71,0x6A,0x5B, - 0x61,0x65,0x5F,0x5E,0x63,0x69,0x6C,0x66,0x64,0x6A,0x68,0x64,0x64,0x68,0x68,0x5E, - 0x6E,0x84,0x75,0x6A,0x71,0x70,0x6E,0x6F,0x76,0x87,0x8A,0x80,0x85,0x8E,0x8E,0x8C, - 0x90,0x9D,0xA2,0x9C,0x97,0x9B,0x9B,0x92,0x8F,0x95,0x98,0x91,0x8A,0x8E,0xA0,0x9A, - 0x84,0x88,0x8D,0x86,0x83,0x84,0x8F,0x95,0x87,0x82,0x8A,0x88,0x84,0x86,0x8C,0x91, - 0x8C,0x87,0x8B,0x8C,0x88,0x87,0x89,0x8D,0x87,0x81,0x98,0xA0,0x89,0x86,0x8B,0x86, - 0x85,0x7E,0x86,0x97,0x8F,0x83,0x86,0x88,0x85,0x81,0x85,0x8D,0x8D,0x86,0x83,0x87, - 0x89,0x81,0x80,0x89,0x8A,0x81,0x7A,0x8B,0x9A,0x85,0x79,0x81,0x80,0x77,0x6E,0x73, - 0x7F,0x78,0x6C,0x6C,0x71,0x6C,0x65,0x64,0x6C,0x70,0x67,0x66,0x67,0x66,0x64,0x63, - 0x67,0x69,0x5F,0x61,0x7B,0x76,0x62,0x68,0x69,0x69,0x60,0x67,0x76,0x6F,0x75,0x54, - 0x58,0x72,0x61,0x53,0x60,0x79,0x7F,0x83,0x87,0x90,0x8F,0x92,0xAA,0xB4,0xB5,0xB6, - 0xB2,0xBB,0xB0,0x8C,0xA0,0xA4,0x7E,0x79,0x7D,0x78,0x6E,0x66,0x50,0x5C,0x74,0x72, - 0x69,0x5D,0x74,0x7D,0x72,0x7D,0x8B,0x98,0xA0,0x9F,0xA2,0xB1,0xAD,0xC9,0xD0,0xB0, - 0xD6,0xBF,0xB4,0xC5,0xA8,0xB1,0xAC,0x98,0x8E,0x8D,0x94,0x93,0x71,0x68,0x71,0x62, - 0x71,0x68,0x6A,0x88,0x6C,0x6A,0x7B,0x76,0x7C,0x67,0x56,0x69,0x68,0x60,0x67,0x67, - 0x5C,0x5D,0x5F,0x74,0x7F,0x80,0x8B,0x82,0x8E,0x8D,0x7C,0x7D,0x81,0x7B,0x78,0x82, - 0x93,0x96,0x8B,0x80,0x91,0x8C,0x84,0x9A,0x8C,0x82,0x81,0x81,0x7D,0x72,0x77,0x74, - 0x72,0x6F,0x74,0x80,0x74,0x67,0x5B,0x50,0x5B,0x5F,0x4D,0x42,0x50,0x4C,0x43,0x49, - 0x55,0x66,0x5A,0x69,0x7D,0x71,0x76,0x86,0x83,0x85,0x83,0x7E,0x97,0x9B,0x98,0x9E, - 0x94,0xA5,0xB6,0xB3,0xC1,0xBE,0xB2,0xB4,0xAB,0x99,0x9E,0x89,0x78,0x8B,0x7A,0x87, - 0x9E,0x88,0x7B,0x71,0x6A,0x75,0x80,0x74,0x73,0x6B,0x6F,0x81,0x70,0x6F,0x73,0x76, - 0x81,0x78,0x7B,0x71,0x71,0x83,0x82,0x84,0x7B,0x82,0x96,0x8D,0x8D,0xA1,0x8C,0x8D, - 0x91,0x8A,0x9B,0x91,0x90,0x98,0x99,0x99,0x9B,0xA4,0xA4,0x9F,0xAB,0xAB,0xB1,0xB8, - 0xA5,0xA0,0xA1,0xA1,0x9E,0x93,0x89,0x6E,0x68,0x74,0x74,0x71,0x5C,0x5C,0x6D,0x67, - 0x58,0x45,0x34,0x36,0x3E,0x49,0x4C,0x3E,0x3B,0x44,0x42,0x44,0x4B,0x45,0x46,0x43, - 0x3D,0x47,0x4A,0x55,0x56,0x61,0x85,0x87,0x84,0x79,0x6B,0x7D,0x88,0x93,0xA8,0xA6, - 0xAF,0xBD,0xAD,0xA2,0xA8,0xAD,0xB0,0xCA,0xD7,0xBF,0xC2,0xCD,0xCF,0xCE,0xC7,0xC9, - 0xC3,0xC5,0xC8,0xB4,0xA0,0x8E,0x7A,0x79,0x8D,0x8E,0x7E,0x6C,0x5B,0x59,0x5D,0x5C, - 0x54,0x51,0x4E,0x5F,0x5A,0x43,0x3B,0x2F,0x46,0x49,0x47,0x55,0x4C,0x59,0x6C,0x69, - 0x5E,0x5C,0x68,0x6B,0x6C,0x85,0x7B,0x73,0x86,0x73,0x7B,0x91,0x8D,0x98,0x9E,0xAB, - 0xB3,0xAD,0xA9,0xB2,0xB4,0xB6,0xBB,0xB5,0xB8,0xBF,0xC7,0xBD,0xBD,0xBC,0xAE,0xB1, - 0xAB,0xA3,0xA1,0x9F,0x99,0x91,0x86,0x83,0x8E,0x81,0x7E,0x7F,0x74,0x6A,0x61,0x68, - 0x60,0x57,0x55,0x53,0x5F,0x68,0x62,0x58,0x56,0x52,0x51,0x50,0x44,0x43,0x45,0x4C, - 0x58,0x5F,0x5E,0x50,0x49,0x4D,0x56,0x61,0x58,0x51,0x5B,0x64,0x68,0x63,0x6B,0x6B, - 0x64,0x7E,0x80,0x84,0x90,0x89,0x8F,0x89,0x89,0x97,0x9F,0xAD,0xAB,0x9F,0x9E,0x97, - 0x98,0x98,0x9B,0xAF,0xA9,0x9C,0xA2,0xA5,0x95,0x8C,0x85,0x79,0x9A,0xB3,0xA9,0xA1, - 0x8C,0x8F,0x9B,0x9D,0x94,0x86,0x91,0xA1,0x9E,0x95,0x94,0x9B,0x9B,0x93,0x8F,0x89, - 0x8D,0x7B,0x6B,0x6D,0x66,0x6D,0x6E,0x69,0x7D,0x95,0x86,0x77,0x77,0x6E,0x76,0x74, - 0x6C,0x6D,0x71,0x79,0x6B,0x64,0x65,0x60,0x66,0x6B,0x73,0x7D,0x7E,0x84,0x7A,0x7E, - 0x88,0x81,0x80,0x7D,0x98,0xA9,0x92,0x83,0x73,0x76,0x84,0x7D,0x7E,0x84,0x87,0x87, - 0x7D,0x74,0x74,0x6E,0x76,0x70,0x6A,0x79,0x72,0x76,0x81,0x73,0x70,0x75,0x6D,0x7B, - 0x98,0x8E,0x80,0x80,0x74,0x89,0x96,0x7D,0x7B,0x7F,0x8D,0xA0,0x8F,0x86,0x83,0x79, - 0x81,0x80,0x7B,0x83,0x88,0x86,0x85,0x87,0x82,0x84,0x7C,0x75,0x8D,0x8C,0x81,0x7A, - 0x71,0x6F,0x66,0x62,0x5D,0x60,0x82,0x8B,0x7C,0x6D,0x5E,0x79,0x7D,0x74,0x6F,0x5C, - 0x64,0x6C,0x75,0x79,0x75,0x7C,0x78,0x7C,0x98,0x98,0x8A,0x86,0x82,0x92,0x90,0x8A, - 0x8E,0x95,0x9A,0x96,0x9B,0x95,0x92,0x99,0x97,0x92,0x8E,0x8F,0x92,0x94,0x96,0x94, - 0x88,0x94,0x95,0x97,0xAF,0xAF,0xAD,0xAE,0xA5,0xA2,0x9F,0x94,0x90,0x98,0x9F,0x9B, - 0x8E,0x7C,0x7C,0x8A,0x95,0x91,0x87,0x88,0x82,0x7A,0x7C,0x72,0x63,0x69,0x65,0x6C, - 0x79,0x71,0x6A,0x6A,0x6C,0x68,0x63,0x66,0x70,0x77,0x79,0x70,0x5F,0x5F,0x5B,0x57, - 0x56,0x4D,0x53,0x58,0x63,0x65,0x5E,0x5A,0x58,0x63,0x5D,0x67,0x77,0x68,0x66,0x69, - 0x69,0x6F,0x6F,0x6E,0x70,0x77,0x83,0x80,0x73,0x6E,0x6F,0x6F,0x6D,0x6F,0x70,0x6C, - 0x73,0x79,0x7C,0x7A,0x7D,0x85,0x7B,0x79,0x86,0x89,0x8A,0x93,0x94,0x8D,0x8E,0x91, - 0x8D,0x9B,0xA6,0xA1,0x9E,0x97,0x97,0x9B,0x8C,0x87,0x8C,0x8B,0x97,0xA0,0x9B,0x9B, - 0x93,0x9A,0xA0,0x9D,0xAE,0xB0,0xAA,0xA4,0x9E,0x96,0x90,0x98,0x9B,0x96,0x9D,0xA1, - 0xA3,0xA4,0x97,0x8E,0x87,0x7F,0x83,0x84,0x80,0x84,0x83,0x83,0x88,0x86,0x81,0x85, - 0x8F,0x97,0x8E,0x82,0x79,0x74,0x70,0x6B,0x71,0x6C,0x66,0x66,0x69,0x75,0x73,0x69, - 0x5A,0x57,0x5B,0x5F,0x63,0x55,0x53,0x59,0x58,0x5F,0x5D,0x56,0x67,0x74,0x7C,0x80, - 0x6F,0x66,0x62,0x60,0x65,0x6A,0x64,0x5A,0x5B,0x69,0x72,0x6F,0x71,0x6E,0x6F,0x7D, - 0x80,0x77,0x6E,0x75,0x77,0x7C,0x83,0x7F,0x8D,0x97,0x9A,0x98,0x88,0x83,0x82,0x88, - 0x8C,0x89,0x8B,0x7F,0x7B,0x8A,0x91,0x96,0x96,0x8C,0x8E,0x99,0x99,0x91,0x91,0x93, - 0x94,0xA0,0x9C,0x92,0x93,0xA0,0xA8,0xA4,0x9F,0x96,0x9C,0x9F,0xA0,0xA1,0x95,0x95, - 0x95,0x91,0x92,0x95,0x93,0x8F,0x8F,0x90,0x99,0x94,0x93,0x94,0x8B,0x8F,0x96,0x8D, - 0x89,0x92,0x92,0x8E,0x8C,0x89,0x88,0x8F,0x90,0x8C,0x8A,0x8A,0x8A,0x80,0x74,0x74, - 0x6F,0x6C,0x6D,0x6C,0x6A,0x64,0x6E,0x6C,0x62,0x6F,0x6A,0x64,0x62,0x5E,0x66,0x59, - 0x5C,0x59,0x4E,0x5E,0x5E,0x5D,0x5E,0x5E,0x5F,0x5B,0x5E,0x58,0x5C,0x64,0x5F,0x5F, - 0x5D,0x59,0x63,0x69,0x66,0x6A,0x64,0x63,0x6C,0x6F,0x7B,0x78,0x6E,0x75,0x76,0x77, - 0x7C,0x76,0x74,0x7A,0x7F,0x81,0x82,0x86,0x87,0x8D,0x8F,0x8A,0x8A,0x8F,0x8D,0x90, - 0x95,0x90,0x8C,0x8A,0x8B,0x8D,0x90,0x93,0x92,0x8E,0x8D,0x94,0x99,0x93,0x93,0x99, - 0x97,0x9A,0x9C,0x93,0x93,0x98,0x9D,0x9E,0x9C,0x9A,0x9B,0x9E,0xA0,0xA4,0x9F,0x9A, - 0x9A,0x95,0x9A,0xA5,0x9D,0x9D,0x9D,0x9A,0x9E,0x9D,0x9F,0x9B,0x9D,0xA0,0x97,0x95, - 0x91,0x8D,0x8E,0x8B,0x85,0x84,0x82,0x82,0x86,0x84,0x7F,0x7F,0x7D,0x7D,0x7A,0x7C, - 0x82,0x7A,0x7A,0x76,0x6D,0x77,0x75,0x74,0x79,0x79,0x78,0x76,0x75,0x6F,0x70,0x71, - 0x6A,0x69,0x68,0x67,0x68,0x61,0x5E,0x5F,0x66,0x69,0x61,0x5E,0x66,0x68,0x63,0x5F, - 0x58,0x57,0x63,0x69,0x68,0x6C,0x63,0x5C,0x61,0x63,0x63,0x6B,0x66,0x5E,0x65,0x69, - 0x6E,0x70,0x6B,0x6D,0x73,0x7A,0x7D,0x72,0x73,0x7A,0x79,0x7C,0x79,0x75,0x7C,0x81, - 0x84,0x85,0x80,0x7E,0x7D,0x87,0x8A,0x85,0x88,0x82,0x7E,0x87,0x86,0x85,0x85,0x83, - 0x87,0x8D,0x8E,0x87,0x86,0x8F,0x96,0x99,0x98,0x94,0x96,0x9A,0x9E,0xA0,0xA0,0x9F, - 0x99,0x9F,0xA0,0x9D,0x9D,0x93,0x91,0x94,0x96,0x9C,0x99,0x97,0x99,0x96,0x9A,0x97, - 0x8F,0x93,0x98,0x97,0x97,0x90,0x8B,0x8C,0x90,0x8F,0x8F,0x8F,0x8B,0x8B,0x89,0x87, - 0x86,0x83,0x82,0x84,0x82,0x82,0x83,0x7F,0x80,0x81,0x7D,0x7C,0x7B,0x79,0x80,0x80, - 0x79,0x7A,0x78,0x78,0x7A,0x79,0x7B,0x7E,0x7B,0x77,0x77,0x77,0x73,0x73,0x75,0x6E, - 0x6C,0x6E,0x6E,0x71,0x74,0x73,0x74,0x72,0x74,0x75,0x76,0x7D,0x76,0x77,0x7B,0x7A, - 0x80,0x7B,0x77,0x79,0x7A,0x7B,0x77,0x72,0x73,0x74,0x79,0x76,0x71,0x72,0x70,0x74, - 0x77,0x73,0x73,0x74,0x74,0x74,0x72,0x78,0x77,0x71,0x75,0x77,0x79,0x7C,0x78,0x7B, - 0x7E,0x80,0x7D,0x78,0x77,0x77,0x7E,0x7F,0x78,0x77,0x78,0x7D,0x80,0x7E,0x7C,0x7C, - 0x7E,0x7E,0x7D,0x82,0x86,0x82,0x85,0x84,0x82,0x88,0x84,0x80,0x85,0x85,0x80,0x7F, - 0x7D,0x7B,0x7E,0x82,0x7E,0x7D,0x7C,0x7E,0x81,0x80,0x7F,0x80,0x81,0x83,0x83,0x85, - 0x8D,0x8C,0x89,0x8A,0x82,0x87,0x8B,0x89,0x8F,0x8D,0x87,0x87,0x87,0x8A,0x89,0x87, - 0x83,0x80,0x82,0x85,0x85,0x84,0x81,0x83,0x87,0x86,0x84,0x81,0x87,0x8B,0x88,0x8A, - 0x85,0x84,0x8C,0x89,0x8A,0x88,0x82,0x83,0x81,0x86,0x86,0x81,0x80,0x7D,0x7F,0x82, - 0x80,0x82,0x7E,0x7E,0x83,0x81,0x7F,0x7C,0x80,0x85,0x83,0x83,0x7F,0x7B,0x83,0x82, - 0x82,0x86,0x7D,0x7C,0x7F,0x7E,0x85,0x84,0x80,0x7F,0x7E,0x82,0x83,0x80,0x81,0x80, - 0x82,0x85,0x82,0x7F,0x83,0x8A,0x86,0x81,0x82,0x82,0x85,0x89,0x85,0x85,0x83,0x7E, - 0x80,0x80,0x7F,0x7F,0x7B,0x78,0x7A,0x7B,0x7B,0x7D,0x7D,0x7D,0x80,0x83,0x84,0x7E, - 0x81,0x89,0x85,0x84,0x82,0x7F,0x83,0x86,0x86,0x82,0x80,0x7F,0x7E,0x81,0x7E,0x7B, - 0x7C,0x7B,0x7C,0x7A,0x79,0x7C,0x7B,0x7B,0x7C,0x7D,0x7D,0x7B,0x7D,0x81,0x7F,0x7F, - 0x7E,0x7E,0x82,0x85,0x85,0x7F,0x7D,0x7F,0x80,0x81,0x7F,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7D,0x7E,0x7E,0x81,0x80,0x82,0x82,0x7E,0x84,0x84,0x82,0x85,0x80,0x81,0x84,0x82, - 0x83,0x7F,0x7D,0x7F,0x7E,0x7F,0x7D,0x7A,0x7B,0x7B,0x7D,0x7C,0x7B,0x7D,0x7D,0x80, - 0x82,0x81,0x80,0x80,0x86,0x85,0x82,0x85,0x80,0x82,0x87,0x85,0x87,0x83,0x80,0x81, - 0x7E,0x7D,0x7C,0x79,0x7B,0x7A,0x7A,0x79,0x79,0x7B,0x7A,0x7C,0x7E,0x7E,0x7E,0x7E, - 0x83,0x82,0x80,0x81,0x7E,0x83,0x86,0x83,0x85,0x81,0x80,0x81,0x7F,0x80,0x7D,0x7B, - 0x7C,0x7B,0x7D,0x7D,0x7C,0x7D,0x7E,0x80,0x80,0x81,0x80,0x81,0x85,0x82,0x83,0x83, - 0x80,0x84,0x85,0x84,0x86,0x84,0x83,0x83,0x7F,0x81,0x7F,0x7D,0x80,0x7D,0x7C,0x7E, - 0x7E,0x80,0x81,0x81,0x81,0x81,0x81,0x84,0x86,0x84,0x84,0x82,0x80,0x84,0x83,0x82, - 0x85,0x81,0x81,0x80,0x7D,0x7F,0x7B,0x78,0x7B,0x78,0x7A,0x7D,0x7D,0x7E,0x7C,0x7D, - 0x7F,0x80,0x81,0x82,0x84,0x83,0x83,0x84,0x83,0x84,0x84,0x83,0x86,0x85,0x84,0x84, - 0x7F,0x7E,0x7E,0x7C,0x7D,0x7C,0x7B,0x7C,0x7B,0x7C,0x7C,0x7C,0x7C,0x7D,0x7F,0x80, - 0x82,0x82,0x80,0x82,0x80,0x81,0x83,0x82,0x86,0x85,0x83,0x84,0x80,0x7F,0x81,0x80, - 0x80,0x7F,0x7E,0x80,0x80,0x81,0x81,0x80,0x80,0x80,0x82,0x83,0x82,0x84,0x82,0x83, - 0x84,0x81,0x82,0x83,0x83,0x84,0x82,0x81,0x80,0x7D,0x7E,0x7D,0x7B,0x7C,0x7B,0x7B, - 0x7B,0x7B,0x7C,0x7B,0x7B,0x7E,0x7E,0x7E,0x80,0x81,0x81,0x80,0x82,0x82,0x82,0x83, - 0x84,0x84,0x84,0x83,0x83,0x82,0x82,0x80,0x7F,0x7E,0x7E,0x7D,0x7C,0x7B,0x7C,0x7D, - 0x7D,0x7E,0x7E,0x7E,0x7F,0x80,0x82,0x82,0x82,0x83,0x83,0x84,0x85,0x85,0x86,0x86, - 0x85,0x85,0x85,0x82,0x81,0x80,0x80,0x80,0x7F,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C, - 0x7D,0x7E,0x7D,0x7E,0x7E,0x7E,0x7F,0x81,0x82,0x82,0x82,0x81,0x82,0x84,0x84,0x83, - 0x81,0x81,0x80,0x80,0x7F,0x7C,0x7B,0x7C,0x7D,0x7D,0x7D,0x7B,0x7D,0x7E,0x7E,0x7F, - 0x7F,0x7E,0x7F,0x81,0x82,0x81,0x80,0x81,0x82,0x84,0x85,0x84,0x83,0x82,0x81,0x80, - 0x7F,0x7D,0x7D,0x7B,0x7B,0x7B,0x79,0x7B,0x7D,0x7D,0x7E,0x7F,0x80,0x80,0x80,0x82, - 0x82,0x83,0x84,0x83,0x84,0x86,0x86,0x87,0x85,0x85,0x86,0x83, -}; -#define sound2_len 0x0000DC8C -const unsigned char sound2_data[] = { - 0x80,0x84,0x8C,0x88,0x7F,0x85,0x8E,0x8B,0x87,0x8B,0x88,0x7C,0x7C,0x81,0x7D,0x75, - 0x77,0x80,0x81,0x86,0x95,0x86,0x78,0x75,0x6A,0x71,0x78,0x75,0x76,0x95,0x7C,0x7C, - 0xA1,0x7D,0x82,0x8D,0x77,0x66,0x6A,0x79,0x70,0x72,0x75,0x76,0x7C,0x8B,0x90,0x86, - 0x87,0x89,0x81,0x6B,0x6D,0x6E,0x62,0x80,0x94,0x81,0x8C,0x95,0x82,0x8D,0x94,0x7C, - 0x80,0x7F,0x73,0x86,0x8B,0x8D,0x9D,0x9E,0x9D,0xA2,0xA0,0x96,0x83,0x8A,0x96,0x91, - 0x97,0x88,0x86,0x96,0x92,0x8B,0x7B,0x7C,0x87,0x72,0x67,0x69,0x6B,0x7C,0x7E,0x72, - 0x72,0x6C,0x69,0x68,0x5B,0x5B,0x60,0x5E,0x67,0x63,0x62,0x63,0x63,0x77,0x7B,0x7A, - 0x70,0x5A,0x59,0x64,0x5F,0x5D,0x5F,0x70,0x7B,0x6E,0x73,0x7A,0x7C,0x83,0x99,0xB1, - 0xB1,0xA1,0x99,0x98,0x89,0x89,0x8B,0x91,0xA7,0xAE,0xAA,0xA3,0x95,0x87,0x85,0x85, - 0x86,0x88,0x94,0x9F,0x94,0x88,0x81,0x7E,0x80,0x81,0x8A,0x92,0x8D,0x8B,0x85,0x7F, - 0x84,0x7F,0x79,0x88,0x93,0x8E,0x8B,0x7F,0x7B,0x7D,0x7D,0x88,0x87,0x8D,0x9D,0x8F, - 0x87,0x84,0x7B,0x8C,0x93,0x97,0xA0,0x95,0x8B,0x8D,0x89,0x88,0x8C,0x88,0x9B,0xA6, - 0x96,0x8A,0x76,0x6E,0x77,0x74,0x73,0x72,0x74,0x7B,0x6C,0x5D,0x62,0x64,0x66,0x6C, - 0x67,0x6A,0x65,0x52,0x48,0x4A,0x58,0x58,0x5B,0x6D,0x77,0x70,0x61,0x54,0x52,0x60, - 0x5F,0x5C,0x64,0x6B,0x6C,0x60,0x58,0x5C,0x66,0x6F,0x75,0x7A,0x84,0x88,0x8E,0x93, - 0x98,0x9E,0x9B,0x99,0x9B,0xAD,0xAA,0x98,0x90,0x8C,0x99,0xA3,0x99,0x94,0x97,0x94, - 0x8B,0x82,0x85,0x90,0x97,0x93,0x8F,0x90,0x8F,0x87,0x86,0x8F,0x93,0x91,0x84,0x85, - 0x99,0x9B,0x89,0x7A,0x78,0x86,0x87,0x81,0x87,0x8F,0x90,0x81,0x78,0x80,0x8F,0x99, - 0x9A,0x98,0x99,0x9A,0x8C,0x91,0x94,0x91,0x97,0x94,0x97,0x9B,0xA3,0xA1,0x90,0x8B, - 0x84,0x86,0x8B,0x83,0x7E,0x7C,0x78,0x6C,0x65,0x68,0x6D,0x71,0x6D,0x66,0x64,0x62, - 0x59,0x57,0x5F,0x5B,0x57,0x52,0x4F,0x64,0x6E,0x63,0x5B,0x57,0x5D,0x5F,0x58,0x5F, - 0x66,0x67,0x61,0x57,0x54,0x5F,0x67,0x66,0x71,0x78,0x77,0x75,0x78,0x87,0x95,0x9A, - 0x99,0x9C,0x9A,0xA3,0xAD,0xA4,0x9A,0x96,0x94,0x97,0x97,0x95,0x98,0x8F,0x89,0x8E, - 0x88,0x8B,0x93,0x8F,0x93,0x95,0x8E,0x87,0x86,0x8C,0x92,0x8F,0x88,0x89,0x85,0x8F, - 0x97,0x8B,0x81,0x7B,0x82,0x88,0x84,0x87,0x90,0x91,0x88,0x7E,0x7C,0x85,0x8E,0x8D, - 0x94,0x9E,0x9D,0x94,0x8A,0x92,0x9B,0x96,0x90,0x90,0x93,0x98,0xA3,0x99,0x8B,0x8B, - 0x86,0x86,0x89,0x7D,0x81,0x81,0x73,0x6D,0x64,0x67,0x70,0x6B,0x6B,0x6D,0x63,0x59, - 0x55,0x52,0x5A,0x59,0x51,0x59,0x55,0x58,0x71,0x6A,0x58,0x5A,0x56,0x5D,0x5D,0x59, - 0x64,0x67,0x60,0x59,0x56,0x5E,0x68,0x66,0x72,0x7C,0x7D,0x78,0x76,0x86,0x94,0x99, - 0x99,0x9B,0x99,0x95,0xA5,0xAD,0x9D,0x94,0x94,0x8E,0x92,0x8C,0x8E,0x96,0x8F,0x84, - 0x83,0x82,0x89,0x92,0x8F,0x97,0x97,0x8B,0x86,0x86,0x8B,0x92,0x88,0x87,0x82,0x7C, - 0x95,0x9D,0x8A,0x85,0x84,0x81,0x81,0x7F,0x87,0x92,0x8F,0x86,0x86,0x8B,0x8B,0x8E, - 0x92,0x9E,0x9E,0x96,0x8F,0x8B,0x97,0x9B,0x96,0x96,0x95,0x89,0x9A,0xA9,0x96,0x8D, - 0x85,0x82,0x7D,0x78,0x7B,0x7F,0x7C,0x6F,0x68,0x65,0x67,0x62,0x5D,0x67,0x68,0x5F, - 0x55,0x4E,0x52,0x57,0x52,0x51,0x55,0x4E,0x57,0x6F,0x62,0x5A,0x59,0x56,0x5A,0x54, - 0x5A,0x67,0x6C,0x62,0x5E,0x63,0x66,0x6F,0x6C,0x7B,0x89,0x89,0x88,0x88,0x92,0x9C, - 0x99,0x9C,0xA2,0x96,0x9E,0xB4,0xAC,0x99,0x96,0x90,0x8E,0x89,0x85,0x93,0x93,0x88, - 0x7F,0x83,0x87,0x85,0x87,0x8E,0x95,0x94,0x8E,0x84,0x83,0x84,0x86,0x86,0x88,0x83, - 0x81,0x9A,0x9A,0x88,0x83,0x85,0x82,0x7E,0x82,0x8E,0x96,0x8F,0x87,0x8F,0x8E,0x85, - 0x8F,0x92,0x98,0x9E,0x97,0x90,0x8F,0x8E,0x8A,0x8E,0x95,0x8F,0x86,0x9A,0xA8,0x8F, - 0x85,0x85,0x7B,0x77,0x76,0x78,0x83,0x7F,0x6C,0x6B,0x6B,0x61,0x5D,0x5F,0x62,0x68, - 0x60,0x56,0x58,0x53,0x4D,0x4F,0x58,0x59,0x4F,0x60,0x75,0x64,0x56,0x5C,0x59,0x55, - 0x56,0x5F,0x6A,0x71,0x67,0x66,0x6D,0x68,0x69,0x74,0x7F,0x8A,0x93,0x90,0x98,0x9A, - 0x95,0x9D,0xA5,0xA6,0x9C,0xA6,0xBA,0xA9,0x91,0x97,0x93,0x86,0x81,0x89,0x92,0x95, - 0x8E,0x85,0x8D,0x88,0x80,0x83,0x8A,0x8E,0x8C,0x88,0x89,0x85,0x7A,0x7D,0x84,0x87, - 0x7B,0x84,0x9D,0x93,0x82,0x88,0x8C,0x7F,0x81,0x87,0x92,0x9B,0x93,0x90,0x9A,0x95, - 0x8A,0x8E,0x94,0x95,0x95,0x95,0x96,0x97,0x8C,0x8D,0x97,0x94,0x89,0x8B,0x9F,0x99, - 0x81,0x85,0x86,0x74,0x6C,0x73,0x78,0x7B,0x76,0x6F,0x73,0x6D,0x5D,0x5B,0x60,0x5D, - 0x5D,0x5C,0x5C,0x5F,0x57,0x51,0x5A,0x5C,0x53,0x5D,0x6B,0x60,0x5B,0x65,0x5B,0x51, - 0x58,0x5A,0x5C,0x67,0x65,0x68,0x76,0x70,0x71,0x7C,0x7F,0x85,0x90,0x97,0x9E,0xA4, - 0xA0,0xA3,0xA6,0xA3,0xA8,0xB0,0xA5,0x9F,0xA5,0x99,0x8B,0x90,0x8F,0x86,0x8C,0x8D, - 0x88,0x8E,0x8D,0x83,0x89,0x89,0x7F,0x81,0x84,0x82,0x81,0x80,0x80,0x83,0x7C,0x80, - 0x90,0x8D,0x84,0x8C,0x93,0x85,0x80,0x89,0x88,0x86,0x8C,0x8D,0x91,0x99,0x93,0x93, - 0x9D,0x98,0x90,0x96,0x98,0x94,0x92,0x90,0x94,0x94,0x8E,0x94,0x9E,0x95,0x8C,0x8F, - 0x8E,0x80,0x79,0x7E,0x77,0x70,0x72,0x6E,0x6E,0x71,0x69,0x64,0x69,0x65,0x60,0x5F, - 0x5D,0x5A,0x59,0x57,0x5A,0x5E,0x5B,0x5D,0x65,0x65,0x5D,0x5C,0x65,0x64,0x5C,0x60, - 0x66,0x63,0x66,0x68,0x69,0x6F,0x72,0x74,0x79,0x80,0x86,0x8B,0x92,0x9E,0x9F,0xA1, - 0xA6,0xA8,0xA6,0xA5,0xA6,0xA4,0xA2,0x9D,0x99,0x94,0x95,0x92,0x8F,0x8D,0x8A,0x88, - 0x86,0x86,0x86,0x84,0x82,0x83,0x82,0x80,0x7E,0x7E,0x7D,0x7E,0x7E,0x7D,0x81,0x82, - 0x82,0x84,0x82,0x84,0x85,0x85,0x86,0x88,0x89,0x8C,0x8E,0x91,0x94,0x93,0x93,0x93, - 0x93,0x93,0x94,0x96,0x95,0x95,0x95,0x92,0x92,0x92,0x91,0x91,0x92,0x92,0x8D,0x88, - 0x85,0x81,0x7F,0x7C,0x7B,0x77,0x74,0x73,0x71,0x6C,0x69,0x68,0x63,0x62,0x62,0x61, - 0x5F,0x5E,0x5C,0x5B,0x59,0x5B,0x5C,0x5E,0x5F,0x60,0x61,0x60,0x61,0x60,0x63,0x63, - 0x64,0x67,0x69,0x6D,0x6F,0x72,0x76,0x7B,0x7E,0x86,0x8E,0x93,0x9A,0x9F,0xA2,0xA5, - 0xA4,0xA3,0xA5,0xA1,0xA0,0x9E,0x9A,0x97,0x94,0x92,0x8E,0x8C,0x88,0x87,0x84,0x84, - 0x83,0x81,0x80,0x7C,0x7B,0x7B,0x7B,0x7A,0x7B,0x7B,0x7A,0x7B,0x7C,0x7C,0x7C,0x7E, - 0x7F,0x7F,0x7F,0x81,0x81,0x82,0x85,0x86,0x87,0x8A,0x8C,0x8D,0x8E,0x92,0x91,0x90, - 0x93,0x92,0x93,0x96,0x96,0x95,0x98,0x96,0x93,0x91,0x91,0x8F,0x8E,0x8D,0x8B,0x88, - 0x85,0x81,0x7E,0x7A,0x78,0x75,0x72,0x72,0x6E,0x6B,0x69,0x67,0x65,0x64,0x63,0x62, - 0x5F,0x5E,0x60,0x5D,0x5D,0x5D,0x5C,0x5D,0x5E,0x5C,0x5E,0x60,0x60,0x60,0x62,0x63, - 0x66,0x69,0x6B,0x6F,0x72,0x76,0x7A,0x7F,0x83,0x8B,0x91,0x96,0x9B,0x9E,0xA2,0xA2, - 0xA3,0xA3,0xA2,0xA0,0x9E,0x9B,0x97,0x94,0x90,0x8D,0x8B,0x87,0x84,0x82,0x81,0x7F, - 0x7D,0x7C,0x7D,0x7B,0x79,0x7A,0x79,0x78,0x78,0x78,0x78,0x79,0x7A,0x7D,0x7C,0x7E, - 0x80,0x81,0x83,0x83,0x84,0x86,0x89,0x8A,0x8C,0x8C,0x8F,0x8E,0x8D,0x8F,0x8F,0x8E, - 0x90,0x91,0x90,0x90,0x8F,0x8E,0x8E,0x8D,0x8B,0x8B,0x89,0x88,0x86,0x85,0x82,0x7F, - 0x7F,0x7D,0x7A,0x79,0x7B,0x77,0x77,0x74,0x72,0x73,0x6E,0x6D,0x6C,0x6B,0x6A,0x69, - 0x68,0x6A,0x6A,0x69,0x6B,0x6C,0x6C,0x6B,0x6D,0x6E,0x6E,0x6E,0x71,0x73,0x72,0x76, - 0x79,0x79,0x7D,0x7E,0x7F,0x84,0x84,0x86,0x8A,0x8B,0x8E,0x8E,0x8F,0x91,0x8F,0x8F, - 0x91,0x8F,0x8D,0x8C,0x8B,0x8A,0x89,0x86,0x85,0x85,0x82,0x80,0x80,0x81,0x7F,0x7E, - 0x7F,0x7D,0x7A,0x79,0x7B,0x79,0x79,0x7A,0x78,0x79,0x79,0x79,0x7A,0x7B,0x7B,0x7C, - 0x7C,0x80,0x7E,0x7E,0x82,0x81,0x82,0x83,0x85,0x86,0x87,0x86,0x88,0x88,0x88,0x88, - 0x87,0x88,0x88,0x8A,0x88,0x89,0x87,0x88,0x89,0x88,0x88,0x88,0x87,0x88,0x86,0x83, - 0x86,0x83,0x83,0x83,0x83,0x84,0x82,0x82,0x81,0x81,0x7F,0x80,0x7E,0x7F,0x7F,0x7D, - 0x7E,0x7D,0x7B,0x7B,0x7C,0x7A,0x7C,0x7B,0x7A,0x7B,0x7A,0x7C,0x7C,0x7D,0x7D,0x80, - 0x80,0x82,0x83,0x83,0x86,0x85,0x87,0x89,0x88,0x89,0x8B,0x89,0x8A,0x88,0x88,0x88, - 0x88,0x88,0x87,0x85,0x84,0x84,0x81,0x7F,0x7F,0x7F,0x7E,0x7D,0x7B,0x7B,0x79,0x78, - 0x7A,0x78,0x78,0x78,0x79,0x78,0x79,0x78,0x79,0x7A,0x7A,0x7B,0x7A,0x7B,0x7C,0x7B, - 0x7D,0x7E,0x7D,0x7F,0x80,0x80,0x81,0x80,0x81,0x80,0x81,0x82,0x82,0x82,0x82,0x84, - 0x82,0x83,0x82,0x83,0x84,0x83,0x84,0x83,0x82,0x83,0x84,0x81,0x83,0x83,0x82,0x81, - 0x82,0x82,0x81,0x81,0x80,0x81,0x80,0x81,0x7F,0x80,0x80,0x7E,0x7E,0x7E,0x7D,0x7D, - 0x7F,0x7E,0x7C,0x7C,0x7E,0x7D,0x7E,0x7C,0x7E,0x7F,0x7E,0x7E,0x7E,0x80,0x80,0x81, - 0x81,0x82,0x82,0x83,0x84,0x84,0x85,0x84,0x85,0x86,0x85,0x85,0x86,0x85,0x84,0x84, - 0x83,0x83,0x83,0x83,0x82,0x82,0x82,0x80,0x7F,0x81,0x80,0x7F,0x7F,0x7E,0x7E,0x7D, - 0x7D,0x7D,0x7E,0x7D,0x7D,0x7D,0x7D,0x7D,0x7D,0x7E,0x7D,0x7C,0x7D,0x7E,0x7E,0x7F, - 0x7E,0x7E,0x80,0x7E,0x7E,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x83, - 0x83,0x84,0x83,0x83,0x83,0x83,0x83,0x81,0x83,0x83,0x82,0x82,0x82,0x81,0x81,0x7F, - 0x80,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x7E,0x7E,0x7F,0x7E,0x7E,0x7F, - 0x7F,0x7F,0x7F,0x7E,0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x7E,0x7F,0x80,0x80,0x80, - 0x7F,0x7F,0x7F,0x80,0x81,0x82,0x81,0x82,0x82,0x81,0x81,0x82,0x82,0x82,0x83,0x81, - 0x81,0x81,0x81,0x80,0x81,0x82,0x80,0x80,0x80,0x80,0x7F,0x7F,0x7E,0x7C,0x7D,0x7C, - 0x7C,0x7C,0x7C,0x7C,0x7D,0x7C,0x7C,0x7D,0x7C,0x7C,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E, - 0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x81,0x81,0x81,0x80,0x7F,0x80,0x80,0x80,0x80,0x80, - 0x80,0x80,0x7F,0x7F,0x80,0x81,0x80,0x81,0x81,0x80,0x81,0x81,0x80,0x80,0x80,0x80, - 0x80,0x80,0x80,0x80,0x80,0x80,0x7F,0x81,0x81,0x7F,0x80,0x80,0x7F,0x7E,0x7E,0x7D, - 0x7D,0x7E,0x7D,0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x80,0x80,0x81,0x81,0x81, - 0x80,0x82,0x82,0x82,0x84,0x83,0x83,0x83,0x82,0x80,0x80,0x81,0x80,0x80,0x81,0x80, - 0x80,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x80,0x80,0x81,0x80,0x7F, - 0x80,0x7F,0x7F,0x80,0x80,0x7F,0x7F,0x80,0x7F,0x7E,0x80,0x7F,0x7F,0x7F,0x7D,0x7C, - 0x7D,0x7D,0x7D,0x7E,0x7F,0x7E,0x7F,0x80,0x80,0x7F,0x81,0x82,0x80,0x81,0x81,0x82, - 0x81,0x83,0x82,0x84,0x97,0x82,0x86,0x84,0x64,0x7F,0x80,0x68,0x67,0x77,0x7E,0x86, - 0x8C,0x8B,0x8A,0x86,0x95,0xA0,0x9C,0x98,0x95,0x91,0x8D,0x89,0x87,0x82,0x75,0x6B, - 0x63,0x5D,0x5C,0x5B,0x58,0x5A,0x61,0x65,0x6A,0x6F,0x72,0x78,0x7A,0x7D,0x83,0x85, - 0x86,0x8B,0x8E,0x90,0x95,0xA0,0xA9,0xB1,0xB7,0xB5,0xB5,0xB2,0xA9,0xA2,0x9D,0x98, - 0x92,0x8C,0x89,0x84,0x7F,0x7D,0x7A,0x77,0x74,0x71,0x6E,0x6B,0x69,0x68,0x66,0x60, - 0x58,0x51,0x49,0x46,0x49,0x4B,0x4C,0x54,0x5B,0x61,0x6A,0x6F,0x73,0x76,0x7C,0x81, - 0x85,0x8A,0x8C,0x8F,0x91,0x94,0x96,0x98,0xA2,0xAB,0xB1,0xB6,0xB4,0xB4,0xB1,0xAF, - 0xAD,0xAB,0xA4,0x9C,0x9A,0x91,0x8B,0x8A,0x86,0x83,0x7F,0x7C,0x78,0x72,0x68,0x60, - 0x5A,0x58,0x52,0x4F,0x51,0x4C,0x4F,0x54,0x57,0x61,0x64,0x69,0x6E,0x76,0x7F,0x84, - 0x8A,0x8B,0x92,0x94,0x94,0x9A,0x99,0x9F,0x9F,0xA1,0x9E,0x93,0x9D,0xA3,0xAB,0xB0, - 0xAA,0xA2,0x97,0x94,0x8D,0x85,0x7E,0x77,0x7C,0x77,0x77,0x7B,0x71,0x70,0x73,0x73, - 0x70,0x70,0x6E,0x6C,0x69,0x66,0x65,0x61,0x61,0x60,0x5A,0x5A,0x58,0x5B,0x5C,0x5B, - 0x63,0x63,0x65,0x6A,0x6D,0x73,0x75,0x78,0x7B,0x7D,0x82,0x88,0x8D,0x92,0x96,0x9D, - 0xA5,0xAD,0xB4,0xB8,0xBB,0xBD,0xC0,0xC3,0xC1,0xBF,0xBB,0xB8,0xB4,0xAB,0xA5,0x9C, - 0x96,0x92,0x89,0x83,0x7D,0x78,0x74,0x6C,0x65,0x5F,0x60,0x5F,0x57,0x51,0x4F,0x52, - 0x4F,0x4B,0x4A,0x4B,0x4A,0x48,0x4B,0x52,0x53,0x57,0x5B,0x62,0x6B,0x6B,0x6D,0x73, - 0x76,0x78,0x7A,0x7E,0x86,0x8C,0x8A,0x8A,0x92,0x99,0x9E,0xA2,0xA2,0xAC,0xB8,0xB8, - 0xB7,0xB5,0xB4,0xBB,0xBD,0xB8,0xB8,0xB8,0xB9,0xBB,0xB8,0xB1,0xB0,0xB0,0xA9,0xA1, - 0x97,0x92,0x8B,0x7E,0x76,0x6E,0x67,0x5F,0x59,0x60,0x61,0x59,0x55,0x4D,0x4B,0x49, - 0x38,0x35,0x3C,0x3A,0x3C,0x3E,0x3F,0x46,0x49,0x45,0x49,0x4B,0x4C,0x52,0x58,0x5F, - 0x67,0x6D,0x72,0x82,0x8C,0x8E,0x94,0x98,0x9B,0x9D,0x98,0x9B,0xA6,0xAA,0xA9,0xAD, - 0xB2,0xB8,0xB6,0xB1,0xB2,0xB1,0xAE,0xAD,0xAE,0xB2,0xAE,0xA8,0x9F,0xA7,0xB2,0xA4, - 0x9F,0x9F,0x96,0x90,0x7F,0x7A,0x85,0x7B,0x6F,0x75,0x77,0x76,0x70,0x62,0x66,0x63, - 0x51,0x52,0x58,0x5A,0x5B,0x56,0x58,0x5D,0x6A,0x6B,0x66,0x6E,0x6E,0x67,0x63,0x61, - 0x67,0x6A,0x69,0x70,0x7A,0x79,0x78,0x7A,0x7A,0x79,0x76,0x76,0x7B,0x7D,0x7F,0x81, - 0x84,0x80,0x86,0x99,0x92,0x91,0x9C,0x97,0x92,0x8C,0x8B,0x95,0x92,0x8C,0x96,0x9A, - 0x98,0x9B,0x99,0x99,0x97,0x91,0x98,0x99,0x94,0x95,0x90,0x8D,0x8A,0x96,0x9E,0x93, - 0x96,0x9B,0x8F,0x85,0x80,0x81,0x82,0x77,0x79,0x82,0x7B,0x75,0x74,0x6D,0x69,0x64, - 0x61,0x65,0x60,0x60,0x5F,0x5A,0x55,0x5A,0x6E,0x67,0x63,0x73,0x6D,0x65,0x62,0x63, - 0x6A,0x65,0x65,0x77,0x7A,0x75,0x7C,0x7E,0x7D,0x7B,0x7C,0x86,0x86,0x84,0x8B,0x86, - 0x83,0x81,0x92,0x9B,0x8A,0x93,0x9C,0x8E,0x89,0x8A,0x8C,0x8A,0x86,0x92,0x9E,0x99, - 0x99,0xA0,0x9D,0x97,0x94,0x96,0x97,0x91,0x93,0x93,0x8B,0x83,0x89,0x9B,0x8E,0x8A, - 0x9B,0x91,0x85,0x83,0x82,0x84,0x7A,0x7A,0x89,0x88,0x82,0x87,0x86,0x7F,0x78,0x76, - 0x7B,0x74,0x72,0x77,0x6D,0x66,0x63,0x72,0x76,0x63,0x6E,0x74,0x63,0x5E,0x60,0x60, - 0x5E,0x59,0x61,0x69,0x62,0x66,0x6C,0x68,0x66,0x66,0x6C,0x6E,0x6D,0x77,0x7A,0x76, - 0x76,0x83,0x99,0x8E,0x8E,0xA2,0x98,0x8E,0x91,0x93,0x91,0x8B,0x8F,0x9C,0x96,0x92, - 0x9B,0x99,0x92,0x8F,0x91,0x92,0x89,0x8A,0x8E,0x86,0x82,0x81,0x91,0x97,0x85,0x92, - 0x9A,0x88,0x86,0x8A,0x8A,0x87,0x82,0x8D,0x94,0x89,0x8F,0x97,0x8F,0x8B,0x8C,0x8D, - 0x88,0x82,0x88,0x84,0x7B,0x78,0x7C,0x8D,0x83,0x7A,0x8C,0x7F,0x6E,0x6F,0x6C,0x69, - 0x63,0x62,0x6F,0x6A,0x63,0x6F,0x6C,0x65,0x66,0x68,0x69,0x63,0x66,0x6E,0x63,0x5E, - 0x5E,0x68,0x75,0x66,0x70,0x7E,0x69,0x65,0x6A,0x68,0x67,0x63,0x6E,0x78,0x70,0x77, - 0x81,0x7A,0x79,0x7B,0x7D,0x7C,0x78,0x82,0x83,0x7A,0x7B,0x7C,0x8D,0x92,0x85,0x9A, - 0x9B,0x89,0x8C,0x8C,0x8B,0x89,0x87,0x96,0x98,0x93,0x9F,0xA1,0x99,0x99,0x99,0x9A, - 0x95,0x95,0x9D,0x96,0x90,0x90,0x92,0xA5,0x9D,0x97,0xAC,0x9F,0x92,0x94,0x90,0x8F, - 0x85,0x88,0x96,0x8E,0x8C,0x97,0x92,0x8B,0x8A,0x89,0x87,0x80,0x83,0x86,0x7C,0x7A, - 0x76,0x80,0x90,0x7D,0x84,0x8F,0x7B,0x77,0x76,0x74,0x71,0x65,0x72,0x78,0x6B,0x72, - 0x76,0x6E,0x69,0x66,0x67,0x61,0x5B,0x63,0x61,0x5A,0x5A,0x57,0x6B,0x6F,0x5E,0x73, - 0x75,0x63,0x64,0x64,0x67,0x5F,0x5C,0x70,0x6E,0x68,0x76,0x77,0x72,0x6F,0x70,0x75, - 0x6D,0x6F,0x78,0x73,0x71,0x6E,0x75,0x8C,0x7D,0x7C,0x92,0x85,0x7C,0x7B,0x7E,0x82, - 0x75,0x7D,0x8F,0x86,0x88,0x93,0x93,0x91,0x8C,0x92,0x94,0x8B,0x91,0x97,0x91,0x90, - 0x8B,0x9E,0xAB,0x95,0xA4,0xB0,0x9E,0x97,0x95,0x9B,0x98,0x8C,0x9C,0xA4,0x98,0x9E, - 0xA5,0xA5,0x9D,0x96,0x9F,0x99,0x8F,0x96,0x95,0x91,0x8B,0x88,0xA5,0x9E,0x8D,0xA5, - 0xA0,0x90,0x8B,0x89,0x92,0x82,0x7B,0x90,0x8D,0x84,0x88,0x8C,0x8E,0x81,0x7C,0x83, - 0x78,0x71,0x74,0x71,0x6E,0x62,0x68,0x81,0x6D,0x6A,0x7B,0x71,0x68,0x5D,0x63,0x6A, - 0x54,0x56,0x67,0x62,0x5F,0x61,0x69,0x6B,0x5E,0x60,0x64,0x5C,0x58,0x59,0x5D,0x5C, - 0x4E,0x5F,0x73,0x60,0x65,0x71,0x6D,0x68,0x5A,0x66,0x6B,0x58,0x5F,0x68,0x69,0x6D, - 0x6A,0x75,0x7E,0x74,0x77,0x7B,0x7A,0x76,0x74,0x7C,0x80,0x76,0x7F,0x94,0x8B,0x8C, - 0x95,0x93,0x99,0x89,0x8C,0x97,0x8A,0x8C,0x8F,0x90,0x98,0x93,0x97,0xA0,0x9D,0x9E, - 0x9C,0x9C,0x9D,0x98,0x9C,0x9E,0x9D,0x9D,0xA4,0xA4,0x9F,0xA4,0xA3,0xA4,0xA3,0x9D, - 0xA1,0x9F,0x9B,0x9D,0x9A,0x9B,0x9C,0x99,0x9C,0x9B,0x9A,0x9B,0x97,0x96,0x95,0x93, - 0x92,0x90,0x8E,0x8F,0x93,0x8D,0x8A,0x8D,0x8A,0x8A,0x85,0x82,0x85,0x80,0x7D,0x7D, - 0x7A,0x7B,0x79,0x77,0x79,0x76,0x75,0x74,0x72,0x73,0x6F,0x6E,0x6D,0x6C,0x6C,0x6B, - 0x74,0x6D,0x6A,0x70,0x6D,0x70,0x6A,0x67,0x6E,0x67,0x64,0x67,0x65,0x6A,0x65,0x62, - 0x69,0x64,0x62,0x63,0x64,0x64,0x5E,0x5E,0x5E,0x5C,0x58,0x60,0x6C,0x5F,0x63,0x6C, - 0x69,0x6B,0x62,0x68,0x6D,0x61,0x65,0x6B,0x6D,0x70,0x6C,0x76,0x7B,0x75,0x7B,0x7F, - 0x7F,0x7C,0x7B,0x7E,0x7D,0x77,0x78,0x90,0x8B,0x82,0x96,0x94,0x94,0x8B,0x8A,0x97, - 0x86,0x83,0x8E,0x8D,0x8F,0x8C,0x94,0x9F,0x94,0x99,0xA0,0x9A,0x96,0x92,0x95,0x92, - 0x8A,0x85,0x9D,0xA3,0x90,0xA4,0xA8,0xA0,0x98,0x91,0x9F,0x8F,0x82,0x92,0x8F,0x8D, - 0x8E,0x93,0x9F,0x94,0x94,0x9E,0x93,0x8D,0x8B,0x8C,0x86,0x7F,0x79,0x89,0x96,0x80, - 0x90,0x9A,0x8E,0x8A,0x81,0x8C,0x81,0x6F,0x81,0x7E,0x78,0x7E,0x81,0x8D,0x84,0x83, - 0x90,0x83,0x7D,0x7E,0x7C,0x78,0x73,0x6E,0x75,0x8B,0x76,0x7E,0x90,0x80,0x7E,0x74, - 0x7A,0x74,0x60,0x70,0x6F,0x65,0x6E,0x70,0x79,0x75,0x72,0x82,0x74,0x6E,0x73,0x6D, - 0x6C,0x6B,0x67,0x69,0x83,0x78,0x76,0x8D,0x81,0x80,0x7A,0x7C,0x7D,0x66,0x74,0x79, - 0x6B,0x76,0x7A,0x80,0x80,0x7B,0x89,0x7F,0x76,0x7C,0x74,0x72,0x72,0x71,0x6A,0x83, - 0x84,0x74,0x90,0x88,0x81,0x7F,0x7B,0x82,0x6B,0x6F,0x7E,0x6F,0x75,0x7E,0x81,0x84, - 0x7F,0x8B,0x87,0x7A,0x81,0x7B,0x78,0x79,0x7A,0x70,0x84,0x91,0x7A,0x90,0x94,0x85, - 0x86,0x81,0x86,0x75,0x71,0x83,0x77,0x76,0x84,0x85,0x87,0x84,0x8D,0x8B,0x7B,0x84, - 0x7F,0x79,0x7C,0x7E,0x74,0x7E,0x97,0x7F,0x8B,0x9C,0x8A,0x89,0x85,0x89,0x7E,0x72, - 0x85,0x80,0x78,0x88,0x8A,0x8B,0x8A,0x8E,0x92,0x81,0x86,0x85,0x7B,0x7E,0x80,0x79, - 0x75,0x94,0x89,0x80,0x9C,0x8F,0x85,0x85,0x84,0x80,0x70,0x7D,0x82,0x73,0x81,0x8A, - 0x85,0x85,0x88,0x8D,0x7D,0x7E,0x85,0x78,0x7A,0x7E,0x7C,0x70,0x87,0x93,0x78,0x91, - 0x96,0x82,0x83,0x83,0x82,0x73,0x75,0x84,0x76,0x78,0x8B,0x86,0x83,0x88,0x8C,0x81, - 0x79,0x84,0x7B,0x76,0x7C,0x7F,0x74,0x76,0x96,0x81,0x7F,0x9C,0x88,0x80,0x84,0x82, - 0x7B,0x70,0x7F,0x80,0x73,0x84,0x8B,0x82,0x86,0x8C,0x88,0x7B,0x80,0x81,0x75,0x7B, - 0x7E,0x7C,0x71,0x84,0x94,0x76,0x8C,0x98,0x7D,0x82,0x84,0x7D,0x73,0x73,0x82,0x77, - 0x75,0x8A,0x86,0x7E,0x88,0x89,0x7E,0x7B,0x80,0x79,0x74,0x7B,0x7C,0x77,0x72,0x8D, - 0x88,0x74,0x92,0x8B,0x76,0x80,0x7F,0x76,0x6F,0x77,0x7F,0x73,0x7C,0x8B,0x7F,0x80, - 0x89,0x82,0x7B,0x7C,0x80,0x76,0x77,0x7F,0x7D,0x79,0x7A,0x95,0x84,0x7B,0x9A,0x84, - 0x77,0x85,0x7C,0x76,0x73,0x7C,0x80,0x77,0x84,0x8A,0x81,0x85,0x86,0x81,0x7A,0x7B, - 0x7E,0x75,0x7B,0x7E,0x7F,0x7D,0x7B,0x96,0x82,0x7C,0x98,0x7F,0x77,0x81,0x7A,0x78, - 0x73,0x7C,0x84,0x79,0x81,0x8B,0x7F,0x7F,0x84,0x7D,0x78,0x7B,0x7E,0x77,0x7A,0x80, - 0x7E,0x81,0x79,0x88,0x90,0x77,0x88,0x8D,0x76,0x7C,0x7D,0x7A,0x79,0x7A,0x85,0x7F, - 0x7F,0x8B,0x82,0x80,0x84,0x80,0x7F,0x7E,0x81,0x7F,0x7D,0x82,0x80,0x81,0x88,0x7F, - 0x7F,0x91,0x83,0x7F,0x8B,0x7F,0x7B,0x7D,0x7D,0x7A,0x7A,0x82,0x81,0x80,0x84,0x83, - 0x7F,0x7F,0x81,0x7D,0x7E,0x82,0x82,0x80,0x81,0x85,0x80,0x81,0x87,0x7C,0x85,0x8B, - 0x7C,0x89,0x86,0x7C,0x81,0x7C,0x7C,0x7B,0x7C,0x80,0x7D,0x7F,0x81,0x7F,0x81,0x7F, - 0x7F,0x80,0x80,0x80,0x80,0x7F,0x7F,0x80,0x7E,0x83,0x81,0x77,0x84,0x87,0x80,0x89, - 0x88,0x81,0x7D,0x7E,0x7A,0x76,0x7E,0x7F,0x7D,0x82,0x83,0x81,0x80,0x84,0x85,0x81, - 0x85,0x84,0x80,0x81,0x82,0x81,0x80,0x83,0x81,0x7E,0x82,0x82,0x82,0x83,0x83,0x80, - 0x7C,0x7B,0x77,0x79,0x7D,0x7E,0x83,0x82,0x80,0x81,0x80,0x82,0x85,0x86,0x85,0x84, - 0x88,0x86,0x83,0x83,0x82,0x7F,0x7C,0x81,0x80,0x7E,0x80,0x7D,0x78,0x75,0x83,0x85, - 0x7D,0x8B,0x8A,0x7E,0x7B,0x7C,0x78,0x74,0x7C,0x81,0x7B,0x7D,0x81,0x7D,0x7E,0x85, - 0x85,0x84,0x86,0x85,0x82,0x7F,0x83,0x7F,0x7B,0x85,0x84,0x81,0x88,0x8C,0x87,0x7E, - 0x7E,0x79,0x70,0x74,0x7A,0x7B,0x7E,0x81,0x82,0x7E,0x7E,0x81,0x82,0x82,0x84,0x84, - 0x7F,0x7E,0x80,0x82,0x82,0x86,0x89,0x83,0x81,0x81,0x7B,0x7B,0x7D,0x7D,0x7D,0x7C, - 0x82,0x82,0x7D,0x7F,0x87,0x8A,0x85,0x89,0x8C,0x83,0x7E,0x7A,0x78,0x77,0x79,0x7F, - 0x7F,0x7F,0x82,0x81,0x80,0x80,0x81,0x82,0x81,0x78,0x78,0x80,0x77,0x7D,0x87,0x86, - 0x85,0x82,0x80,0x79,0x74,0x75,0x78,0x7B,0x7D,0x81,0x82,0x7F,0x7F,0x80,0x81,0x83, - 0x85,0x82,0x81,0x7F,0x80,0x80,0x7F,0x89,0x86,0x83,0x87,0x7E,0x7A,0x78,0x77,0x78, - 0x7B,0x7D,0x7D,0x7C,0x7E,0x80,0x83,0x96,0x85,0x6F,0x84,0x95,0x82,0x66,0x87,0x7D, - 0x64,0x80,0x85,0x82,0x7F,0x92,0x8A,0x77,0x89,0x85,0x7F,0x7D,0x90,0x92,0x7D,0x7B, - 0x7B,0x7F,0x7B,0x75,0x76,0x79,0x6D,0x71,0x7E,0x7C,0x85,0x93,0x8F,0x8B,0x8D,0x83, - 0x87,0x85,0x87,0x8D,0x8A,0x85,0x84,0x8D,0x79,0x76,0x8F,0x77,0x61,0x73,0x73,0x74, - 0x69,0x67,0x82,0x71,0x6D,0x7C,0x75,0x78,0x76,0x7D,0x7C,0x6B,0x71,0x82,0x80,0x73, - 0x6C,0x7B,0x84,0x7D,0x80,0x75,0x7D,0x92,0x8B,0x93,0x8E,0x8C,0x96,0x8A,0x8E,0x8D, - 0x82,0x8E,0xA0,0xA1,0x96,0x9D,0xA0,0x97,0x97,0x96,0x90,0x83,0x88,0x93,0x8A,0x9B, - 0xAE,0x92,0x85,0x8A,0x7D,0x6A,0x65,0x72,0x77,0x74,0x77,0x71,0x70,0x73,0x78,0x79, - 0x6F,0x6D,0x6B,0x6F,0x6B,0x73,0x74,0x71,0x7C,0x7D,0x7E,0x6F,0x72,0x8C,0x7F,0x70, - 0x75,0x6F,0x64,0x65,0x71,0x6C,0x63,0x6D,0x7B,0x77,0x69,0x6E,0x71,0x6D,0x6B,0x70, - 0x79,0x79,0x83,0x91,0x9C,0xA7,0x9C,0x8E,0xA2,0xAE,0x98,0x96,0xA1,0x8C,0x81,0x7F, - 0x79,0x7F,0x7F,0x85,0x88,0x8A,0x8D,0x84,0x80,0x7D,0x75,0x74,0x7F,0x82,0x80,0x82, - 0x81,0x81,0x7D,0x76,0x84,0x9A,0x8C,0x86,0x90,0x7C,0x71,0x76,0x70,0x6F,0x73,0x7B, - 0x89,0x89,0x84,0x83,0x82,0x78,0x75,0x76,0x80,0x89,0x86,0x88,0x8B,0x8B,0x7E,0x8D, - 0xA1,0x97,0x95,0x9A,0x90,0x85,0x85,0x88,0x8E,0x86,0x8A,0x96,0x94,0x88,0x82,0x7D, - 0x73,0x6F,0x6E,0x79,0x7B,0x6F,0x74,0x6B,0x61,0x61,0x5B,0x71,0x72,0x65,0x74,0x76, - 0x6B,0x67,0x6A,0x6A,0x6E,0x6A,0x76,0x81,0x74,0x73,0x78,0x76,0x6E,0x70,0x77,0x7F, - 0x7C,0x76,0x70,0x68,0x67,0x6B,0x7C,0x7F,0x78,0x85,0x81,0x6C,0x72,0x74,0x7B,0x8B, - 0x8D,0xA3,0xB1,0xAA,0xAA,0xAA,0x9D,0x94,0x9A,0x98,0x99,0x9C,0x94,0x91,0x8D,0x85, - 0x8C,0x9A,0x92,0x8A,0x97,0x8D,0x7B,0x77,0x7A,0x88,0x85,0x85,0x8D,0x91,0x89,0x84, - 0x88,0x7F,0x80,0x82,0x83,0x86,0x83,0x7F,0x7A,0x7F,0x7C,0x89,0x96,0x80,0x81,0x8C, - 0x7C,0x72,0x71,0x78,0x84,0x80,0x8C,0x9B,0x9C,0x99,0x94,0x90,0x90,0x8A,0x8B,0x98, - 0x97,0x95,0x8F,0x8F,0x8D,0x87,0x9A,0x9D,0x8B,0x91,0x94,0x81,0x6F,0x6E,0x73,0x70, - 0x6A,0x70,0x79,0x71,0x6E,0x6A,0x63,0x64,0x5C,0x63,0x69,0x6C,0x6E,0x5F,0x63,0x5D, - 0x61,0x78,0x74,0x70,0x7A,0x74,0x65,0x5D,0x5F,0x6E,0x72,0x6D,0x79,0x7F,0x70,0x6A, - 0x62,0x61,0x65,0x64,0x6F,0x77,0x75,0x6F,0x6C,0x6D,0x77,0x8E,0x9F,0x99,0xA6,0xAC, - 0x9C,0x94,0x8E,0x96,0x98,0x98,0xA2,0xA8,0xA0,0x99,0x8E,0x8B,0x89,0x84,0x88,0x91, - 0x90,0x84,0x7E,0x7B,0x7B,0x7F,0x9A,0x9C,0x8A,0x92,0x8F,0x7F,0x76,0x76,0x81,0x86, - 0x80,0x8A,0x8F,0x8A,0x84,0x7E,0x7E,0x7C,0x7B,0x7F,0x8B,0x8B,0x7B,0x73,0x78,0x79, - 0x88,0x9A,0x95,0x97,0x9E,0x8C,0x80,0x7F,0x8C,0x98,0x8C,0x94,0xA1,0x9A,0x93,0x8B, - 0x8D,0x8E,0x89,0x86,0x90,0x92,0x8A,0x7F,0x74,0x72,0x71,0x83,0x86,0x78,0x7A,0x77, - 0x62,0x56,0x59,0x65,0x65,0x5D,0x6B,0x74,0x6C,0x65,0x62,0x65,0x68,0x63,0x64,0x73, - 0x76,0x6F,0x66,0x5E,0x62,0x76,0x8C,0x81,0x77,0x84,0x7A,0x66,0x5C,0x5F,0x70,0x70, - 0x6A,0x79,0x7F,0x76,0x72,0x6F,0x72,0x7D,0x7E,0x8C,0x9A,0x9C,0x9E,0x94,0x91,0x95, - 0xA7,0xB5,0xAD,0xA9,0xAD,0x9B,0x8C,0x85,0x86,0x92,0x8D,0x88,0x93,0x93,0x87,0x82, - 0x7E,0x80,0x85,0x7E,0x86,0x8F,0x89,0x82,0x75,0x72,0x76,0x8A,0x94,0x88,0x8D,0x91, - 0x83,0x72,0x6D,0x77,0x80,0x7C,0x7E,0x89,0x87,0x85,0x82,0x76,0x81,0x86,0x82,0x8B, - 0x90,0x93,0x8A,0x83,0x88,0x85,0x9B,0xA7,0x99,0x9D,0x9D,0x90,0x86,0x7F,0x82,0x8E, - 0x83,0x83,0x94,0x8D,0x88,0x7A,0x6D,0x79,0x74,0x69,0x71,0x79,0x75,0x6A,0x61,0x60, - 0x63,0x70,0x7D,0x72,0x71,0x79,0x6C,0x5D,0x5A,0x5C,0x67,0x63,0x60,0x6F,0x72,0x71, - 0x6F,0x6A,0x6F,0x70,0x64,0x65,0x70,0x72,0x6C,0x60,0x60,0x62,0x6D,0x7C,0x72,0x73, - 0x7C,0x77,0x70,0x69,0x6F,0x83,0x82,0x81,0x92,0x9F,0xAB,0xA8,0x9E,0xA6,0xA3,0x98, - 0x96,0x9E,0xA0,0x9B,0x95,0x8C,0x85,0x8A,0x9C,0x95,0x89,0x93,0x8E,0x81,0x7A,0x73, - 0x80,0x7F,0x73,0x7A,0x83,0x86,0x84,0x81,0x7E,0x82,0x7B,0x73,0x78,0x7B,0x7F,0x7F, - 0x7B,0x7C,0x76,0x88,0x96,0x86,0x88,0x8C,0x85,0x85,0x7D,0x79,0x88,0x85,0x84,0x8B, - 0x8D,0x96,0x93,0x8F,0x96,0x92,0x8B,0x89,0x89,0x8A,0x8C,0x8D,0x89,0x8C,0x84,0x85, - 0x8E,0x80,0x83,0x82,0x78,0x7F,0x78,0x71,0x75,0x6E,0x6F,0x73,0x6D,0x6E,0x73,0x6D, - 0x6C,0x6C,0x67,0x6A,0x6A,0x69,0x6E,0x6F,0x6C,0x6C,0x6A,0x69,0x6D,0x6E,0x6F,0x70, - 0x6E,0x70,0x71,0x6D,0x6D,0x6E,0x6F,0x6F,0x6E,0x6B,0x6C,0x6D,0x6C,0x6E,0x71,0x75, - 0x7B,0x7E,0x85,0x8B,0x8E,0x95,0x9A,0x9E,0x9E,0xA2,0xAA,0xA9,0xA2,0xA4,0xA4,0xA0, - 0xA1,0x9A,0x97,0x9A,0x94,0x8D,0x89,0x85,0x86,0x82,0x7F,0x7F,0x7C,0x7F,0x7F,0x7A, - 0x7B,0x7E,0x7C,0x7C,0x7A,0x7B,0x7E,0x7B,0x7F,0x81,0x7B,0x7A,0x81,0x85,0x87,0x84, - 0x83,0x8B,0x87,0x83,0x86,0x85,0x89,0x8A,0x81,0x88,0x8D,0x8D,0x94,0x92,0x94,0x97, - 0x93,0x94,0x93,0x91,0x91,0x8E,0x91,0x99,0x94,0x90,0x8D,0x8C,0x8D,0x84,0x7E,0x83, - 0x80,0x7B,0x79,0x78,0x7C,0x7A,0x70,0x77,0x7C,0x74,0x76,0x72,0x74,0x77,0x6D,0x6E, - 0x74,0x71,0x6F,0x68,0x76,0x80,0x70,0x72,0x75,0x77,0x76,0x67,0x6B,0x76,0x69,0x65, - 0x6A,0x69,0x71,0x6A,0x66,0x73,0x73,0x6D,0x6B,0x6C,0x74,0x72,0x71,0x7D,0x80,0x80, - 0x79,0x8B,0xA7,0x9D,0x98,0xAA,0xB2,0xAA,0x97,0x98,0xA9,0x9B,0x8D,0x94,0x9C,0x9C, - 0x93,0x8A,0x98,0x96,0x82,0x7F,0x84,0x82,0x7B,0x79,0x7F,0x7D,0x77,0x6E,0x77,0x93, - 0x84,0x75,0x85,0x88,0x80,0x6F,0x6C,0x80,0x7A,0x6A,0x77,0x84,0x87,0x81,0x7D,0x8C, - 0x8E,0x7D,0x7D,0x88,0x8A,0x84,0x80,0x8F,0x96,0x89,0x81,0x8A,0xA6,0x9F,0x8B,0x9D, - 0xA2,0x9A,0x8A,0x80,0x92,0x91,0x77,0x7E,0x90,0x8D,0x83,0x7E,0x8B,0x8F,0x7B,0x74, - 0x82,0x7D,0x74,0x72,0x78,0x7F,0x73,0x6A,0x6A,0x80,0x84,0x6D,0x76,0x80,0x77,0x6D, - 0x62,0x6F,0x74,0x5F,0x5E,0x6F,0x74,0x6B,0x67,0x70,0x7A,0x6A,0x5E,0x6D,0x6D,0x5F, - 0x5F,0x67,0x6C,0x66,0x61,0x5F,0x68,0x82,0x72,0x6E,0x89,0x87,0x7F,0x7F,0x82,0x90, - 0x8E,0x85,0x97,0xA5,0xA2,0x9F,0x9F,0xAC,0xAB,0x95,0x9B,0xA4,0x91,0x8B,0x8F,0x8E, - 0x8A,0x7F,0x80,0x76,0x7E,0x92,0x7B,0x79,0x88,0x7C,0x74,0x6C,0x6B,0x73,0x66,0x61, - 0x71,0x76,0x6E,0x71,0x77,0x80,0x7E,0x73,0x7F,0x82,0x77,0x77,0x80,0x81,0x7E,0x7F, - 0x83,0x80,0x87,0xA0,0x8F,0x8C,0x9E,0x96,0x91,0x8B,0x88,0x8F,0x85,0x7B,0x88,0x8A, - 0x84,0x86,0x88,0x8C,0x8C,0x82,0x85,0x89,0x81,0x7C,0x7C,0x7C,0x7C,0x79,0x7B,0x79, - 0x6F,0x88,0x87,0x71,0x83,0x83,0x7C,0x78,0x6D,0x77,0x77,0x65,0x69,0x76,0x72,0x6D, - 0x6F,0x76,0x79,0x75,0x72,0x7B,0x7B,0x6E,0x70,0x72,0x6E,0x6C,0x6D,0x72,0x6C,0x69, - 0x81,0x7A,0x72,0x81,0x7E,0x80,0x7A,0x76,0x81,0x7B,0x71,0x79,0x80,0x80,0x81,0x84, - 0x8E,0x90,0x8A,0x8F,0x95,0x8D,0x87,0x88,0x8A,0x83,0x7F,0x84,0x86,0x7F,0x79,0x88, - 0x86,0x78,0x83,0x80,0x7C,0x7D,0x71,0x7A,0x7A,0x6C,0x71,0x74,0x73,0x74,0x73,0x78, - 0x79,0x77,0x79,0x7D,0x7D,0x7B,0x7C,0x7D,0x7D,0x7E,0x7F,0x80,0x82,0x82,0x83,0x87, - 0x86,0x7E,0x86,0x87,0x83,0x86,0x84,0x89,0x88,0x85,0x89,0x89,0x87,0x86,0x85,0x88, - 0x85,0x83,0x87,0x85,0x87,0x86,0x85,0x8A,0x87,0x86,0x89,0x87,0x85,0x87,0x84,0x83, - 0x85,0x82,0x80,0x81,0x83,0x80,0x80,0x81,0x80,0x80,0x7E,0x7E,0x7E,0x7C,0x7C,0x7C, - 0x7E,0x7E,0x7C,0x7F,0x7F,0x7E,0x7E,0x7B,0x7F,0x7E,0x7C,0x81,0x81,0x7E,0x81,0x80, - 0x82,0x83,0x82,0x83,0x86,0x84,0x83,0x84,0x84,0x85,0x84,0x86,0x86,0x87,0x86,0x86, - 0x84,0x84,0x84,0x82,0x82,0x81,0x82,0x82,0x82,0x80,0x80,0x80,0x7C,0x7E,0x7B,0x7A, - 0x7B,0x7B,0x7C,0x7B,0x7A,0x79,0x7A,0x7B,0x7A,0x78,0x7B,0x79,0x79,0x7A,0x7A,0x7B, - 0x7B,0x7D,0x7D,0x7E,0x7D,0x80,0x7F,0x7E,0x7F,0x80,0x81,0x81,0x82,0x80,0x82,0x82, - 0x84,0x83,0x83,0x85,0x84,0x84,0x85,0x84,0x84,0x85,0x84,0x84,0x85,0x84,0x84,0x86, - 0x87,0x87,0x85,0x85,0x87,0x85,0x84,0x84,0x84,0x85,0x84,0x82,0x84,0x84,0x83,0x85, - 0x85,0x83,0x82,0x84,0x82,0x81,0x82,0x80,0x82,0x82,0x81,0x81,0x80,0x81,0x82,0x82, - 0x81,0x80,0x81,0x81,0x7F,0x81,0x80,0x81,0x81,0x82,0x83,0x82,0x82,0x84,0x85,0x82, - 0x83,0x85,0x86,0x85,0x85,0x87,0x86,0x86,0x87,0x88,0x86,0x86,0x87,0x87,0x86,0x87, - 0x85,0x86,0x86,0x83,0x83,0x83,0x83,0x81,0x80,0x80,0x7E,0x7E,0x7F,0x7F,0x7E,0x7F, - 0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7E,0x7D,0x7D,0x80,0x7F,0x80,0x81,0x80, - 0x80,0x80,0x80,0x80,0x7F,0x80,0x81,0x80,0x81,0x84,0x82,0x83,0x84,0x82,0x82,0x83, - 0x81,0x81,0x82,0x81,0x81,0x81,0x80,0x82,0x81,0x81,0x83,0x82,0x82,0x82,0x81,0x83, - 0x82,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x80,0x81,0x80,0x7F,0x80,0x80,0x81, - 0x7F,0x7F,0x80,0x7F,0x7E,0x80,0x80,0x7E,0x80,0x7F,0x7D,0x7E,0x7E,0x7C,0x7D,0x7E, - 0x7E,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x80,0x7F,0x80,0x7F,0x7F,0x7F,0x7F,0x80,0x7F, - 0x81,0x81,0x80,0x81,0x81,0x80,0x80,0x7F,0x80,0x80,0x7F,0x80,0x7F,0x80,0x80,0x7F, - 0x7E,0x7F,0x7F,0x7C,0x7E,0x7E,0x7D,0x7C,0x7C,0x7C,0x7C,0x7C,0x7C,0x7E,0x7D,0x7C, - 0x7B,0x7C,0x7C,0x7C,0x7C,0x7D,0x7D,0x7C,0x7C,0x7D,0x7C,0x7B,0x7C,0x7C,0x7E,0x7D, - 0x7E,0x7D,0x7D,0x7E,0x7D,0x80,0x7E,0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7D,0x7E,0x7F, - 0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7E,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, - 0x7E,0x80,0x7E,0x7F,0x7F,0x7E,0x7D,0x7F,0x80,0x7E,0x80,0x80,0x81,0x7F,0x7F,0x7F, - 0x7E,0x7F,0x7D,0x7F,0x7F,0x7E,0x7F,0x7F,0x7E,0x7E,0x7E,0x7F,0x7E,0x7F,0x7F,0x7D, - 0x7F,0x7E,0x7D,0x7F,0x7F,0x7F,0x81,0x80,0x80,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x7F, - 0x82,0x80,0x7E,0x81,0x80,0x81,0x81,0x80,0x81,0x81,0x81,0x81,0x7F,0x81,0x80,0x7F, - 0x81,0x7E,0x7F,0x7E,0x7D,0x80,0x7E,0x7E,0x7F,0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7D, - 0x7F,0x7E,0x7C,0x80,0x7D,0x7E,0x7F,0x7E,0x81,0x7E,0x81,0x7F,0x7E,0x82,0x80,0x7F, - 0x80,0x80,0x7F,0x81,0x81,0x82,0x7F,0x7F,0x80,0x80,0x80,0x80,0x81,0x83,0x81,0x7F, - 0x82,0x81,0x81,0x81,0x7D,0x81,0x80,0x81,0x82,0x80,0x83,0x82,0x80,0x82,0x80,0x81, - 0x80,0x7F,0x83,0x80,0x80,0x81,0x81,0x82,0x81,0x82,0x81,0x81,0x81,0x81,0x81,0x7D, - 0x80,0x81,0x80,0x81,0x7F,0x82,0x81,0x8C,0x84,0x81,0x85,0x67,0x78,0x80,0x6D,0x69, - 0x77,0x7E,0x85,0x8C,0x87,0x8C,0x86,0x91,0xA1,0x9D,0xA4,0xA3,0x93,0x8E,0x79,0x82, - 0x92,0x76,0x70,0x76,0x6F,0x58,0x5A,0x52,0x51,0x71,0x6A,0x65,0x55,0x5E,0x70,0x6B, - 0x73,0x77,0x81,0x83,0x94,0x95,0x93,0x9B,0xB0,0xAC,0x85,0xBE,0xAF,0x98,0xB6,0x9B, - 0xB0,0xB5,0xA0,0x94,0x8B,0x94,0x9A,0x7B,0x6E,0x79,0x66,0x75,0x6F,0x6B,0x7F,0x68, - 0x63,0x68,0x6F,0x7C,0x6C,0x50,0x4E,0x55,0x5A,0x60,0x64,0x5E,0x56,0x5A,0x6E,0x6F, - 0x78,0x88,0x89,0xA1,0xA9,0x9D,0x91,0x95,0x90,0x8D,0x9A,0xA3,0xB4,0xB1,0x9F,0xA8, - 0xA9,0xA4,0xAB,0x9E,0x9B,0x95,0x8B,0x80,0x77,0x7C,0x70,0x76,0x76,0x75,0x84,0x77, - 0x6E,0x65,0x55,0x5E,0x61,0x50,0x44,0x4F,0x4F,0x3B,0x3A,0x46,0x5D,0x5A,0x62,0x74, - 0x6F,0x7F,0x92,0x90,0x98,0x8A,0x81,0xA0,0x98,0x9A,0xA5,0x93,0xA1,0xB1,0xB6,0xC5, - 0xBA,0xB1,0xC4,0xBB,0xB4,0xC1,0xA7,0x9A,0xAB,0x9C,0x9A,0x99,0x85,0x7B,0x71,0x6B, - 0x70,0x75,0x69,0x63,0x57,0x55,0x5D,0x57,0x56,0x50,0x5A,0x5F,0x4A,0x4B,0x44,0x4E, - 0x5C,0x5B,0x67,0x69,0x71,0x85,0x83,0x8D,0x9A,0x8A,0x9A,0x9F,0x9E,0xB0,0xAE,0xB7, - 0xB5,0xB5,0xB6,0xAF,0xB4,0xA6,0x9E,0xAC,0xA4,0xA5,0xA3,0x99,0x9A,0x98,0x92,0x8F, - 0x83,0x76,0x68,0x63,0x59,0x5F,0x60,0x49,0x50,0x5B,0x5D,0x4F,0x2D,0x22,0x2C,0x39, - 0x43,0x44,0x3D,0x3F,0x47,0x47,0x44,0x4B,0x4F,0x5A,0x5F,0x5A,0x66,0x6F,0x82,0x82, - 0x85,0xAD,0xBE,0xBB,0xAC,0xA5,0xB7,0xBD,0xC1,0xCE,0xC7,0xC9,0xC6,0xAA,0x93,0x92, - 0xA1,0xA1,0xAD,0xB1,0xA0,0xA4,0xA4,0xA3,0xA4,0x9A,0x9E,0xA2,0xA0,0xA4,0x9C,0x91, - 0x82,0x75,0x7A,0x8B,0x86,0x70,0x62,0x60,0x5E,0x60,0x65,0x5F,0x56,0x52,0x63,0x58, - 0x4E,0x45,0x48,0x63,0x5C,0x67,0x6F,0x6B,0x6C,0x70,0x76,0x6C,0x65,0x78,0x88,0x8C, - 0x93,0x84,0x87,0x83,0x65,0x76,0x7D,0x7A,0x7D,0x83,0x97,0x91,0x85,0x8C,0x91,0x84, - 0x8A,0x90,0x8F,0x8B,0x84,0x8E,0xA3,0xA2,0x94,0xA4,0xA9,0x9A,0x8F,0x91,0x99,0x91, - 0x91,0x95,0x9C,0x98,0x8D,0x94,0x86,0x78,0x77,0x78,0x76,0x62,0x66,0x7B,0x78,0x71, - 0x78,0x79,0x73,0x6F,0x6C,0x75,0x6E,0x59,0x57,0x5B,0x5A,0x5B,0x66,0x5E,0x50,0x57, - 0x60,0x67,0x5B,0x51,0x6B,0x77,0x6E,0x71,0x79,0x7A,0x6C,0x74,0x82,0x86,0x91,0x8F, - 0x9C,0x9B,0x89,0x95,0x9E,0xA1,0xA6,0xA2,0xA0,0x94,0x8A,0x9D,0xA7,0xA7,0xAA,0xAD, - 0xAA,0xA7,0xA5,0xA4,0xAB,0x9D,0xA4,0xBF,0xB9,0xAD,0x9F,0xA2,0xAD,0xB2,0xAF,0x99, - 0x90,0x8D,0x9A,0xAA,0x92,0x8A,0x97,0x88,0x77,0x66,0x6A,0x6C,0x5A,0x52,0x51,0x54, - 0x49,0x3F,0x4C,0x5E,0x58,0x4B,0x51,0x48,0x44,0x4B,0x58,0x5F,0x52,0x59,0x58,0x4A, - 0x41,0x3E,0x4B,0x53,0x50,0x50,0x54,0x53,0x48,0x4E,0x62,0x68,0x6B,0x6E,0x78,0x8A, - 0x81,0x8F,0xA5,0x9E,0xA7,0xB2,0xAE,0xAB,0xA5,0xAE,0xB7,0xAE,0xA6,0xA0,0xA6,0x99, - 0x88,0x95,0x92,0x94,0xA3,0x91,0x8A,0x92,0x86,0x9D,0xBE,0xA2,0x90,0x98,0x8B,0x93, - 0xA3,0x95,0x97,0x96,0x8C,0x9D,0x99,0x8A,0x85,0x7A,0x88,0x8A,0x78,0x79,0x7D,0x77, - 0x7D,0x95,0x97,0x8E,0x8C,0x81,0x85,0x83,0x7E,0x8B,0x96,0x89,0x78,0x75,0x6D,0x68, - 0x83,0x9A,0x92,0x7F,0x69,0x70,0x78,0x6F,0x5F,0x59,0x62,0x5A,0x5B,0x5D,0x55,0x55, - 0x4E,0x51,0x63,0x5E,0x4C,0x4D,0x50,0x59,0x5C,0x61,0x6B,0x6E,0x68,0x69,0x71,0x6F, - 0x84,0x8E,0x7F,0x78,0x71,0x6C,0x6E,0x74,0x83,0x8F,0x7F,0x80,0x89,0x83,0x89,0x8F, - 0xA2,0xB9,0xB7,0xAE,0xAD,0xA9,0xAE,0xAB,0xB0,0xC5,0xB6,0x98,0x94,0xA1,0xAD,0xA5, - 0x9A,0xA1,0x9D,0x88,0x83,0x83,0x79,0x7D,0x83,0x88,0x87,0x77,0x6E,0x76,0x75,0x80, - 0x8B,0x81,0x83,0x88,0x80,0x76,0x6A,0x75,0x81,0x79,0x6A,0x5E,0x61,0x69,0x72,0x7C, - 0x80,0x7C,0x6F,0x72,0x76,0x80,0x80,0x6C,0x80,0x91,0x83,0x81,0x7F,0x80,0x85,0x85, - 0x92,0x99,0x80,0x6B,0x70,0x76,0x73,0x73,0x73,0x6C,0x69,0x65,0x68,0x61,0x65,0x80, - 0x7A,0x62,0x5B,0x59,0x59,0x6A,0x77,0x7B,0x81,0x76,0x6B,0x76,0x7F,0x7D,0x7E,0x81, - 0x8A,0x82,0x6A,0x67,0x6C,0x6B,0x74,0x89,0x8F,0x84,0x75,0x7D,0x8D,0x8F,0x94,0x9A, - 0xA6,0xA6,0x9E,0x9F,0xA1,0xAF,0xBB,0xBC,0xBE,0xB9,0xB1,0xB0,0xA4,0xA2,0xAE,0xA1, - 0x8F,0x8B,0x85,0x81,0x7F,0x83,0x91,0x94,0x87,0x7D,0x79,0x78,0x74,0x74,0x7D,0x81, - 0x6F,0x5B,0x63,0x6A,0x62,0x67,0x7A,0x82,0x74,0x69,0x60,0x65,0x6A,0x6E,0x7C,0x76, - 0x6C,0x66,0x67,0x76,0x7F,0x7F,0x86,0x87,0x87,0x89,0x80,0x76,0x81,0x90,0x86,0x7C, - 0x76,0x67,0x64,0x6C,0x79,0x7F,0x7C,0x6C,0x63,0x6D,0x6F,0x68,0x63,0x6D,0x6D,0x63, - 0x61,0x67,0x6A,0x6C,0x86,0x88,0x70,0x68,0x61,0x69,0x72,0x72,0x81,0x7D,0x70,0x73, - 0x77,0x7F,0x82,0x81,0x88,0x8B,0x82,0x77,0x78,0x74,0x7C,0x9E,0x9D,0x8C,0x8C,0x90, - 0x99,0x9C,0xA0,0xAB,0xB7,0xAF,0xAB,0xAA,0xA5,0xAD,0xAF,0xB3,0xB7,0xAE,0x9C,0x9A, - 0x9A,0x99,0xB1,0xAF,0xA1,0x9A,0x87,0x88,0x91,0x8C,0x94,0x9C,0x8F,0x7E,0x78,0x7B, - 0x7F,0x83,0x89,0x86,0x7E,0x77,0x79,0x6F,0x67,0x81,0x84,0x76,0x73,0x6D,0x6A,0x69, - 0x75,0x7E,0x80,0x86,0x76,0x6E,0x71,0x76,0x78,0x75,0x7D,0x74,0x62,0x69,0x68,0x69, - 0x7B,0x86,0x78,0x6E,0x69,0x5E,0x67,0x6F,0x75,0x79,0x6A,0x58,0x63,0x5E,0x44,0x56, - 0x69,0x6D,0x56,0x59,0x6C,0x45,0x43,0x64,0x72,0x68,0x63,0x62,0x4A,0x53,0x67,0x72, - 0x71,0x6F,0x73,0x66,0x5F,0x63,0x6D,0x79,0x7D,0x7D,0x7B,0x71,0x6B,0x74,0x84,0x97, - 0x94,0x92,0x93,0x90,0xA1,0xAC,0xB5,0xC1,0xC3,0xBC,0xAE,0xB5,0xBC,0xB4,0xBA,0xBE, - 0xBB,0xB1,0xA4,0xA1,0x9E,0xA5,0xB4,0xB3,0x9E,0x8A,0x8A,0x88,0x88,0x90,0x95,0x94, - 0x87,0x7F,0x7F,0x8A,0x98,0x8D,0x94,0xA2,0x96,0x89,0x8D,0x91,0x95,0xA4,0xA3,0x99, - 0x8F,0x8A,0x92,0x90,0x93,0xA0,0xA2,0x9A,0x91,0x87,0x84,0x89,0x8D,0x8E,0x8B,0x86, - 0x75,0x71,0x77,0x75,0x86,0x93,0x85,0x6D,0x67,0x66,0x64,0x63,0x65,0x72,0x6E,0x56, - 0x45,0x43,0x57,0x5D,0x59,0x5E,0x53,0x45,0x41,0x44,0x42,0x4B,0x63,0x62,0x4F,0x46, - 0x3E,0x41,0x4C,0x52,0x5D,0x5A,0x45,0x3B,0x44,0x56,0x5E,0x61,0x68,0x67,0x63,0x69, - 0x72,0x72,0x71,0x87,0x9C,0x97,0x88,0x81,0x8C,0x98,0x9D,0xA3,0xA8,0x9D,0x8D,0x91, - 0x95,0x99,0x99,0x95,0x9A,0x99,0x84,0x80,0x88,0x84,0x91,0xA3,0x9A,0x85,0x7C,0x7C, - 0x86,0x8B,0x8F,0x9D,0x9D,0x8B,0x87,0x8B,0x97,0x9E,0x9E,0xAA,0xA9,0x9B,0x8F,0x8E, - 0x92,0x9B,0xB4,0xBB,0xA6,0x9C,0x9A,0x9F,0xA9,0xA7,0xAD,0xB3,0xA2,0x92,0x8D,0x95, - 0x99,0x96,0x9C,0x99,0x90,0x85,0x83,0x89,0x87,0x98,0x9E,0x8A,0x81,0x78,0x75,0x7C, - 0x7A,0x7C,0x83,0x79,0x66,0x5E,0x64,0x6C,0x6C,0x6A,0x6A,0x61,0x55,0x54,0x56,0x51, - 0x5A,0x6F,0x6E,0x5F,0x58,0x57,0x5D,0x64,0x6A,0x72,0x71,0x68,0x5E,0x64,0x76,0x7D, - 0x81,0x89,0x8E,0x8B,0x85,0x8A,0x8A,0x94,0xAA,0xA8,0x9A,0x8A,0x7E,0x83,0x89,0x8D, - 0x95,0x8D,0x7B,0x71,0x70,0x77,0x7B,0x78,0x7A,0x78,0x6B,0x5E,0x62,0x61,0x68,0x7E, - 0x80,0x72,0x64,0x5A,0x62,0x70,0x79,0x82,0x85,0x7D,0x73,0x75,0x7D,0x84,0x85,0x8D, - 0x96,0x8C,0x7F,0x7D,0x80,0x8C,0xA2,0xA3,0x91,0x86,0x81,0x83,0x87,0x8A,0x93,0x96, - 0x8D,0x82,0x7E,0x81,0x82,0x81,0x8A,0x8E,0x7F,0x72,0x71,0x6B,0x74,0x8D,0x8A,0x7C, - 0x72,0x6B,0x6C,0x6D,0x70,0x7A,0x80,0x73,0x66,0x62,0x67,0x6F,0x71,0x75,0x73,0x66, - 0x5F,0x5C,0x5D,0x6F,0x81,0x7C,0x73,0x70,0x69,0x68,0x6E,0x7B,0x89,0x8D,0x84,0x7C, - 0x7C,0x85,0x93,0x9E,0xA9,0xA6,0x95,0x92,0x90,0x92,0xA7,0xB1,0xA8,0x9C,0x93,0x88, - 0x87,0x8C,0x96,0xA2,0x97,0x84,0x7C,0x77,0x7D,0x85,0x89,0x8F,0x80,0x71,0x6E,0x69, - 0x76,0x8D,0x8B,0x7E,0x7A,0x73,0x6E,0x6D,0x7A,0x8B,0x8C,0x84,0x79,0x77,0x78,0x7E, - 0x8C,0x95,0x95,0x88,0x7F,0x7E,0x81,0x96,0xA1,0x95,0x8E,0x8A,0x80,0x7D,0x83,0x92, - 0x9B,0x8F,0x85,0x7F,0x7B,0x80,0x84,0x89,0x8F,0x86,0x78,0x72,0x6D,0x7A,0x90,0x8C, - 0x81,0x7E,0x74,0x6B,0x6B,0x75,0x84,0x89,0x7D,0x70,0x6B,0x6C,0x72,0x77,0x7F,0x7F, - 0x73,0x6B,0x64,0x67,0x7F,0x8D,0x81,0x7C,0x7D,0x72,0x70,0x77,0x89,0x97,0x8C,0x83, - 0x83,0x7F,0x81,0x88,0x92,0x99,0x91,0x85,0x7D,0x75,0x84,0x9B,0x99,0x8D,0x89,0x7E, - 0x73,0x72,0x7C,0x8F,0x8F,0x81,0x7A,0x74,0x72,0x74,0x7B,0x87,0x87,0x7A,0x6E,0x66, - 0x69,0x82,0x90,0x83,0x7D,0x7B,0x70,0x6C,0x6E,0x7E,0x8C,0x84,0x7A,0x78,0x74,0x76, - 0x7D,0x84,0x8E,0x8A,0x7F,0x77,0x6F,0x7F,0x98,0x94,0x8B,0x88,0x7C,0x75,0x76,0x7D, - 0x8E,0x91,0x85,0x7C,0x79,0x77,0x79,0x7E,0x87,0x8A,0x7E,0x71,0x6A,0x6F,0x86,0x90, - 0x85,0x81,0x7B,0x74,0x73,0x71,0x80,0x8E,0x88,0x7D,0x78,0x75,0x76,0x7A,0x81,0x89, - 0x85,0x7A,0x71,0x6C,0x7C,0x93,0x90,0x86,0x84,0x7F,0x78,0x76,0x82,0x94,0x97,0x8A, - 0x83,0x82,0x80,0x84,0x8B,0x91,0x92,0x88,0x7E,0x74,0x7A,0x91,0x97,0x89,0x84,0x83, - 0x7C,0x77,0x78,0x88,0x92,0x89,0x80,0x7E,0x79,0x79,0x7D,0x84,0x8C,0x85,0x79,0x6F, - 0x6C,0x80,0x92,0x8A,0x80,0x7E,0x76,0x72,0x71,0x79,0x8B,0x8B,0x80,0x7A,0x77,0x79, - 0x7B,0x7E,0x89,0x8D,0x82,0x77,0x70,0x7B,0x92,0x93,0x88,0x86,0x83,0x7D,0x77,0x78, - 0x87,0x90,0x8B,0x81,0x7B,0x78,0x79,0x7E,0x86,0x8C,0x86,0x79,0x6E,0x6E,0x81,0x90, - 0x89,0x7F,0x7E,0x7A,0x76,0x71,0x7A,0x89,0x8A,0x81,0x78,0x77,0x78,0x7A,0x7D,0x84, - 0x87,0x7E,0x73,0x6D,0x7C,0x92,0x90,0x83,0x80,0x7F,0x7D,0x77,0x78,0x88,0x91,0x8D, - 0x80,0x7A,0x7D,0x81,0x81,0x87,0x8D,0x86,0x7B,0x6F,0x74,0x8B,0x93,0x87,0x80,0x7E, - 0x7C,0x78,0x73,0x7F,0x8B,0x89,0x7F,0x74,0x74,0x7B,0x7E,0x81,0x86,0x84,0x7D,0x72, - 0x6E,0x81,0x91,0x8F,0x84,0x7C,0x7C,0x7C,0x75,0x78,0x86,0x8B,0x84,0x77,0x72,0x76, - 0x7B,0x7E,0x81,0x82,0x7D,0x75,0x6E,0x7A,0x8F,0x91,0x88,0x7E,0x7C,0x81,0x7D,0x7B, - 0x88,0x8F,0x8D,0x84,0x7B,0x7B,0x81,0x86,0x8D,0x8F,0x88,0x7F,0x71,0x71,0x81,0x88, - 0x84,0x7D,0x7A,0x7C,0x78,0x72,0x78,0x80,0x85,0x81,0x77,0x76,0x7D,0x83,0x88,0x88, - 0x84,0x7F,0x75,0x72,0x83,0x8E,0x88,0x7A,0x73,0x76,0x78,0x77,0x7D,0x85,0x89,0x89, - 0x81,0x7B,0x7F,0x85,0x88,0x8B,0x87,0x84,0x7A,0x71,0x80,0x90,0x91,0x87,0x79,0x72, - 0x72,0x71,0x78,0x83,0x8B,0x89,0x7B,0x72,0x72,0x78,0x7E,0x81,0x7F,0x80,0x7E,0x75, - 0x7D,0x89,0x8F,0x90,0x8A,0x8A,0x8B,0x83,0x81,0x8A,0x92,0x95,0x8C,0x7F,0x7A,0x78, - 0x79,0x79,0x76,0x77,0x72,0x6B,0x73,0x82,0x8C,0x87,0x79,0x74,0x75,0x75,0x79,0x7C, - 0x84,0x89,0x7E,0x77,0x74,0x77,0x84,0x86,0x89,0x8C,0x82,0x74,0x75,0x84,0x92,0x94, - 0x87,0x7F,0x78,0x6D,0x74,0x82,0x8B,0x98,0x9A,0x8C,0x81,0x7C,0x7D,0x84,0x83,0x7F, - 0x7D,0x6F,0x6A,0x7C,0x88,0x94,0x90,0x71,0x70,0x75,0x69,0x61,0x65,0x7E,0x80,0x7F, - 0x79,0x86,0x95,0x95,0xAF,0xB6,0xB5,0xAD,0x99,0x99,0x9E,0x8F,0x8E,0x7B,0x5D,0x5A, - 0x58,0x56,0x50,0x5F,0x69,0x79,0x78,0x74,0x84,0x89,0x9B,0xAA,0x9B,0x78,0x7E,0x87, - 0x7C,0x7D,0x74,0x74,0x7F,0x89,0x8A,0x84,0x7B,0x88,0x96,0x94,0x83,0x62,0x57,0x6A, - 0x75,0x8E,0x8F,0x77,0x64,0x62,0x86,0x8A,0x77,0x73,0x77,0x7C,0x79,0x77,0x80,0x8E, - 0x9B,0x94,0x90,0x92,0x7B,0x78,0x6E,0x60,0x71,0x7A,0x6F,0x7C,0x93,0x80,0x79,0x6F, - 0x7C,0x91,0x96,0xB2,0xA5,0x94,0x8C,0x84,0x84,0x82,0x86,0x81,0x91,0x98,0xA5,0xAF, - 0x87,0x7A,0x87,0x90,0x90,0x83,0x81,0x72,0x62,0x59,0x47,0x4F,0x54,0x51,0x5F,0x74, - 0x72,0x5F,0x68,0x81,0x7B,0x6B,0x74,0x7D,0x7B,0x94,0xA7,0x9C,0x8A,0x8F,0xA3,0x9F, - 0x94,0x8E,0x87,0x7C,0x8B,0x96,0xA0,0xA3,0x8E,0x89,0x81,0x75,0x68,0x56,0x64,0x5E, - 0x55,0x70,0x7A,0x6C,0x5E,0x60,0x75,0x87,0x88,0x96,0x93,0x85,0x8E,0x88,0x8B,0x8F, - 0x77,0x7C,0x94,0x9C,0xA6,0x98,0x93,0x98,0x90,0x8E,0x7E,0x73,0x64,0x5D,0x67,0x6F, - 0x76,0x6B,0x77,0x8A,0x89,0x86,0x67,0x68,0x76,0x7D,0x89,0x73,0x6D,0x7C,0x7F,0x94, - 0xA8,0x9B,0x86,0x72,0x83,0x91,0x80,0x7D,0x75,0x73,0x81,0x94,0x80,0x65,0x74,0x78, - 0x80,0x8A,0x7C,0x72,0x75,0x74,0x6C,0x6E,0x67,0x63,0x64,0x6E,0x87,0x84,0x7F,0x94, - 0xA1,0x9A,0xA1,0xA1,0xA1,0x97,0x87,0x98,0xA1,0x96,0x82,0x7C,0x8A,0x99,0x9B,0x96, - 0xA1,0x8C,0x6E,0x73,0x7F,0x71,0x58,0x5B,0x65,0x6E,0x6A,0x5C,0x5F,0x6B,0x6B,0x73, - 0x7B,0x73,0x6E,0x7A,0x96,0x9E,0x9F,0x99,0x90,0x7D,0x71,0x8F,0x9F,0x7F,0x76,0x83, - 0x89,0x8A,0x70,0x76,0x80,0x7A,0x82,0x77,0x76,0x6E,0x65,0x6D,0x7C,0x8C,0x84,0x8C, - 0x85,0x70,0x89,0x97,0x86,0x7E,0x8E,0x90,0x8C,0x94,0x8B,0x80,0x8F,0x98,0x9F,0xA7, - 0x90,0x75,0x6C,0x73,0x68,0x68,0x89,0x8D,0x85,0x76,0x73,0x75,0x6C,0x77,0x7E,0x88, - 0x86,0x7C,0x85,0x7F,0x7A,0x80,0x78,0x6B,0x5B,0x5E,0x66,0x6B,0x80,0x88,0xA3,0xB3, - 0x99,0xA3,0xAF,0x93,0x8B,0x9E,0xA1,0x94,0x84,0x7A,0x7E,0x8D,0x8A,0x89,0x8F,0x83, - 0x7A,0x83,0x7F,0x6D,0x73,0x71,0x64,0x5A,0x5E,0x68,0x66,0x65,0x73,0x82,0x89,0x87, - 0x88,0x90,0x88,0x8D,0x96,0x94,0x9D,0x8F,0x7A,0x78,0x89,0x85,0x6E,0x71,0x6F,0x72, - 0x7C,0x74,0x6A,0x7A,0x86,0x7A,0x7B,0x77,0x78,0x79,0x75,0x8C,0x99,0x90,0x80,0x78, - 0x89,0x8D,0x84,0x90,0x94,0x83,0x7D,0x81,0x84,0x93,0x91,0x90,0x9B,0x89,0x7F,0x7E, - 0x6F,0x65,0x74,0x86,0x8B,0x82,0x78,0x73,0x72,0x79,0x7A,0x85,0x80,0x7C,0x81,0x88, - 0x86,0x70,0x75,0x7C,0x74,0x66,0x5D,0x5B,0x62,0x70,0x87,0x95,0x91,0x9C,0xAC,0xAF, - 0xAC,0xA1,0x99,0x8E,0x79,0x77,0x84,0x89,0x77,0x72,0x87,0x92,0x90,0x8B,0x92,0x7F, - 0x68,0x71,0x76,0x70,0x6D,0x68,0x5D,0x6C,0x80,0x76,0x7A,0x7B,0x78,0x91,0x97,0x8C, - 0x8F,0x94,0x8D,0x85,0x8F,0x85,0x79,0x72,0x73,0x8A,0x8F,0x7B,0x64,0x77,0x7A,0x64, - 0x67,0x6F,0x75,0x6F,0x74,0x77,0x7B,0x84,0x79,0x79,0x83,0x7E,0x87,0x97,0x8C,0x89, - 0x9B,0x98,0x92,0x7B,0x71,0x89,0x7F,0x79,0x8B,0x9A,0x93,0x7D,0x77,0x79,0x67,0x5B, - 0x6C,0x75,0x84,0x89,0x7D,0x76,0x76,0x84,0x8D,0x7F,0x7E,0x84,0x82,0x8D,0x89,0x81, - 0x89,0x79,0x61,0x5E,0x6D,0x69,0x58,0x5D,0x6C,0x85,0x8F,0x87,0x9A,0xA0,0x89,0x96, - 0x9B,0x95,0xA5,0x8F,0x7D,0x86,0x8F,0x7E,0x74,0x88,0x87,0x95,0x9C,0x87,0x85,0x8D, - 0x73,0x75,0x79,0x6A,0x76,0x68,0x67,0x75,0x7D,0x72,0x67,0x7E,0x81,0x77,0x78,0x80, - 0x85,0x85,0x7D,0x81,0x8E,0x77,0x68,0x65,0x6D,0x75,0x7B,0x88,0x77,0x6E,0x78,0x89, - 0x7D,0x67,0x72,0x73,0x7D,0x81,0x80,0x97,0x96,0x7B,0x82,0x9E,0x8A,0x82,0x88,0x85, - 0x89,0x81,0x7E,0x73,0x79,0x7E,0x7C,0x86,0x79,0x7B,0x87,0x84,0x84,0x87,0x88,0x78, - 0x6F,0x6E,0x7D,0x88,0x7B,0x7B,0x8F,0x92,0x88,0x93,0x98,0x8B,0x80,0x83,0x83,0x7D, - 0x79,0x60,0x5A,0x67,0x60,0x52,0x60,0x6B,0x6D,0x8A,0x9E,0xA4,0xAB,0xAF,0xA2,0x94, - 0x96,0x8C,0x81,0x7B,0x77,0x8A,0x97,0x80,0x87,0x94,0x83,0x7D,0x76,0x7E,0x88,0x77, - 0x66,0x78,0x7E,0x6E,0x61,0x68,0x74,0x6F,0x8B,0x92,0x7F,0x7A,0x82,0x8F,0x85,0x7A, - 0x76,0x73,0x75,0x70,0x7D,0x8D,0x7E,0x70,0x7F,0x8B,0x7D,0x6F,0x73,0x81,0x7E,0x79, - 0x8E,0x8A,0x89,0x87,0x7C,0x84,0x83,0x82,0x84,0x8E,0x8B,0x8F,0x95,0x7E,0x7F,0x70, - 0x6D,0x82,0x7A,0x7F,0x8E,0x90,0x8F,0x92,0x93,0x81,0x70,0x7B,0x81,0x7F,0x83,0x6F, - 0x7C,0x95,0x88,0x7C,0x7A,0x79,0x78,0x83,0x92,0x8F,0x93,0x95,0x7E,0x80,0x7C,0x72, - 0x6C,0x52,0x5C,0x6E,0x6C,0x67,0x73,0x73,0x77,0x8C,0x91,0xA6,0xAC,0xA3,0x95,0x92, - 0xA0,0x86,0x7D,0x84,0x7A,0x8E,0x99,0x94,0x91,0x8C,0x97,0x92,0x83,0x80,0x71,0x68, - 0x6D,0x69,0x78,0x79,0x6B,0x71,0x72,0x7A,0x73,0x73,0x7C,0x7C,0x7D,0x8B,0x90,0x83, - 0x83,0x77,0x71,0x73,0x77,0x81,0x8B,0x8F,0x94,0x99,0x82,0x79,0x76,0x6E,0x79,0x7F, - 0x77,0x80,0x85,0x83,0x8D,0x92,0x8C,0x74,0x74,0x80,0x7F,0x90,0x88,0x69,0x72,0x8E, - 0x87,0x78,0x7F,0x8E,0x94,0x7D,0x79,0x98,0xA8,0x83,0x6A,0x91,0x7B,0x6A,0x75,0x6E, - 0x7D,0x7E,0x8F,0x83,0x7C,0x88,0x83,0x83,0x7F,0x90,0x9A,0x8A,0x72,0x79,0x86,0x77, - 0x6D,0x5D,0x5A,0x64,0x6D,0x69,0x6E,0x85,0x92,0xA0,0x97,0x94,0x92,0x7C,0x80,0x93, - 0x95,0x93,0x93,0x8F,0x92,0x9B,0x91,0x87,0x8A,0x8F,0x85,0x88,0x90,0x7D,0x71,0x6A, - 0x60,0x68,0x7B,0x7D,0x74,0x7C,0x85,0x73,0x6B,0x77,0x6D,0x70,0x79,0x66,0x74,0x81, - 0x7B,0x86,0x95,0x9E,0x8C,0x79,0x80,0x83,0x80,0x88,0x77,0x69,0x83,0x86,0x78,0x73, - 0x73,0x7D,0x7E,0x89,0x96,0x8F,0x8C,0x78,0x66,0x70,0x7C,0x78,0x6C,0x77,0x75,0x7B, - 0x8B,0x8D,0x85,0x84,0x96,0x8C,0x8A,0x94,0x91,0x84,0x74,0x87,0x92,0x88,0x79,0x6F, - 0x6F,0x85,0x88,0x79,0x87,0x81,0x7E,0x7F,0x7A,0x81,0x7C,0x77,0x7C,0x76,0x6D,0x73, - 0x6F,0x60,0x65,0x6B,0x6C,0x72,0x87,0x90,0x95,0xAA,0x9F,0x8F,0x88,0x7A,0x77,0x7F, - 0x91,0x8D,0x92,0xA1,0xA3,0xA0,0x8E,0x8F,0x88,0x77,0x7C,0x7A,0x78,0x73,0x6F,0x73, - 0x85,0x86,0x72,0x69,0x68,0x6C,0x6E,0x7B,0x74,0x64,0x77,0x7E,0x75,0x6D,0x6E,0x78, - 0x79,0x7F,0x91,0x9A,0x95,0x7D,0x71,0x83,0x86,0x76,0x7A,0x7A,0x76,0x83,0x84,0x83, - 0x80,0x80,0x82,0x7C,0x7D,0x75,0x83,0x79,0x77,0x8F,0x81,0x76,0x6C,0x65,0x7F,0x95, - 0x8E,0x9D,0x97,0x91,0x95,0x7B,0x81,0x84,0x6A,0x77,0x84,0x7F,0x85,0x80,0x7C,0x7A, - 0x79,0x78,0x76,0x7A,0x7A,0x79,0x87,0x92,0x93,0x86,0x87,0x85,0x6A,0x79,0x7E,0x65, - 0x6A,0x77,0x83,0x80,0x7E,0x86,0x83,0x87,0x8A,0x92,0x90,0x83,0x84,0x86,0x8F,0x8F, - 0x85,0x82,0x86,0x86,0x95,0x97,0x82,0x84,0x91,0x8E,0x7F,0x6B,0x76,0x81,0x6F,0x7C, - 0x7C,0x81,0x7A,0x5F,0x70,0x7E,0x73,0x6E,0x6C,0x6F,0x78,0x80,0x84,0x86,0x7E,0x7D, - 0x81,0x82,0x83,0x86,0x8F,0x7C,0x83,0x8C,0x80,0x7A,0x66,0x63,0x75,0x88,0x8F,0x89, - 0x89,0x8E,0x81,0x82,0x84,0x6B,0x6F,0x86,0x7B,0x86,0x90,0x8A,0x83,0x7D,0x95,0x90, - 0x8D,0x8A,0x7F,0x87,0x94,0x91,0x7F,0x7E,0x79,0x6F,0x74,0x7C,0x78,0x78,0x80,0x91, - 0x92,0x79,0x82,0x7F,0x6D,0x7C,0x89,0x90,0x8D,0x8A,0x88,0x7E,0x7B,0x74,0x67,0x63, - 0x5D,0x5A,0x73,0x87,0x76,0x82,0xA6,0x99,0x83,0x8A,0x90,0x89,0x8D,0x8E,0xA1,0xAC, - 0x8A,0x85,0x8B,0x8C,0x8D,0x82,0x89,0x7F,0x80,0x8B,0x84,0x88,0x7A,0x6E,0x76,0x6F, - 0x62,0x76,0x77,0x68,0x72,0x74,0x76,0x6A,0x6A,0x6C,0x7B,0x85,0x7E,0xA4,0xA8,0x81, - 0x81,0x98,0x8F,0x76,0x81,0x8D,0x81,0x7D,0x77,0x80,0x81,0x75,0x72,0x7C,0x84,0x72, - 0x6E,0x80,0x94,0x88,0x82,0x90,0x7C,0x6C,0x71,0x87,0x87,0x78,0x94,0xA2,0x93,0x90, - 0x8D,0x7B,0x74,0x7C,0x82,0x89,0x84,0x86,0x7A,0x7F,0x8B,0x78,0x7F,0x82,0x71,0x62, - 0x7B,0x8C,0x79,0x88,0x94,0x87,0x8A,0x88,0x8A,0x8E,0x7A,0x71,0x84,0x7E,0x62,0x66, - 0x67,0x60,0x6D,0x76,0x86,0x97,0x8D,0x80,0x87,0x8E,0x7E,0x80,0x8D,0x86,0x8F,0x8D, - 0x8C,0x94,0x93,0x92,0x89,0x87,0x8F,0x88,0x83,0x83,0x80,0x84,0x8A,0x87,0x6C,0x63, - 0x71,0x62,0x68,0x75,0x6A,0x7B,0x7E,0x71,0x78,0x89,0x88,0x81,0x83,0x7B,0x85,0x84, - 0x7F,0x94,0x95,0x87,0x87,0x7E,0x69,0x6D,0x6D,0x68,0x76,0x82,0x8B,0x8D,0x85,0x70, - 0x74,0x7F,0x78,0x7A,0x7E,0x8C,0x80,0x6D,0x86,0x8D,0x87,0x8F,0x8B,0x84,0x79,0x7C, - 0x8D,0x8E,0x86,0x79,0x7D,0x8C,0x7A,0x76,0x82,0x7F,0x84,0x8B,0x80,0x7F,0x78,0x64, - 0x76,0x84,0x86,0x90,0x93,0x8A,0x80,0x84,0x88,0x7F,0x7F,0x74,0x6C,0x6D,0x5A,0x64, - 0x6F,0x71,0x7C,0x81,0x84,0x82,0x7B,0x7B,0x88,0x87,0x8C,0x96,0x8E,0x87,0x78,0x89, - 0x93,0x8A,0x92,0x9D,0xAB,0x92,0x85,0x92,0x8A,0x8B,0x80,0x6D,0x6C,0x6A,0x68,0x6E, - 0x79,0x7B,0x75,0x7A,0x71,0x65,0x72,0x77,0x78,0x82,0x82,0x88,0x8B,0x77,0x79,0x85, - 0x7F,0x85,0x86,0x88,0x82,0x6D,0x6C,0x70,0x7B,0x78,0x72,0x82,0x7D,0x7B,0x82,0x81, - 0x80,0x79,0x82,0x83,0x80,0x82,0x79,0x7E,0x8E,0x8D,0x85,0x8C,0x81,0x87,0x86,0x7A, - 0x91,0x86,0x82,0x81,0x75,0x78,0x79,0x7C,0x84,0x88,0x7E,0x82,0x82,0x7D,0x78,0x79, - 0x8B,0x89,0x7C,0x7B,0x7E,0x89,0x83,0x7B,0x8A,0x83,0x75,0x70,0x73,0x73,0x69,0x72, - 0x78,0x88,0x89,0x80,0x89,0x87,0x88,0x87,0x81,0x85,0x85,0x7D,0x85,0x87,0x7F,0x83, - 0x8E,0x8D,0x8A,0x94,0x97,0x98,0x92,0x92,0x88,0x7C,0x7E,0x75,0x6D,0x67,0x6B,0x75, - 0x7C,0x7B,0x75,0x77,0x7B,0x77,0x78,0x7B,0x79,0x79,0x77,0x7D,0x7B,0x79,0x7F,0x7F, - 0x83,0x85,0x7F,0x80,0x7D,0x77,0x77,0x77,0x78,0x79,0x7E,0x80,0x7F,0x88,0x8A,0x89, - 0x88,0x86,0x89,0x7F,0x7D,0x80,0x7E,0x81,0x7D,0x82,0x87,0x85,0x86,0x8C,0x8E,0x8F, - 0x8B,0x86,0x85,0x7F,0x7E,0x7D,0x7B,0x7E,0x80,0x7D,0x80,0x82,0x80,0x83,0x81,0x7E, - 0x80,0x84,0x82,0x7D,0x7E,0x80,0x80,0x7E,0x7D,0x78,0x74,0x75,0x77,0x77,0x78,0x7B, - 0x7E,0x84,0x88,0x89,0x89,0x88,0x89,0x8C,0x8D,0x8B,0x89,0x81,0x7E,0x7D,0x7C,0x80, - 0x83,0x85,0x87,0x8D,0x90,0x91,0x91,0x8C,0x88,0x83,0x7E,0x7B,0x79,0x7B,0x78,0x78, - 0x7B,0x7C,0x79,0x79,0x7B,0x7A,0x7C,0x7D,0x7D,0x7E,0x80,0x82,0x7F,0x7F,0x80,0x7E, - 0x81,0x82,0x7C,0x79,0x7C,0x7A,0x77,0x79,0x77,0x77,0x79,0x7E,0x81,0x81,0x85,0x85, - 0x83,0x86,0x84,0x82,0x82,0x82,0x84,0x83,0x88,0x83,0x8B,0x98,0x83,0x92,0x7C,0x6B, - 0x89,0x7C,0x6A,0x6D,0x7D,0x86,0x8A,0x8C,0x8E,0x8A,0x8B,0x9C,0xA1,0x9B,0x96,0x92, - 0x90,0x90,0x89,0x83,0x7F,0x72,0x6A,0x69,0x65,0x6D,0x67,0x55,0x62,0x64,0x5F,0x69, - 0x6B,0x6D,0x78,0x79,0x7B,0x79,0x6F,0x8A,0x88,0x73,0x88,0xA4,0xA2,0x96,0xB7,0xC1, - 0xAF,0xAA,0x9A,0x99,0xA7,0xA4,0x94,0x93,0x93,0x89,0x88,0x85,0x7A,0x76,0x72,0x6D, - 0x6B,0x74,0x7E,0x79,0x6C,0x68,0x68,0x5B,0x53,0x4C,0x47,0x4C,0x4C,0x50,0x5B,0x63, - 0x63,0x68,0x7A,0x88,0x8A,0x8A,0x90,0x94,0x8F,0x85,0x8F,0x9D,0x9D,0x98,0x98,0xA5, - 0xB0,0xBA,0xC1,0xC4,0xBD,0xAD,0xAA,0xAD,0xAA,0xA2,0x9A,0x9A,0x95,0x8B,0x8D,0x86, - 0x7E,0x7D,0x75,0x6C,0x64,0x64,0x62,0x59,0x54,0x53,0x52,0x4D,0x4F,0x51,0x54,0x58, - 0x56,0x56,0x57,0x5C,0x5B,0x58,0x67,0x6C,0x68,0x6D,0x70,0x70,0x75,0x79,0x74,0x7D, - 0x8B,0x87,0x8C,0x98,0x9F,0xAA,0xB7,0xB0,0x9E,0x9F,0x9D,0x94,0x8E,0x83,0x86,0x89, - 0x88,0x85,0x81,0x84,0x85,0x85,0x82,0x83,0x85,0x86,0x84,0x7B,0x73,0x6C,0x6B,0x6A, - 0x66,0x63,0x61,0x62,0x5D,0x59,0x5B,0x5D,0x61,0x6F,0x77,0x79,0x77,0x77,0x73,0x7B, - 0x8F,0x91,0x84,0x85,0x8C,0x8C,0x8D,0x8C,0x92,0xA1,0xA8,0xAC,0xB3,0xB8,0xB9,0xB9, - 0xB8,0xB5,0xBA,0xB8,0xB6,0xB9,0xB9,0xAF,0xA3,0x9D,0x93,0x92,0xA0,0x9D,0x90,0x8C, - 0x86,0x77,0x6A,0x62,0x62,0x69,0x62,0x59,0x60,0x63,0x5E,0x53,0x4A,0x4D,0x54,0x58, - 0x5C,0x62,0x6D,0x6C,0x67,0x6E,0x70,0x76,0x85,0x85,0x7F,0x82,0x7F,0x74,0x70,0x73, - 0x7C,0x86,0x85,0x87,0x90,0x8D,0x86,0x84,0x84,0x88,0x8D,0x90,0x90,0x94,0x95,0x86, - 0x81,0x81,0x81,0x84,0x89,0x84,0x78,0x7B,0x73,0x5F,0x59,0x57,0x62,0x67,0x60,0x62, - 0x64,0x5E,0x52,0x4E,0x4D,0x50,0x58,0x56,0x5D,0x61,0x5B,0x51,0x50,0x55,0x55,0x69, - 0x78,0x6E,0x6B,0x6E,0x66,0x68,0x6D,0x6F,0x80,0x8A,0x8B,0x93,0x99,0x9A,0x99,0xA1, - 0xAF,0xB9,0xBA,0xB9,0xC1,0xC3,0xC0,0xBC,0xBF,0xBE,0xBE,0xCF,0xCD,0xC2,0xBE,0xB7, - 0xAE,0xA5,0xA1,0xA5,0xA6,0x9E,0x93,0x8D,0x86,0x80,0x7B,0x79,0x7D,0x7E,0x7E,0x7E, - 0x77,0x6D,0x6C,0x71,0x70,0x70,0x7D,0x84,0x7A,0x71,0x70,0x6A,0x66,0x68,0x6E,0x78, - 0x79,0x71,0x74,0x75,0x6E,0x6E,0x76,0x7D,0x83,0x82,0x83,0x88,0x84,0x7E,0x85,0x8A, - 0x85,0x8C,0x9C,0x9A,0x8F,0x8F,0x93,0x90,0x8D,0x8F,0x9A,0xA0,0x99,0x92,0x92,0x8F, - 0x8A,0x8B,0x8E,0x95,0x96,0x8F,0x90,0x90,0x89,0x85,0x89,0x80,0x7A,0x8D,0x8E,0x7C, - 0x77,0x78,0x6F,0x64,0x64,0x6B,0x71,0x69,0x5A,0x5B,0x58,0x4F,0x4B,0x4F,0x53,0x55, - 0x53,0x52,0x53,0x4E,0x4C,0x53,0x57,0x51,0x58,0x6B,0x62,0x56,0x59,0x54,0x49,0x45, - 0x4A,0x55,0x5C,0x54,0x51,0x56,0x50,0x4C,0x52,0x5B,0x62,0x67,0x6B,0x72,0x74,0x76, - 0x7E,0x8D,0x94,0x96,0xAE,0xC1,0xB7,0xB3,0xBA,0xBA,0xB7,0xB9,0xC0,0xC9,0xCA,0xC2, - 0xC2,0xC3,0xB8,0xB4,0xB8,0xB9,0xB9,0xB6,0xB2,0xAF,0xA5,0x9D,0x9F,0xA3,0x9C,0x9C, - 0xB2,0xB3,0xA0,0xA1,0xA5,0x9B,0x98,0x9E,0xA7,0xAC,0xA3,0x9B,0x9D,0x97,0x8D,0x8B, - 0x8E,0x90,0x8D,0x86,0x82,0x7D,0x73,0x6E,0x71,0x71,0x64,0x6B,0x78,0x6A,0x5E,0x62, - 0x5F,0x54,0x54,0x5C,0x67,0x6B,0x61,0x63,0x6A,0x62,0x61,0x68,0x6C,0x70,0x70,0x6F, - 0x72,0x6C,0x68,0x6D,0x71,0x70,0x6B,0x76,0x83,0x74,0x6C,0x76,0x75,0x6B,0x6D,0x76, - 0x81,0x7F,0x74,0x7B,0x7E,0x74,0x74,0x7C,0x7F,0x81,0x7F,0x7C,0x80,0x7B,0x77,0x7D, - 0x80,0x7F,0x76,0x83,0x91,0x7E,0x75,0x83,0x7F,0x76,0x79,0x81,0x89,0x86,0x7C,0x81, - 0x83,0x77,0x76,0x7E,0x81,0x81,0x7D,0x7C,0x7C,0x74,0x72,0x78,0x79,0x79,0x74,0x80, - 0x94,0x84,0x79,0x89,0x8A,0x81,0x85,0x92,0x9C,0x9D,0x94,0x98,0x9F,0x94,0x8F,0x97, - 0x99,0x95,0x94,0x90,0x8C,0x81,0x7B,0x7D,0x79,0x76,0x6C,0x73,0x83,0x71,0x61,0x6E, - 0x6A,0x5B,0x5F,0x6A,0x71,0x70,0x66,0x6C,0x74,0x6A,0x69,0x75,0x7A,0x7B,0x7F,0x81, - 0x84,0x7F,0x7D,0x85,0x89,0x8B,0x88,0x8E,0xA4,0x9E,0x8D,0x99,0x9D,0x8F,0x8F,0x99, - 0xA2,0xA2,0x96,0x96,0x9E,0x93,0x8C,0x96,0x9B,0x98,0x96,0x98,0x9B,0x94,0x8D,0x90, - 0x92,0x91,0x8C,0x8D,0xA3,0xA0,0x87,0x90,0x96,0x83,0x7E,0x8A,0x94,0x94,0x8A,0x88, - 0x8E,0x82,0x7A,0x84,0x8A,0x85,0x82,0x81,0x7E,0x78,0x6E,0x70,0x6E,0x68,0x63,0x5E, - 0x6F,0x71,0x55,0x58,0x5E,0x4A,0x41,0x49,0x52,0x54,0x4A,0x48,0x51,0x49,0x3C,0x46, - 0x50,0x4E,0x4D,0x4E,0x50,0x4D,0x46,0x4B,0x4F,0x4E,0x4D,0x4D,0x61,0x68,0x54,0x56, - 0x64,0x59,0x54,0x61,0x6D,0x73,0x71,0x71,0x7F,0x7F,0x78,0x85,0x93,0x96,0x9B,0xA4, - 0xA7,0xA7,0xA2,0xA4,0xA9,0xA6,0xA4,0xA0,0xB0,0xBF,0xA9,0x9F,0xAE,0xA2,0x94,0x99, - 0xA2,0xA6,0xA0,0x98,0x9D,0x9D,0x90,0x91,0x9B,0x9D,0x9D,0x9E,0x9F,0x9E,0x99,0x99, - 0x9F,0x9F,0x9F,0x99,0xA4,0xB8,0xA9,0x9B,0xA9,0xA6,0x96,0x9B,0xA5,0xAB,0xA7,0x9D, - 0xA1,0xA4,0x94,0x8F,0x9A,0x99,0x96,0x94,0x95,0x95,0x8E,0x88,0x8A,0x8B,0x88,0x81, - 0x83,0x97,0x90,0x79,0x82,0x85,0x73,0x72,0x7C,0x81,0x7F,0x74,0x72,0x78,0x6C,0x63, - 0x6C,0x6E,0x6B,0x6B,0x69,0x69,0x62,0x5D,0x5E,0x5F,0x60,0x59,0x54,0x67,0x69,0x51, - 0x54,0x5C,0x4E,0x47,0x4D,0x55,0x59,0x50,0x4D,0x55,0x4F,0x45,0x4A,0x53,0x52,0x53, - 0x53,0x54,0x53,0x4D,0x4F,0x53,0x57,0x57,0x53,0x64,0x72,0x5E,0x5A,0x6A,0x62,0x5A, - 0x63,0x6D,0x74,0x71,0x6B,0x76,0x7B,0x73,0x79,0x86,0x8A,0x8E,0x92,0x97,0x9D,0x9A, - 0x9D,0xA7,0xAC,0xAE,0xAB,0xB8,0xD2,0xC8,0xB8,0xC7,0xC6,0xB5,0xB6,0xC0,0xC5,0xC0, - 0xB4,0xB6,0xBA,0xAD,0xA6,0xAE,0xB0,0xAC,0xAA,0xA7,0xA6,0xA0,0x9A,0x9C,0x9E,0x9C, - 0x94,0x99,0xB2,0xA9,0x95,0xA0,0xA2,0x93,0x92,0x9B,0xA3,0xA1,0x95,0x97,0x9E,0x92, - 0x8C,0x94,0x95,0x92,0x91,0x8E,0x8E,0x8A,0x83,0x83,0x84,0x81,0x79,0x79,0x91,0x8C, - 0x75,0x7B,0x7E,0x70,0x6E,0x75,0x7E,0x7F,0x72,0x70,0x78,0x6F,0x67,0x6F,0x70,0x6F, - 0x6E,0x68,0x67,0x66,0x61,0x60,0x61,0x61,0x5A,0x56,0x6B,0x6F,0x57,0x57,0x5E,0x53, - 0x4B,0x4D,0x56,0x5D,0x53,0x4D,0x56,0x55,0x4E,0x51,0x55,0x59,0x59,0x54,0x56,0x59, - 0x55,0x53,0x55,0x5B,0x58,0x52,0x6B,0x74,0x5E,0x5D,0x67,0x5F,0x5B,0x5E,0x67,0x72, - 0x69,0x61,0x6B,0x6E,0x68,0x6C,0x73,0x7A,0x7D,0x7B,0x7E,0x84,0x83,0x86,0x8C,0x93, - 0x91,0x8F,0xA9,0xBA,0xA8,0xAA,0xB8,0xB4,0xB2,0xB7,0xC2,0xCE,0xC7,0xBE,0xC4,0xC5, - 0xBD,0xBB,0xBB,0xBE,0xBE,0xB6,0xB1,0xB0,0xA8,0xA0,0x9D,0x9E,0x96,0x8D,0xA0,0xA3, - 0x8A,0x89,0x8D,0x84,0x81,0x81,0x88,0x93,0x8C,0x83,0x88,0x89,0x85,0x85,0x87,0x8B, - 0x8D,0x8A,0x8C,0x8E,0x8D,0x8D,0x89,0x8C,0x87,0x84,0x9B,0x9C,0x86,0x87,0x87,0x80, - 0x7E,0x7A,0x80,0x89,0x80,0x78,0x7B,0x7A,0x74,0x71,0x76,0x7C,0x7D,0x77,0x72,0x72, - 0x73,0x6F,0x6E,0x72,0x6C,0x72,0x88,0x7F,0x6E,0x72,0x6F,0x6A,0x68,0x69,0x73,0x78, - 0x6E,0x68,0x6C,0x6A,0x64,0x62,0x64,0x6A,0x68,0x61,0x5F,0x60,0x60,0x5A,0x58,0x57, - 0x52,0x63,0x74,0x63,0x5A,0x5C,0x55,0x54,0x53,0x57,0x64,0x63,0x59,0x57,0x5E,0x5F, - 0x59,0x58,0x60,0x68,0x68,0x64,0x64,0x68,0x67,0x63,0x66,0x66,0x69,0x80,0x84,0x74, - 0x77,0x79,0x78,0x7B,0x7C,0x87,0x95,0x94,0x8F,0x91,0x99,0x9D,0x9B,0x9D,0xA9,0xB0, - 0xAE,0xAB,0xAD,0xAF,0xA9,0xA4,0xA5,0xA0,0xA9,0xBB,0xAD,0x9C,0x9B,0x92,0x8F,0x8A, - 0x86,0x91,0x97,0x8C,0x83,0x82,0x83,0x80,0x79,0x7B,0x84,0x85,0x7F,0x7C,0x80,0x80, - 0x7C,0x7D,0x7D,0x7F,0x95,0x9D,0x8B,0x87,0x88,0x84,0x85,0x80,0x86,0x92,0x91,0x89, - 0x87,0x8B,0x8E,0x88,0x84,0x8B,0x92,0x91,0x8A,0x87,0x8B,0x88,0x84,0x81,0x87,0x8F, - 0x99,0x94,0x85,0x87,0x85,0x83,0x7E,0x7C,0x87,0x8E,0x88,0x7D,0x7B,0x81,0x7F,0x7A, - 0x7A,0x80,0x85,0x81,0x7B,0x79,0x79,0x74,0x6E,0x69,0x6E,0x85,0x87,0x74,0x6E,0x6E, - 0x6F,0x6A,0x60,0x64,0x70,0x71,0x68,0x5F,0x63,0x68,0x62,0x5E,0x61,0x67,0x69,0x65, - 0x60,0x62,0x64,0x60,0x5B,0x57,0x6A,0x7D,0x72,0x64,0x61,0x64,0x69,0x65,0x64,0x6E, - 0x7A,0x7B,0x75,0x72,0x78,0x7E,0x7C,0x7C,0x82,0x8C,0x91,0x8F,0x8F,0x93,0x98,0x9B, - 0x98,0x9F,0xB8,0xBD,0xB1,0xA9,0xA4,0xA8,0xA7,0xA2,0xA3,0xAB,0xAE,0xA8,0x9B,0x96, - 0x98,0x98,0x8F,0x89,0x8A,0x8C,0x8C,0x85,0x7E,0x7A,0x79,0x72,0x70,0x81,0x8D,0x87, - 0x7E,0x77,0x76,0x79,0x75,0x75,0x7C,0x84,0x87,0x83,0x7C,0x7D,0x80,0x81,0x81,0x80, - 0x82,0x86,0x86,0x84,0x81,0x80,0x7F,0x7B,0x87,0x9A,0x97,0x8B,0x84,0x81,0x84,0x84, - 0x81,0x82,0x87,0x8B,0x8E,0x8A,0x86,0x84,0x83,0x84,0x83,0x82,0x84,0x86,0x84,0x82, - 0x7E,0x7C,0x76,0x78,0x89,0x90,0x88,0x80,0x77,0x73,0x74,0x70,0x6E,0x72,0x73,0x78, - 0x7A,0x74,0x71,0x72,0x71,0x6E,0x6C,0x6D,0x72,0x72,0x6E,0x6C,0x6A,0x67,0x62,0x6A, - 0x79,0x78,0x70,0x6A,0x62,0x63,0x65,0x61,0x61,0x60,0x61,0x69,0x6B,0x6B,0x6E,0x6F, - 0x70,0x70,0x70,0x75,0x79,0x79,0x7B,0x7F,0x81,0x81,0x81,0x8B,0x98,0x99,0x97,0x98, - 0x94,0x95,0x9B,0x9A,0x9A,0x9A,0x97,0x9A,0x9B,0x9A,0x9C,0x9B,0x99,0x99,0x99,0x98, - 0x96,0x92,0x92,0x93,0x92,0x8F,0x8D,0x8D,0x90,0x90,0x8A,0x8A,0x8A,0x88,0x8C,0x8A, - 0x86,0x88,0x87,0x85,0x85,0x85,0x83,0x81,0x80,0x80,0x81,0x82,0x82,0x82,0x83,0x84, - 0x84,0x82,0x7F,0x7F,0x84,0x87,0x84,0x82,0x84,0x84,0x88,0x87,0x84,0x85,0x82,0x7F, - 0x80,0x7F,0x7D,0x7D,0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x83,0x83,0x7F,0x7D, - 0x7E,0x83,0x82,0x7E,0x81,0x80,0x7E,0x81,0x82,0x7F,0x7E,0x7B,0x79,0x7B,0x78,0x75, - 0x76,0x74,0x73,0x74,0x76,0x75,0x75,0x76,0x76,0x78,0x77,0x76,0x75,0x75,0x7A,0x7C, - 0x7A,0x7B,0x7A,0x7A,0x81,0x7E,0x7C,0x7C,0x77,0x77,0x78,0x75,0x76,0x74,0x70,0x72, - 0x74,0x74,0x77,0x77,0x77,0x78,0x7A,0x7A,0x7A,0x7A,0x7B,0x82,0x83,0x7F,0x81,0x81, - 0x82,0x88,0x89,0x87,0x88,0x84,0x84,0x86,0x83,0x84,0x84,0x82,0x83,0x84,0x86,0x86, - 0x86,0x86,0x86,0x88,0x89,0x88,0x86,0x83,0x85,0x8C,0x88,0x84,0x83,0x7F,0x83,0x86, - 0x80,0x81,0x7F,0x79,0x7A,0x79,0x77,0x78,0x75,0x74,0x76,0x77,0x79,0x7A,0x7A,0x7C, - 0x7E,0x82,0x83,0x81,0x81,0x7F,0x84,0x86,0x82,0x84,0x83,0x80,0x87,0x88,0x84,0x84, - 0x80,0x7F,0x81,0x81,0x80,0x7E,0x7C,0x7B,0x7C,0x7E,0x7F,0x7E,0x81,0x82,0x83,0x85, - 0x85,0x86,0x84,0x83,0x8A,0x8B,0x86,0x85,0x84,0x84,0x85,0x83,0x86,0x90,0x7C,0x62, - 0x77,0x87,0x86,0x6E,0x80,0x88,0x62,0x72,0x7F,0x7B,0x7C,0x88,0x8E,0x7B,0x7F,0x85, - 0x84,0x7A,0x7F,0x8C,0x7B,0x71,0x74,0x78,0x81,0x80,0x7F,0x88,0x79,0x6E,0x7B,0x77, - 0x71,0x72,0x79,0x76,0x78,0x7E,0x79,0x7F,0x84,0x87,0x87,0x82,0x87,0x86,0x86,0x89, - 0x80,0x82,0x83,0x7D,0x7C,0x81,0x83,0x80,0x80,0x7C,0x7F,0x81,0x77,0x78,0x79,0x77, - 0x75,0x75,0x7C,0x7E,0x88,0x8C,0x80,0x82,0x8A,0x8A,0x8B,0x8E,0x8E,0x85,0x86,0x8C, - 0x8D,0x8A,0x8B,0x88,0x81,0x87,0x7E,0x74,0x7D,0x77,0x68,0x6C,0x73,0x76,0x77,0x71, - 0x70,0x72,0x70,0x77,0x7B,0x7F,0x7D,0x76,0x7B,0x7C,0x7A,0x78,0x79,0x85,0x8B,0x89, - 0x89,0x80,0x80,0x86,0x88,0x88,0x80,0x7C,0x7B,0x7D,0x81,0x85,0x83,0x7C,0x79,0x72, - 0x78,0x7F,0x7F,0x81,0x7B,0x7D,0x7D,0x80,0x86,0x89,0x88,0x85,0x87,0x84,0x7D,0x83, - 0x87,0x83,0x83,0x85,0x84,0x84,0x8C,0x86,0x84,0x85,0x7E,0x82,0x82,0x7C,0x7D,0x80, - 0x7B,0x7C,0x7C,0x7D,0x87,0x89,0x7F,0x7E,0x7F,0x7E,0x7E,0x7D,0x89,0x82,0x7E,0x85, - 0x78,0x77,0x7C,0x7D,0x7E,0x82,0x81,0x7D,0x82,0x83,0x81,0x84,0x81,0x7A,0x78,0x78, - 0x7A,0x80,0x84,0x84,0x84,0x85,0x84,0x83,0x83,0x7C,0x89,0x8F,0x88,0x88,0x83,0x82, - 0x85,0x88,0x81,0x81,0x7D,0x74,0x7D,0x81,0x85,0x8A,0x81,0x80,0x82,0x83,0x89,0x86, - 0x81,0x85,0x88,0x86,0x86,0x83,0x83,0x7F,0x76,0x80,0x90,0x91,0x8F,0x8A,0x7D,0x7D, - 0x7F,0x77,0x77,0x75,0x6F,0x77,0x82,0x83,0x82,0x81,0x80,0x88,0x84,0x81,0x83,0x7D, - 0x7E,0x80,0x7F,0x7F,0x80,0x7F,0x7B,0x78,0x7F,0x8F,0x94,0x91,0x89,0x80,0x79,0x7E, - 0x7C,0x72,0x76,0x77,0x7E,0x87,0x86,0x83,0x7E,0x80,0x87,0x83,0x7A,0x7D,0x81,0x87, - 0x8B,0x87,0x84,0x81,0x7B,0x80,0x7C,0x82,0x96,0x94,0x92,0x8F,0x83,0x86,0x84,0x79, - 0x79,0x7A,0x78,0x86,0x8E,0x82,0x82,0x83,0x84,0x88,0x7E,0x7C,0x7E,0x81,0x80,0x83, - 0x85,0x86,0x82,0x7C,0x75,0x76,0x8B,0x95,0x8B,0x89,0x84,0x76,0x82,0x7C,0x6C,0x72, - 0x75,0x7C,0x85,0x80,0x79,0x82,0x8A,0x88,0x80,0x79,0x79,0x7C,0x82,0x82,0x80,0x84, - 0x84,0x7F,0x7A,0x77,0x7C,0x8E,0x95,0x8B,0x88,0x84,0x80,0x8B,0x81,0x72,0x78,0x76, - 0x79,0x80,0x7B,0x79,0x80,0x87,0x84,0x7F,0x7F,0x80,0x84,0x84,0x7C,0x7A,0x81,0x86, - 0x80,0x7B,0x76,0x80,0x92,0x88,0x82,0x88,0x82,0x87,0x8A,0x76,0x74,0x76,0x75,0x7C, - 0x77,0x71,0x79,0x80,0x87,0x7F,0x79,0x84,0x80,0x7C,0x76,0x75,0x7F,0x82,0x7C,0x76, - 0x73,0x75,0x88,0x91,0x82,0x84,0x84,0x7F,0x88,0x80,0x79,0x79,0x7B,0x7E,0x7C,0x77, - 0x7B,0x84,0x88,0x86,0x80,0x84,0x88,0x84,0x84,0x7C,0x7C,0x7E,0x7B,0x75,0x75,0x79, - 0x81,0x94,0x8C,0x84,0x88,0x81,0x87,0x87,0x71,0x74,0x7B,0x78,0x7F,0x79,0x79,0x86, - 0x85,0x85,0x82,0x80,0x87,0x84,0x84,0x82,0x81,0x82,0x7C,0x7E,0x7F,0x79,0x7B,0x8F, - 0x8B,0x7C,0x87,0x85,0x83,0x87,0x77,0x73,0x7B,0x75,0x7B,0x77,0x70,0x7D,0x82,0x7C, - 0x7F,0x81,0x81,0x85,0x80,0x7D,0x7D,0x7F,0x7F,0x7E,0x83,0x7C,0x73,0x85,0x8C,0x82, - 0x8B,0x8D,0x84,0x8A,0x82,0x78,0x7D,0x78,0x78,0x7E,0x72,0x76,0x81,0x7E,0x82,0x81, - 0x7F,0x83,0x81,0x7B,0x7F,0x7D,0x7A,0x7A,0x75,0x7A,0x72,0x75,0x8C,0x8A,0x86,0x89, - 0x7F,0x8A,0x88,0x74,0x7E,0x7B,0x73,0x7B,0x77,0x73,0x82,0x81,0x7E,0x87,0x7F,0x86, - 0x84,0x80,0x84,0x7F,0x7F,0x7D,0x73,0x7C,0x79,0x72,0x86,0x8A,0x84,0x87,0x83,0x81, - 0x8A,0x7F,0x7C,0x84,0x78,0x7C,0x78,0x75,0x7B,0x7D,0x80,0x83,0x81,0x84,0x8B,0x81, - 0x80,0x80,0x81,0x7F,0x7A,0x7A,0x7D,0x7B,0x7E,0x8A,0x82,0x86,0x88,0x82,0x8A,0x88, - 0x7D,0x7E,0x7C,0x75,0x78,0x73,0x73,0x7E,0x79,0x7F,0x83,0x7C,0x87,0x86,0x80,0x88, - 0x85,0x81,0x80,0x7C,0x7E,0x7B,0x7A,0x8A,0x86,0x80,0x8B,0x82,0x85,0x8C,0x7C,0x7F, - 0x86,0x7A,0x7D,0x7A,0x73,0x7D,0x78,0x7C,0x7D,0x78,0x82,0x83,0x80,0x86,0x86,0x84, - 0x87,0x80,0x81,0x80,0x79,0x84,0x84,0x7E,0x86,0x83,0x83,0x85,0x7D,0x82,0x86,0x7C, - 0x7E,0x80,0x74,0x7C,0x7C,0x72,0x7F,0x7C,0x7C,0x86,0x7E,0x81,0x85,0x7F,0x82,0x7C, - 0x7A,0x81,0x7C,0x80,0x87,0x81,0x85,0x85,0x7D,0x86,0x81,0x7A,0x85,0x80,0x7A,0x80, - 0x7C,0x7E,0x7F,0x78,0x7F,0x7F,0x7B,0x86,0x84,0x83,0x89,0x85,0x85,0x84,0x7F,0x7D, - 0x7B,0x80,0x86,0x7E,0x80,0x84,0x7F,0x89,0x84,0x81,0x87,0x7F,0x80,0x82,0x79,0x7D, - 0x83,0x7B,0x7C,0x82,0x81,0x81,0x83,0x87,0x86,0x85,0x86,0x84,0x7F,0x81,0x7F,0x80, - 0x89,0x7F,0x7F,0x86,0x85,0x85,0x81,0x81,0x82,0x7F,0x7F,0x7E,0x7A,0x7F,0x81,0x7A, - 0x7D,0x7E,0x7C,0x81,0x80,0x81,0x88,0x84,0x83,0x83,0x82,0x81,0x7E,0x84,0x87,0x7E, - 0x83,0x85,0x83,0x86,0x80,0x7F,0x84,0x83,0x80,0x80,0x7C,0x80,0x7F,0x7A,0x7E,0x7C, - 0x7F,0x80,0x82,0x86,0x85,0x83,0x84,0x81,0x7F,0x81,0x7D,0x84,0x84,0x7E,0x84,0x84, - 0x83,0x84,0x80,0x81,0x82,0x7F,0x80,0x7C,0x7B,0x80,0x7D,0x7C,0x7E,0x7D,0x7E,0x7F, - 0x7F,0x86,0x85,0x80,0x83,0x84,0x81,0x7F,0x7F,0x85,0x7F,0x7F,0x83,0x81,0x83,0x81, - 0x7F,0x7F,0x80,0x80,0x7C,0x7C,0x7F,0x7E,0x7B,0x7B,0x7C,0x80,0x7F,0x7D,0x83,0x85, - 0x83,0x82,0x83,0x83,0x82,0x80,0x85,0x84,0x7D,0x80,0x83,0x82,0x85,0x7F,0x83,0x84, - 0x7B,0x80,0x7D,0x7A,0x7C,0x7B,0x7C,0x7D,0x7F,0x7F,0x82,0x81,0x84,0x84,0x84,0x84, - 0x7F,0x81,0x82,0x82,0x82,0x81,0x83,0x81,0x82,0x83,0x83,0x88,0x8B,0x92,0x8B,0x8A, - 0x88,0x7C,0x7F,0x73,0x70,0x77,0x75,0x79,0x74,0x83,0x7D,0x6D,0x89,0x81,0x6A,0x7C, - 0x81,0x80,0x72,0x70,0x89,0x81,0x80,0x7F,0x74,0x83,0x83,0x81,0x81,0x76,0x7F,0x88, - 0x7F,0x78,0x78,0x82,0x89,0x83,0x83,0x87,0x87,0x90,0x91,0x86,0x80,0x8A,0x9C,0x92, - 0x8A,0x93,0x88,0x85,0x97,0x96,0x94,0x9C,0xA0,0x98,0x91,0x94,0x94,0x84,0x78,0x80, - 0x88,0x8D,0x8C,0x85,0x82,0x81,0x7E,0x77,0x6E,0x69,0x6F,0x79,0x74,0x6A,0x68,0x62, - 0x64,0x63,0x5D,0x5F,0x60,0x62,0x65,0x5F,0x5A,0x60,0x5E,0x63,0x64,0x5C,0x60,0x66, - 0x6D,0x73,0x6A,0x68,0x6F,0x77,0x78,0x75,0x7E,0x7B,0x76,0x77,0x78,0x7D,0x80,0x7D, - 0x82,0x88,0x87,0x8A,0x8D,0x99,0xAD,0xAA,0x9F,0xA0,0x9E,0x9D,0x9D,0x9C,0x9E,0x97, - 0x8C,0x8A,0x86,0x7E,0x7F,0x99,0x95,0x89,0x93,0x90,0x8F,0x82,0x75,0x84,0x85,0x79, - 0x82,0x89,0x8F,0x95,0x86,0x8E,0x96,0x8C,0x85,0x85,0x8D,0x8B,0x83,0x82,0x88,0x7E, - 0x7C,0x9D,0xA1,0x94,0x9C,0x95,0x90,0x85,0x71,0x81,0x89,0x83,0x8F,0x96,0x98,0x96, - 0x86,0x86,0x92,0x88,0x86,0x89,0x93,0x98,0x8A,0x86,0x83,0x7B,0x72,0x82,0x90,0x81, - 0x7E,0x7D,0x71,0x67,0x53,0x57,0x64,0x5B,0x5A,0x5D,0x5F,0x5D,0x4B,0x42,0x4E,0x48, - 0x44,0x4E,0x59,0x59,0x51,0x4C,0x45,0x4F,0x49,0x55,0x6F,0x67,0x66,0x67,0x61,0x5E, - 0x55,0x58,0x6F,0x71,0x6F,0x79,0x7D,0x7B,0x71,0x6E,0x77,0x79,0x78,0x82,0x8F,0x90, - 0x8B,0x8C,0x95,0xA0,0x9A,0xAA,0xC7,0xB3,0xAB,0xAE,0x9D,0x91,0x83,0x86,0x9A,0x96, - 0x91,0x9C,0x96,0x89,0x7A,0x7C,0x88,0x89,0x88,0x94,0x9C,0x94,0x89,0x87,0x8A,0x8E, - 0x8A,0x8E,0xAE,0xA7,0x95,0x9C,0x95,0x89,0x81,0x84,0x95,0x98,0x8F,0x9B,0x9F,0x93, - 0x8D,0x8A,0x92,0x96,0x90,0x98,0xA3,0x99,0x92,0x8F,0x93,0x91,0x86,0xA2,0xB2,0x9C, - 0x9E,0xA0,0x90,0x88,0x81,0x8C,0x9B,0x8C,0x89,0x95,0x88,0x78,0x75,0x74,0x77,0x72, - 0x70,0x7A,0x72,0x5F,0x5A,0x5A,0x55,0x59,0x51,0x5C,0x73,0x58,0x4E,0x59,0x4F,0x44, - 0x44,0x4D,0x5D,0x58,0x4F,0x5D,0x5A,0x4F,0x54,0x58,0x60,0x63,0x61,0x6F,0x6F,0x65, - 0x68,0x6B,0x6D,0x66,0x74,0x8D,0x7C,0x6F,0x7D,0x77,0x6E,0x71,0x7F,0x94,0x96,0x92, - 0xA3,0xAA,0x9B,0x9A,0x9F,0xA2,0x9F,0x9C,0xA3,0x9E,0x8E,0x8C,0x8F,0x88,0x8C,0x8C, - 0x8C,0xA3,0x98,0x81,0x93,0x8D,0x7F,0x84,0x8A,0x96,0x96,0x8C,0x94,0x98,0x87,0x89, - 0x8F,0x91,0x95,0x95,0x9B,0x99,0x8E,0x91,0x8F,0x8D,0x8E,0x8F,0xAB,0xA8,0x90,0xA0, - 0x9C,0x87,0x88,0x92,0x9D,0x9E,0x94,0x9E,0xA2,0x90,0x8E,0x97,0x95,0x92,0x93,0x95, - 0x96,0x89,0x82,0x89,0x84,0x7D,0x82,0x7D,0x88,0x8F,0x71,0x75,0x7A,0x61,0x5E,0x60, - 0x63,0x68,0x5E,0x5E,0x66,0x51,0x49,0x50,0x4C,0x4F,0x52,0x55,0x57,0x50,0x4D,0x4D, - 0x49,0x4C,0x4B,0x62,0x70,0x58,0x62,0x6C,0x59,0x52,0x5D,0x6A,0x6E,0x6B,0x73,0x7E, - 0x71,0x67,0x70,0x73,0x71,0x77,0x7F,0x86,0x80,0x80,0x8A,0x89,0x8E,0x99,0x93,0xA6, - 0xBB,0xA1,0xA0,0xAD,0x94,0x8A,0x91,0x93,0x98,0x94,0x93,0x9E,0x8C,0x80,0x8A,0x85, - 0x82,0x8A,0x8D,0x90,0x8C,0x86,0x89,0x82,0x86,0x85,0x86,0xA3,0x96,0x87,0x9F,0x95, - 0x80,0x85,0x8B,0x91,0x91,0x8D,0x9D,0x9E,0x8A,0x90,0x98,0x8D,0x90,0x96,0x9A,0x9E, - 0x99,0x96,0x97,0x8E,0x8F,0x94,0x89,0xA2,0xAA,0x8F,0x9B,0x9E,0x83,0x80,0x85,0x88, - 0x8C,0x84,0x89,0x8E,0x7A,0x74,0x7B,0x72,0x70,0x75,0x74,0x75,0x6D,0x67,0x66,0x5A, - 0x59,0x58,0x55,0x6E,0x65,0x54,0x69,0x60,0x4B,0x50,0x53,0x56,0x5A,0x56,0x64,0x67, - 0x56,0x5C,0x61,0x58,0x5B,0x66,0x6A,0x6D,0x70,0x71,0x6E,0x6B,0x6D,0x6E,0x66,0x79, - 0x8A,0x73,0x7B,0x88,0x77,0x74,0x7C,0x85,0x8C,0x8C,0x96,0xA5,0x99,0x92,0x9C,0x96, - 0x8F,0x95,0x98,0x98,0x94,0x93,0x94,0x89,0x86,0x89,0x7E,0x8B,0x9D,0x86,0x89,0x97, - 0x82,0x7A,0x81,0x84,0x87,0x88,0x89,0x95,0x8D,0x84,0x8C,0x89,0x85,0x89,0x90,0x93, - 0x8E,0x91,0x92,0x8C,0x8A,0x90,0x8B,0x88,0xA4,0xA2,0x8E,0xA2,0x9D,0x89,0x8D,0x92, - 0x94,0x93,0x91,0x99,0x9A,0x8A,0x8B,0x91,0x87,0x85,0x8C,0x8D,0x88,0x85,0x86,0x81, - 0x79,0x7B,0x79,0x6F,0x82,0x86,0x6F,0x79,0x7A,0x62,0x60,0x66,0x63,0x64,0x63,0x66, - 0x6B,0x5D,0x5A,0x63,0x5A,0x58,0x5F,0x61,0x61,0x61,0x60,0x5E,0x5C,0x5A,0x61,0x5A, - 0x60,0x7B,0x6C,0x67,0x7D,0x6D,0x62,0x6B,0x6C,0x6F,0x70,0x71,0x7B,0x7A,0x70,0x79, - 0x7C,0x77,0x7F,0x86,0x8A,0x8D,0x8E,0x92,0x93,0x8F,0x95,0x93,0x8C,0xA5,0xA5,0x8F, - 0x9D,0x9E,0x86,0x86,0x8A,0x87,0x8A,0x88,0x8C,0x8F,0x81,0x81,0x89,0x81,0x7F,0x87, - 0x89,0x8B,0x8B,0x8A,0x8A,0x86,0x84,0x8A,0x80,0x8A,0xA3,0x90,0x8C,0xA0,0x90,0x82, - 0x8B,0x8D,0x90,0x91,0x90,0x9B,0x96,0x89,0x93,0x96,0x8B,0x92,0x99,0x97,0x96,0x94, - 0x94,0x93,0x8A,0x8E,0x8C,0x84,0x9C,0x9B,0x84,0x92,0x94,0x7B,0x7B,0x80,0x7D,0x80, - 0x7A,0x7D,0x83,0x70,0x6C,0x76,0x6B,0x65,0x6C,0x6B,0x6B,0x6A,0x66,0x65,0x5F,0x5C, - 0x60,0x57,0x64,0x7A,0x60,0x66,0x81,0x5C,0x5B,0x55,0x46,0x65,0x5E,0x4C,0x5E,0x6A, - 0x62,0x72,0x79,0x73,0x74,0x79,0x8E,0x93,0x8B,0x8C,0x99,0x8D,0x7F,0x7A,0x6C,0x90, - 0x91,0x64,0x77,0x83,0x68,0x5E,0x64,0x64,0x6E,0x76,0x85,0x8A,0x6C,0x78,0x89,0x7E, - 0x84,0x92,0xA1,0xB0,0xA3,0x97,0xAB,0xA9,0xBC,0xAF,0x93,0xD5,0xBF,0xA4,0xBA,0xAC, - 0xAA,0x9E,0x95,0x92,0x8D,0x93,0x93,0x83,0x7F,0x6E,0x6D,0x82,0x74,0x85,0x90,0x7D, - 0x84,0x7A,0x78,0x84,0x60,0x52,0x60,0x6D,0x83,0x76,0x70,0x78,0x66,0x64,0x72,0x75, - 0x90,0x91,0x92,0xAC,0xA3,0x91,0x96,0x98,0x94,0xA1,0xB2,0xBE,0xBE,0xA5,0x9D,0xAA, - 0x9B,0x98,0x8D,0x8C,0xA0,0x8C,0x86,0x87,0x7C,0x6C,0x61,0x66,0x69,0x70,0x65,0x56, - 0x4C,0x2B,0x25,0x33,0x33,0x30,0x34,0x3E,0x34,0x35,0x40,0x53,0x56,0x4D,0x57,0x65, - 0x74,0x7E,0x7A,0x79,0x7B,0x6F,0x7D,0x8A,0x8D,0x99,0x97,0x9E,0xBA,0xC4,0xCB,0xD5, - 0xC7,0xC6,0xC6,0xB4,0xB9,0xA5,0x8A,0x99,0x8C,0x8A,0x8A,0x7F,0x8C,0x74,0x5C,0x6F, - 0x77,0x65,0x5D,0x53,0x5A,0x68,0x53,0x57,0x65,0x65,0x68,0x62,0x6A,0x69,0x6C,0x7D, - 0x81,0x7F,0x7C,0x87,0x98,0x95,0x97,0x9B,0x92,0x9F,0x9E,0x9D,0xAA,0xA3,0xA4,0xA2, - 0xAA,0xAF,0xAA,0xB4,0xB0,0xAB,0xB3,0xAB,0xB3,0xB7,0xA6,0xA5,0xA8,0xA3,0x9C,0x91, - 0x87,0x79,0x65,0x66,0x82,0x7B,0x63,0x73,0x75,0x6D,0x62,0x48,0x43,0x4D,0x52,0x60, - 0x61,0x50,0x4E,0x53,0x53,0x55,0x5C,0x5D,0x5E,0x5C,0x5A,0x5B,0x64,0x75,0x68,0x78, - 0x9D,0x98,0x8D,0x7B,0x6D,0x7F,0x84,0x88,0x9A,0x96,0x9D,0x9C,0x82,0x7B,0x7F,0x7E, - 0x8A,0xA1,0x96,0x89,0x91,0x90,0x98,0x95,0x8F,0x9A,0x95,0x9E,0xA1,0x86,0x77,0x6A, - 0x64,0x75,0x84,0x85,0x7C,0x69,0x63,0x69,0x72,0x6C,0x65,0x65,0x74,0x7A,0x62,0x5D, - 0x49,0x52,0x5C,0x54,0x5F,0x57,0x5E,0x6A,0x6C,0x65,0x5F,0x67,0x6C,0x6D,0x7C,0x7E, - 0x74,0x84,0x80,0x84,0x96,0x94,0xA1,0xA5,0xB3,0xBC,0xBA,0xB6,0xBD,0xC4,0xC3,0xCB, - 0xC2,0xC3,0xD3,0xD7,0xCA,0xCE,0xC6,0xB7,0xBA,0xB2,0xAE,0xAB,0xA2,0x9D,0x95,0x8E, - 0x8A,0x8D,0x85,0x85,0x86,0x78,0x6E,0x68,0x6C,0x61,0x57,0x51,0x4C,0x5F,0x65,0x55, - 0x4D,0x4E,0x48,0x46,0x46,0x3A,0x39,0x42,0x48,0x48,0x52,0x51,0x45,0x45,0x46,0x54, - 0x5F,0x52,0x4D,0x56,0x60,0x62,0x5F,0x63,0x63,0x72,0x82,0x75,0x7D,0x82,0x81,0x85, - 0x7A,0x7E,0x8A,0x93,0x9A,0x93,0x8F,0x91,0x91,0x98,0x94,0xA6,0xBB,0xAF,0xA8,0xB2, - 0xB7,0xAB,0xA0,0x8F,0x9D,0xC3,0xBB,0xB0,0xA3,0x98,0xA6,0xAA,0xA7,0x98,0x93,0x9F, - 0xA0,0x9A,0x91,0x92,0x98,0x8F,0x8E,0x85,0x81,0x78,0x61,0x63,0x5E,0x5D,0x61,0x5C, - 0x70,0x85,0x7C,0x69,0x64,0x5F,0x66,0x69,0x62,0x63,0x66,0x6F,0x68,0x62,0x62,0x61, - 0x6A,0x6D,0x73,0x7A,0x78,0x7D,0x7A,0x7A,0x86,0x84,0x7F,0x8C,0xA1,0xAB,0x9D,0x8E, - 0x82,0x83,0x92,0x92,0x95,0x9F,0x9B,0x9F,0x9A,0x90,0x94,0x8C,0x92,0x91,0x85,0x8D, - 0x84,0x84,0x91,0x82,0x7D,0x7E,0x77,0x91,0xA4,0x8A,0x77,0x74,0x6D,0x82,0x8D,0x74, - 0x72,0x78,0x7D,0x89,0x7B,0x72,0x6D,0x63,0x6E,0x6E,0x67,0x6E,0x6A,0x68,0x68,0x6A, - 0x68,0x67,0x70,0x7C,0x86,0x7E,0x73,0x74,0x7C,0x7E,0x78,0x73,0x73,0x7F,0x98,0x94, - 0x81,0x72,0x6C,0x7D,0x7C,0x76,0x65,0x56,0x5B,0x62,0x6D,0x68,0x61,0x67,0x71,0x7F, - 0x87,0x79,0x6D,0x6B,0x75,0x84,0x7E,0x7F,0x89,0x90,0x92,0x95,0x96,0x93,0x99,0x9F, - 0xA0,0x97,0x95,0x98,0x98,0x9D,0xA0,0x97,0x8E,0xA1,0xAE,0xB7,0xB7,0xA8,0xA7,0xA8, - 0xAB,0xAE,0xA2,0x9B,0xA3,0xA8,0xAB,0xA2,0x8E,0x87,0x92,0xA2,0xA8,0x9D,0x9A,0x93, - 0x8B,0x8E,0x8E,0x7A,0x70,0x7D,0x8B,0x90,0x83,0x6E,0x62,0x65,0x6C,0x69,0x62,0x68, - 0x70,0x70,0x6E,0x5C,0x50,0x51,0x4B,0x4D,0x48,0x47,0x4A,0x4C,0x51,0x4C,0x46,0x41, - 0x46,0x53,0x62,0x6C,0x58,0x48,0x49,0x4E,0x5F,0x67,0x67,0x6D,0x6E,0x77,0x81,0x78, - 0x70,0x70,0x70,0x75,0x7C,0x81,0x7A,0x7A,0x82,0x84,0x87,0x88,0x89,0x8E,0x90,0x8D, - 0x8D,0x86,0x87,0x8F,0x8A,0x8E,0x96,0x93,0x97,0x9D,0x99,0x98,0x93,0x94,0x95,0x89, - 0x85,0x8A,0x8B,0x94,0x9A,0x95,0x97,0x93,0x97,0xA8,0xB1,0xB7,0xB1,0xAB,0xA2,0xA1, - 0x9F,0x98,0xA4,0xAA,0xA3,0xA5,0xA4,0xA5,0xA6,0x9D,0x93,0x88,0x82,0x85,0x84,0x85, - 0x86,0x81,0x83,0x84,0x80,0x85,0x8D,0x8D,0x8B,0x81,0x76,0x76,0x76,0x6C,0x6B,0x72, - 0x6A,0x65,0x61,0x65,0x6F,0x6D,0x66,0x5B,0x5A,0x58,0x5D,0x5C,0x4E,0x53,0x56,0x56, - 0x5D,0x5A,0x5A,0x61,0x60,0x6B,0x6C,0x63,0x64,0x5F,0x5E,0x62,0x62,0x59,0x52,0x55, - 0x60,0x65,0x61,0x65,0x62,0x6A,0x76,0x74,0x6D,0x6D,0x75,0x78,0x82,0x84,0x8A,0x92, - 0x92,0x9B,0x91,0x88,0x8D,0x90,0x95,0x94,0x95,0x90,0x86,0x8C,0x96,0x9C,0x9C,0x93, - 0x8E,0x96,0x9D,0x98,0x92,0x94,0x93,0x9D,0xA1,0x97,0x95,0x9A,0xA2,0xA3,0x9E,0x96, - 0x96,0x9A,0x9C,0x9F,0x94,0x92,0x94,0x93,0x93,0x94,0x95,0x8D,0x8E,0x8F,0x98,0x99, - 0x93,0x98,0x92,0x93,0x9B,0x95,0x91,0x94,0x95,0x92,0x8D,0x8D,0x8A,0x8A,0x8D,0x89, - 0x87,0x85,0x84,0x7E,0x71,0x74,0x72,0x6D,0x6F,0x6E,0x6F,0x67,0x6D,0x70,0x66,0x70, - 0x6F,0x69,0x69,0x63,0x63,0x5D,0x61,0x5E,0x59,0x60,0x60,0x63,0x61,0x62,0x63,0x5F, - 0x62,0x5C,0x61,0x68,0x66,0x66,0x63,0x5F,0x68,0x6E,0x6C,0x6E,0x69,0x6B,0x72,0x76, - 0x77,0x6E,0x6B,0x76,0x78,0x77,0x77,0x71,0x72,0x79,0x7F,0x85,0x85,0x84,0x8A,0x8E, - 0x8F,0x8C,0x8D,0x8F,0x8C,0x92,0x96,0x93,0x91,0x8F,0x94,0x96,0x94,0x96,0x94,0x8E, - 0x97,0x9F,0x99,0x95,0x95,0x97,0x99,0xA1,0x9E,0x95,0x94,0x9A,0x9E,0x9C,0x99,0x97, - 0x96,0x95,0x9B,0x9B,0x95,0x95,0x91,0x93,0x99,0x96,0x95,0x97,0x94,0x99,0x98,0x98, - 0x97,0x97,0x9E,0x9D,0x9D,0x99,0x94,0x95,0x94,0x90,0x8C,0x88,0x84,0x86,0x87,0x84, - 0x84,0x80,0x80,0x85,0x81,0x81,0x7F,0x7B,0x7B,0x72,0x72,0x72,0x70,0x72,0x75,0x77, - 0x74,0x75,0x70,0x6D,0x73,0x6D,0x69,0x68,0x64,0x64,0x60,0x59,0x59,0x5F,0x64,0x60, - 0x5E,0x61,0x64,0x65,0x61,0x5F,0x5C,0x60,0x69,0x68,0x6E,0x6B,0x60,0x67,0x67,0x68, - 0x70,0x69,0x63,0x68,0x6A,0x6D,0x6B,0x65,0x66,0x69,0x70,0x75,0x6D,0x6A,0x6C,0x70, - 0x76,0x76,0x74,0x79,0x7E,0x83,0x83,0x7F,0x82,0x85,0x8D,0x95,0x91,0x91,0x92,0x8C, - 0x94,0x95,0x8D,0x8D,0x8B,0x88,0x8E,0x8E,0x86,0x86,0x88,0x8D,0x95,0x92,0x91,0x94, - 0x94,0x9A,0x9C,0x9B,0x99,0x94,0x9A,0x9E,0x9B,0x9A,0x93,0x90,0x92,0x97,0x9A,0x96, - 0x94,0x92,0x91,0x96,0x91,0x8B,0x8A,0x8A,0x92,0x8E,0x8A,0x88,0x87,0x90,0x8E,0x8C, - 0x91,0x90,0x94,0x8E,0x89,0x8E,0x8E,0x8B,0x8B,0x89,0x8A,0x89,0x80,0x7F,0x83,0x7E, - 0x7A,0x7A,0x77,0x76,0x74,0x6E,0x71,0x74,0x70,0x73,0x75,0x75,0x7B,0x7A,0x7A,0x7F, - 0x7D,0x7C,0x7E,0x7B,0x78,0x79,0x77,0x76,0x78,0x78,0x7A,0x78,0x74,0x7A,0x79,0x75, - 0x77,0x6F,0x70,0x75,0x75,0x76,0x71,0x6E,0x73,0x75,0x75,0x76,0x72,0x75,0x7C,0x7E, - 0x7B,0x79,0x74,0x76,0x7A,0x77,0x75,0x76,0x76,0x78,0x76,0x74,0x73,0x6F,0x6F,0x74, - 0x74,0x74,0x72,0x6F,0x74,0x79,0x79,0x77,0x75,0x74,0x7B,0x81,0x7E,0x7D,0x79,0x7A, - 0x80,0x78,0x7B,0x83,0x7A,0x7B,0x7F,0x76,0x81,0x81,0x74,0x81,0x82,0x80,0x89,0x75, - 0x74,0x85,0x7B,0x80,0x80,0x76,0x86,0x89,0x87,0x89,0x81,0x89,0x87,0x82,0x86,0x82, - 0x7D,0x80,0x93,0x8E,0x84,0x91,0x86,0x8A,0x8D,0x73,0x7D,0x80,0x7C,0x86,0x7B,0x7B, - 0x86,0x89,0x89,0x86,0x87,0x86,0x87,0x83,0x80,0x85,0x80,0x7F,0x83,0x83,0x84,0x75, - 0x7F,0x99,0x8C,0x8C,0x8C,0x83,0x90,0x84,0x75,0x7C,0x7C,0x7D,0x7D,0x7E,0x84,0x8D, - 0x8C,0x81,0x85,0x89,0x87,0x85,0x78,0x7C,0x88,0x84,0x82,0x81,0x7E,0x77,0x7C,0x93, - 0x8C,0x81,0x88,0x83,0x86,0x83,0x6F,0x74,0x7B,0x79,0x80,0x83,0x84,0x8E,0x90,0x86, - 0x88,0x88,0x84,0x81,0x7B,0x80,0x88,0x82,0x80,0x84,0x80,0x73,0x78,0x93,0x8F,0x87, - 0x8B,0x84,0x88,0x81,0x6C,0x74,0x7D,0x79,0x79,0x78,0x7D,0x8A,0x87,0x7A,0x7E,0x82, - 0x81,0x7E,0x78,0x7A,0x81,0x7E,0x7D,0x7C,0x7B,0x74,0x71,0x8D,0x93,0x83,0x87,0x83, - 0x85,0x86,0x71,0x71,0x7D,0x7C,0x79,0x78,0x7B,0x89,0x8A,0x7D,0x83,0x89,0x83,0x7B, - 0x75,0x7C,0x82,0x79,0x78,0x7F,0x7F,0x74,0x78,0x94,0x8D,0x82,0x8C,0x86,0x8C,0x80, - 0x6A,0x79,0x7F,0x75,0x75,0x76,0x7D,0x8C,0x85,0x7D,0x89,0x8B,0x83,0x7B,0x76,0x80, - 0x80,0x76,0x7B,0x80,0x7C,0x6E,0x7C,0x99,0x8B,0x85,0x89,0x84,0x8D,0x7B,0x6E,0x7F, - 0x7B,0x77,0x75,0x77,0x86,0x8A,0x7D,0x7D,0x8A,0x86,0x80,0x7A,0x77,0x81,0x7A,0x74, - 0x7D,0x7D,0x79,0x70,0x83,0x94,0x83,0x86,0x87,0x89,0x91,0x72,0x71,0x85,0x79,0x78, - 0x77,0x79,0x89,0x87,0x7B,0x82,0x89,0x84,0x7F,0x7C,0x82,0x86,0x77,0x77,0x82,0x80, - 0x7C,0x77,0x8B,0x92,0x80,0x8A,0x88,0x8A,0x8C,0x74,0x7E,0x88,0x7D,0x7D,0x79,0x7D, - 0x88,0x80,0x7B,0x84,0x88,0x87,0x85,0x7F,0x86,0x84,0x76,0x80,0x84,0x81,0x80,0x7C, - 0x91,0x8B,0x7D,0x89,0x85,0x8A,0x8A,0x79,0x83,0x87,0x7F,0x80,0x7C,0x7D,0x84,0x7B, - 0x7A,0x83,0x82,0x83,0x82,0x7E,0x82,0x7F,0x7D,0x82,0x7F,0x80,0x80,0x82,0x89,0x81, - 0x81,0x84,0x80,0x86,0x84,0x80,0x87,0x83,0x7E,0x80,0x7E,0x81,0x81,0x7D,0x7E,0x7F, - 0x80,0x80,0x7E,0x7F,0x7F,0x7E,0x80,0x81,0x82,0x82,0x81,0x80,0x82,0x81,0x80,0x81, - 0x81,0x84,0x83,0x80,0x82,0x80,0x7F,0x7F,0x7D,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7E, - 0x7D,0x7C,0x7F,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x80,0x81,0x81,0x83,0x81, - 0x81,0x81,0x7F,0x81,0x82,0x80,0x81,0x81,0x80,0x81,0x7F,0x7E,0x7F,0x7F,0x7F,0x80, - 0x7E,0x7F,0x80,0x7F,0x7E,0x7E,0x7F,0x80,0x80,0x81,0x81,0x80,0x80,0x7F,0x7E,0x7F, - 0x7F,0x7E,0x7F,0x80,0x80,0x7E,0x7E,0x7E,0x7E,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7C,0x7D,0x7C,0x7F,0x81,0x82,0x82,0x82,0x81,0x84,0x84,0x84,0x82,0x80,0x82,0x82, - 0x83,0x82,0x81,0x81,0x81,0x81,0x80,0x7E,0x7E,0x7E,0x7E,0x7E,0x7D,0x7A,0x7A,0x7B, - 0x7C,0x7C,0x7B,0x7D,0x7F,0x7D,0x7F,0x7D,0x7E,0x7E,0x7D,0x80,0x7F,0x80,0x80,0x7F, - 0x7F,0x80,0x80,0x81,0x81,0x7F,0x80,0x80,0x7E,0x7D,0x7D,0x7E,0x7E,0x7E,0x7D,0x7E, - 0x7E,0x7E,0x7E,0x7F,0x7E,0x7D,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x80,0x81,0x81, - 0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x80,0x81,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7E, - 0x7D,0x7E,0x7F,0x7E,0x7F,0x80,0x7F,0x80,0x81,0x80,0x81,0x81,0x7F,0x80,0x80,0x80, - 0x80,0x80,0x7F,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x7F,0x7E,0x7D,0x7E,0x7F,0x7F, - 0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x80,0x81,0x81,0x81,0x80,0x7F,0x7F,0x80,0x80,0x7F, - 0x7F,0x80,0x81,0x83,0x84,0x8C,0x8C,0x92,0x92,0x84,0x7E,0x7A,0x7D,0x7B,0x7A,0x75, - 0x7B,0x66,0x73,0x8F,0x73,0x79,0x7E,0x7C,0x6F,0x72,0x80,0x74,0x7E,0x7D,0x79,0x7B, - 0x7A,0x82,0x77,0x78,0x7B,0x75,0x72,0x77,0x81,0x79,0x85,0x80,0x74,0x82,0x81,0x7A, - 0x82,0x92,0x89,0x8A,0x8E,0x81,0x99,0xA5,0x9A,0xA6,0xA4,0x96,0x9D,0xA8,0x95,0x84, - 0x90,0x97,0x9B,0x98,0x87,0x85,0x80,0x7E,0x7C,0x73,0x78,0x81,0x7C,0x76,0x77,0x76, - 0x78,0x73,0x71,0x74,0x67,0x65,0x66,0x63,0x6D,0x7A,0x79,0x76,0x7A,0x73,0x6D,0x70, - 0x69,0x6C,0x70,0x66,0x66,0x65,0x65,0x72,0x6C,0x68,0x6E,0x64,0x6E,0x77,0x76,0x85, - 0x93,0xA8,0xB3,0xA3,0x9D,0x99,0x87,0x92,0x8D,0x8B,0x9E,0x86,0x89,0x98,0x8B,0x89, - 0x71,0x74,0x8A,0x6A,0x6D,0x80,0x78,0x82,0x7F,0x86,0x97,0x88,0x83,0x90,0x8B,0x83, - 0x7D,0x7B,0x7F,0x7A,0x71,0x7B,0x98,0x8C,0x89,0xA0,0x99,0x89,0x7C,0x7E,0x85,0x79, - 0x79,0x88,0x92,0x8C,0x84,0x95,0xA2,0x95,0x90,0x96,0x91,0x8B,0x8F,0x95,0x8F,0x8D, - 0x8D,0x91,0xA5,0x8E,0x87,0x95,0x87,0x7A,0x70,0x76,0x7D,0x70,0x6F,0x7C,0x7B,0x75, - 0x72,0x7D,0x79,0x62,0x67,0x6C,0x5E,0x5E,0x68,0x6D,0x67,0x63,0x62,0x69,0x76,0x63, - 0x63,0x72,0x5E,0x56,0x56,0x5E,0x66,0x54,0x62,0x6F,0x61,0x69,0x71,0x7B,0x80,0x78, - 0x8D,0x9C,0x9A,0x9E,0x9B,0x9A,0x90,0x8D,0x8F,0x88,0x95,0x91,0x89,0x92,0x84,0x77, - 0x7B,0x77,0x81,0x82,0x7B,0x91,0x89,0x83,0x91,0x8B,0x86,0x83,0x84,0x84,0x83,0x8D, - 0x8C,0x88,0x85,0x86,0x7B,0x87,0xA2,0x8B,0x92,0xA4,0x8F,0x88,0x80,0x82,0x8F,0x80, - 0x89,0xA0,0x99,0x9A,0xA6,0xA4,0x9E,0x92,0x93,0x94,0x90,0x98,0x98,0x97,0x91,0x8E, - 0x96,0x86,0x96,0xA4,0x85,0x8D,0x8C,0x79,0x7A,0x72,0x7A,0x83,0x78,0x80,0x85,0x77, - 0x77,0x73,0x66,0x68,0x61,0x62,0x68,0x66,0x6E,0x68,0x58,0x5A,0x58,0x4A,0x6A,0x6F, - 0x53,0x69,0x64,0x4E,0x50,0x4D,0x5B,0x57,0x52,0x67,0x67,0x64,0x73,0x7A,0x78,0x7C, - 0x87,0x95,0x99,0x9C,0xA3,0x98,0x8B,0x87,0x87,0x7F,0x85,0xA2,0x8A,0x85,0x99,0x81, - 0x76,0x77,0x78,0x82,0x7B,0x80,0x90,0x86,0x84,0x8A,0x81,0x80,0x80,0x7E,0x84,0x85, - 0x87,0x8F,0x86,0x82,0x89,0x7F,0x93,0xA2,0x8B,0x9A,0x9F,0x86,0x8C,0x88,0x8A,0x93, - 0x8B,0x9E,0xA8,0x9D,0xA3,0xA6,0x99,0x93,0x90,0x8F,0x92,0x95,0x9D,0x9E,0x92,0x90, - 0x95,0x84,0x8D,0x9D,0x88,0x8C,0x92,0x80,0x77,0x75,0x78,0x75,0x6D,0x78,0x82,0x6F, - 0x6E,0x78,0x64,0x63,0x63,0x62,0x60,0x59,0x63,0x63,0x59,0x58,0x58,0x4E,0x67,0x67, - 0x53,0x6F,0x64,0x4E,0x57,0x4E,0x4D,0x55,0x51,0x65,0x66,0x5F,0x72,0x76,0x75,0x81, - 0x8B,0x8E,0x94,0x9C,0xA0,0x95,0x8C,0x90,0x88,0x7B,0x98,0x9A,0x81,0x9E,0x94,0x79, - 0x81,0x7B,0x7B,0x78,0x78,0x88,0x86,0x80,0x8A,0x85,0x7D,0x7F,0x84,0x83,0x80,0x8A, - 0x8B,0x87,0x7F,0x89,0x83,0x81,0xA6,0x92,0x90,0xA7,0x90,0x89,0x90,0x8C,0x90,0x90, - 0x98,0xA7,0x9D,0xA0,0xAB,0x9C,0x96,0x9F,0x99,0x97,0x9A,0x9E,0x9E,0x98,0x93,0x95, - 0x87,0x8E,0xA5,0x86,0x92,0xA0,0x7F,0x80,0x81,0x76,0x74,0x70,0x78,0x7B,0x68,0x6F, - 0x73,0x60,0x61,0x65,0x5C,0x58,0x60,0x5F,0x5E,0x56,0x57,0x58,0x4C,0x69,0x69,0x53, - 0x71,0x6C,0x4F,0x59,0x58,0x4D,0x50,0x55,0x61,0x62,0x60,0x70,0x75,0x67,0x7A,0x84, - 0x80,0x8F,0x96,0x99,0x95,0x90,0x93,0x8A,0x85,0xA3,0x95,0x89,0xA2,0x90,0x7A,0x86, - 0x84,0x76,0x77,0x7E,0x88,0x81,0x80,0x90,0x85,0x7B,0x8A,0x84,0x7A,0x84,0x8A,0x8A, - 0x87,0x89,0x8E,0x80,0x8A,0xA5,0x8E,0x94,0xAD,0x90,0x89,0x98,0x90,0x8B,0x8F,0x9A, - 0x9F,0x98,0x9E,0xA9,0x98,0x96,0xA8,0x9D,0x95,0x9F,0xA1,0x9A,0x94,0x98,0x93,0x83, - 0x9F,0xA8,0x88,0x9E,0xA7,0x83,0x84,0x8B,0x77,0x75,0x79,0x7A,0x77,0x6F,0x74,0x75, - 0x62,0x66,0x6A,0x5B,0x5A,0x5F,0x62,0x5B,0x57,0x5E,0x58,0x50,0x6D,0x67,0x54,0x6C, - 0x62,0x4A,0x57,0x56,0x4C,0x4F,0x58,0x61,0x5F,0x5F,0x6D,0x6D,0x66,0x79,0x82,0x7C, - 0x89,0x93,0x97,0x98,0x92,0x98,0x8E,0x8D,0xA9,0x94,0x8F,0xA7,0x8F,0x7F,0x8B,0x81, - 0x76,0x79,0x7F,0x84,0x80,0x80,0x8C,0x83,0x77,0x87,0x86,0x7B,0x81,0x89,0x87,0x83, - 0x85,0x89,0x7E,0x8D,0xA7,0x8D,0x97,0xAA,0x8D,0x87,0x94,0x8D,0x8A,0x8F,0x99,0x9F, - 0x98,0x9C,0xA6,0x98,0x93,0xA0,0x9B,0x97,0x9B,0x9D,0x9D,0x97,0x93,0x97,0x88,0x94, - 0xAB,0x91,0x96,0xA5,0x88,0x80,0x8A,0x7D,0x76,0x79,0x7B,0x7E,0x74,0x6F,0x78,0x6B, - 0x63,0x6A,0x67,0x62,0x63,0x65,0x60,0x57,0x55,0x5B,0x4D,0x5B,0x6F,0x57,0x61,0x70, - 0x54,0x4D,0x58,0x50,0x4E,0x52,0x59,0x62,0x5C,0x60,0x6E,0x69,0x68,0x77,0x7D,0x82, - 0x88,0x93,0x99,0x93,0x91,0x96,0x88,0x95,0xAB,0x8D,0x96,0xA3,0x83,0x7B,0x84,0x7C, - 0x7B,0x7C,0x7E,0x8B,0x80,0x7B,0x88,0x80,0x77,0x7F,0x83,0x80,0x81,0x85,0x89,0x7E, - 0x7E,0x87,0x7B,0x90,0xA7,0x8C,0x99,0xAA,0x8C,0x89,0x95,0x91,0x94,0x91,0x96,0xA5, - 0x98,0x91,0xA1,0x9D,0x94,0x98,0x9F,0x9E,0x99,0x9C,0x9F,0x95,0x90,0x95,0x8A,0x9C, - 0xAF,0x94,0x9B,0xAA,0x8B,0x7E,0x84,0x7F,0x80,0x7B,0x79,0x83,0x77,0x69,0x73,0x70, - 0x64,0x62,0x68,0x6B,0x62,0x61,0x66,0x5E,0x56,0x56,0x51,0x62,0x75,0x5A,0x5F,0x6F, - 0x56,0x4A,0x4F,0x53,0x59,0x54,0x58,0x6A,0x64,0x5F,0x6A,0x72,0x74,0x74,0x82,0x90, - 0x92,0x93,0x96,0x96,0x95,0x92,0x8B,0xA0,0xB3,0x95,0x95,0x9D,0x8B,0x7D,0x76,0x7F, - 0x87,0x7C,0x77,0x85,0x82,0x78,0x79,0x7C,0x7F,0x7C,0x7B,0x80,0x82,0x7E,0x7D,0x7F, - 0x82,0x83,0x7A,0x90,0xA5,0x8F,0x8E,0x99,0x92,0x8A,0x87,0x92,0x9D,0x99,0x96,0x9C, - 0x9E,0x9B,0x94,0x93,0x9D,0x9B,0x97,0x98,0x9C,0x9C,0x95,0x94,0x94,0x93,0x8F,0xA2, - 0xAE,0x98,0x98,0x98,0x8B,0x84,0x7A,0x7E,0x86,0x80,0x78,0x76,0x78,0x77,0x6E,0x69, - 0x6B,0x70,0x6D,0x64,0x65,0x64,0x5F,0x5A,0x57,0x57,0x57,0x70,0x75,0x60,0x64,0x60, - 0x53,0x4F,0x4D,0x59,0x61,0x5F,0x5D,0x5D,0x65,0x67,0x65,0x69,0x74,0x83,0x81,0x83, - 0x8E,0x90,0x91,0x91,0x90,0x8C,0x97,0xB0,0xA4,0x92,0x92,0x8E,0x87,0x7D,0x78,0x80, - 0x8A,0x85,0x78,0x77,0x7D,0x7C,0x76,0x72,0x79,0x83,0x7C,0x76,0x78,0x7C,0x7B,0x78, - 0x77,0x76,0x8C,0xA1,0x97,0x8B,0x89,0x8C,0x8E,0x87,0x85,0x91,0x9F,0x9F,0x96,0x93, - 0x98,0x9D,0x97,0x90,0x98,0xA3,0x9E,0x9A,0x95,0x96,0x96,0x94,0x90,0x8F,0xA6,0xB1, - 0xA1,0x94,0x8B,0x8A,0x8D,0x81,0x7A,0x82,0x8A,0x85,0x79,0x74,0x74,0x76,0x6E,0x65, - 0x6A,0x6E,0x6D,0x68,0x5F,0x5D,0x5C,0x59,0x52,0x58,0x6F,0x75,0x6A,0x5D,0x53,0x57, - 0x58,0x53,0x52,0x59,0x66,0x67,0x62,0x5F,0x63,0x6B,0x6D,0x70,0x79,0x80,0x88,0x8C, - 0x8D,0x8E,0x8D,0x8F,0x8D,0x9D,0xAF,0xAA,0xA2,0x93,0x88,0x8A,0x85,0x80,0x7E,0x7F, - 0x85,0x84,0x7C,0x76,0x76,0x77,0x74,0x76,0x79,0x7A,0x7E,0x7A,0x78,0x76,0x74,0x73, - 0x75,0x8D,0x9D,0x98,0x90,0x83,0x7F,0x88,0x88,0x88,0x8B,0x90,0x97,0x9C,0x99,0x94, - 0x90,0x92,0x96,0x97,0x99,0x9B,0x9A,0x9A,0x9A,0x93,0x91,0x8C,0x91,0xA7,0xAF,0xA8, - 0x9C,0x8B,0x83,0x88,0x85,0x83,0x84,0x80,0x81,0x83,0x80,0x79,0x72,0x6E,0x6F,0x70, - 0x6F,0x6D,0x66,0x66,0x64,0x5E,0x5C,0x56,0x5A,0x6E,0x73,0x6B,0x65,0x57,0x50,0x56, - 0x54,0x56,0x59,0x56,0x5D,0x62,0x65,0x69,0x68,0x6A,0x6F,0x77,0x7D,0x81,0x87,0x8B, - 0x8E,0x91,0x94,0x93,0x92,0x9B,0x9E,0x95,0x97,0x92,0x88,0x8C,0x87,0x82,0x83,0x7B, - 0x79,0x7A,0x77,0x77,0x73,0x70,0x70,0x70,0x73,0x74,0x74,0x75,0x76,0x79,0x7B,0x79, - 0x7A,0x81,0x87,0x86,0x87,0x8B,0x88,0x8D,0x8F,0x8C,0x92,0x8F,0x8E,0x93,0x91,0x91, - 0x93,0x90,0x90,0x91,0x94,0x97,0x97,0x99,0x96,0x9A,0x9C,0x97,0x96,0x97,0x9C,0x9B, - 0x95,0x96,0x90,0x8E,0x90,0x88,0x89,0x85,0x7E,0x7F,0x7B,0x75,0x75,0x70,0x6E,0x6E, - 0x6D,0x6C,0x6A,0x68,0x66,0x66,0x68,0x65,0x63,0x60,0x63,0x69,0x63,0x63,0x63,0x5F, - 0x66,0x65,0x63,0x6A,0x66,0x64,0x6A,0x69,0x6D,0x70,0x70,0x77,0x7E,0x83,0x89,0x8C, - 0x8F,0x92,0x96,0x98,0x97,0x94,0x92,0x98,0x96,0x8F,0x91,0x8B,0x85,0x8A,0x83,0x7E, - 0x80,0x76,0x72,0x74,0x6E,0x70,0x70,0x6C,0x70,0x71,0x73,0x77,0x77,0x79,0x7D,0x7F, - 0x82,0x82,0x84,0x84,0x88,0x8C,0x8C,0x8F,0x8F,0x8D,0x94,0x95,0x93,0x95,0x90,0x90, - 0x94,0x8F,0x91,0x92,0x8E,0x92,0x95,0x93,0x97,0x95,0x95,0x99,0x98,0x98,0x9A,0x99, - 0x96,0x93,0x94,0x93,0x8D,0x8C,0x8B,0x87,0x89,0x84,0x80,0x80,0x7B,0x79,0x77,0x72, - 0x73,0x6F,0x6A,0x6C,0x67,0x66,0x6A,0x65,0x66,0x69,0x68,0x69,0x68,0x68,0x69,0x67, - 0x6A,0x6D,0x6B,0x6F,0x70,0x6D,0x73,0x75,0x76,0x7B,0x7C,0x7E,0x84,0x85,0x87,0x8A, - 0x89,0x8B,0x8B,0x8A,0x8A,0x88,0x8C,0x8D,0x87,0x89,0x8B,0x86,0x86,0x86,0x83,0x84, - 0x84,0x82,0x80,0x80,0x7D,0x7C,0x7D,0x7C,0x7C,0x7D,0x7B,0x7A,0x7B,0x79,0x79,0x7B, - 0x7B,0x7D,0x7F,0x80,0x80,0x82,0x85,0x86,0x89,0x89,0x8A,0x8D,0x8E,0x8D,0x8E,0x8E, - 0x8E,0x8F,0x8E,0x8F,0x8F,0x8F,0x8F,0x8D,0x8E,0x8E,0x8B,0x8C,0x8C,0x8B,0x8B,0x8B, - 0x88,0x86,0x86,0x84,0x85,0x87,0x84,0x85,0x86,0x84,0x83,0x82,0x81,0x82,0x81,0x80, - 0x7E,0x7D,0x7D,0x7B,0x7A,0x7A,0x79,0x79,0x79,0x78,0x77,0x76,0x76,0x75,0x74,0x74, - 0x75,0x76,0x78,0x78,0x79,0x79,0x7B,0x7B,0x7C,0x7F,0x80,0x81,0x83,0x84,0x84,0x85, - 0x84,0x85,0x85,0x85,0x84,0x84,0x84,0x82,0x80,0x80,0x7F,0x7D,0x7D,0x7C,0x7B,0x7B, - 0x7A,0x79,0x79,0x77,0x78,0x79,0x77,0x77,0x78,0x78,0x79,0x77,0x77,0x78,0x79,0x7B, - 0x7B,0x7C,0x7E,0x7E,0x7E,0x80,0x80,0x80,0x82,0x83,0x83,0x85,0x85,0x85,0x85,0x84, - 0x84,0x86,0x87,0x85,0x86,0x86,0x86,0x85,0x84,0x84,0x84,0x85,0x85,0x86,0x88,0x87, - 0x85,0x86,0x84,0x85,0x85,0x84,0x85,0x83,0x84,0x84,0x82,0x82,0x82,0x81,0x82,0x83, - 0x82,0x81,0x81,0x80,0x7E,0x7F,0x7E,0x7D,0x7E,0x7E,0x7D,0x7D,0x7D,0x7C,0x7D,0x7C, - 0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7D,0x7F,0x7F,0x7E,0x80,0x82,0x83,0x84,0x83,0x83, - 0x82,0x82,0x84,0x83,0x82,0x83,0x83,0x82,0x81,0x80,0x7F,0x80,0x7F,0x7F,0x7F,0x7F, - 0x7D,0x7C,0x7C,0x7B,0x7B,0x7B,0x7A,0x7A,0x7A,0x7A,0x7A,0x7B,0x7A,0x78,0x7B,0x7C, - 0x7A,0x7C,0x7D,0x7C,0x7C,0x7D,0x7C,0x7C,0x7E,0x7E,0x7E,0x7F,0x80,0x7F,0x80,0x81, - 0x81,0x81,0x83,0x83,0x82,0x80,0x84,0x84,0x83,0x83,0x82,0x83,0x83,0x94,0x85,0x87, - 0x85,0x61,0x7D,0x7F,0x68,0x66,0x76,0x7E,0x85,0x8B,0x8A,0x8B,0x85,0x93,0xA1,0x9C, - 0x98,0x91,0x8D,0x8A,0x83,0x81,0x7C,0x70,0x66,0x5B,0x55,0x54,0x51,0x50,0x53,0x59, - 0x60,0x67,0x6B,0x71,0x75,0x77,0x7C,0x81,0x83,0x85,0x89,0x8C,0x8C,0x91,0x9E,0xA7, - 0xB0,0xB8,0xB8,0xB9,0xB6,0xAE,0xAA,0xA2,0x9A,0x96,0x8F,0x8A,0x86,0x81,0x7F,0x79, - 0x76,0x73,0x6F,0x6D,0x69,0x68,0x65,0x63,0x60,0x57,0x51,0x49,0x46,0x46,0x45,0x47, - 0x4D,0x54,0x5B,0x62,0x67,0x6C,0x72,0x75,0x7A,0x81,0x83,0x85,0x89,0x8D,0x8D,0x91, - 0x94,0x9B,0xA8,0xAE,0xB2,0xB7,0xB9,0xB7,0xB5,0xB3,0xAF,0xAC,0xA4,0x9F,0x9B,0x91, - 0x8E,0x89,0x86,0x83,0x7E,0x7D,0x78,0x6F,0x69,0x61,0x59,0x58,0x52,0x4E,0x51,0x50, - 0x52,0x55,0x5B,0x63,0x68,0x6D,0x70,0x76,0x7E,0x86,0x8A,0x8F,0x93,0x94,0x96,0x97, - 0x9D,0x9F,0x9C,0xA0,0xA3,0x9A,0x98,0xA1,0xA7,0xAA,0xA7,0xA0,0x98,0x92,0x8E,0x88, - 0x83,0x7A,0x7B,0x7A,0x77,0x7C,0x78,0x74,0x75,0x76,0x73,0x72,0x6F,0x6E,0x6B,0x65, - 0x65,0x62,0x5F,0x61,0x5F,0x5D,0x5B,0x5A,0x5F,0x5C,0x60,0x65,0x62,0x67,0x69,0x6E, - 0x75,0x76,0x79,0x7F,0x7F,0x85,0x8B,0x8D,0x93,0x9A,0x9E,0xA6,0xB0,0xB0,0xB5,0xBA, - 0xBB,0xC0,0xC0,0xBE,0xBC,0xBB,0xB6,0xB1,0xAC,0xA2,0x9D,0x96,0x8F,0x8B,0x84,0x7F, - 0x7B,0x74,0x70,0x6B,0x64,0x61,0x61,0x5E,0x58,0x54,0x52,0x4E,0x4C,0x4D,0x4A,0x4E, - 0x4E,0x49,0x4B,0x50,0x55,0x5A,0x61,0x65,0x6A,0x70,0x70,0x76,0x7C,0x7B,0x81,0x8A, - 0x91,0x94,0x96,0x9C,0xA3,0xAA,0xAC,0xB4,0xBC,0xBB,0xBE,0xC0,0xC0,0xC3,0xC2,0xBF, - 0xC1,0xBE,0xBD,0xBB,0xB5,0xB3,0xAE,0xA5,0xA0,0x9C,0x95,0x8B,0x83,0x7A,0x77,0x72, - 0x6A,0x67,0x5D,0x5F,0x64,0x57,0x56,0x54,0x4F,0x54,0x46,0x3C,0x44,0x44,0x42,0x43, - 0x45,0x4F,0x55,0x55,0x57,0x5C,0x60,0x60,0x5B,0x5D,0x68,0x68,0x67,0x6E,0x6F,0x82, - 0x92,0x8A,0x8F,0x96,0x95,0x9B,0x91,0x91,0x9F,0xA0,0xA2,0xA8,0xAA,0xB2,0xB5,0xAC, - 0xAD,0xB2,0xAD,0xAA,0xA4,0xA6,0xAE,0xA6,0xA3,0xA1,0x9E,0xAF,0xAD,0x9D,0xA4,0xA4, - 0x9A,0x92,0x83,0x88,0x8E,0x7C,0x7B,0x80,0x7D,0x80,0x75,0x67,0x6D,0x67,0x5A,0x5A, - 0x58,0x5A,0x58,0x52,0x54,0x54,0x58,0x62,0x5D,0x5B,0x62,0x60,0x5C,0x59,0x56,0x5E, - 0x5F,0x5A,0x62,0x67,0x6C,0x72,0x6A,0x70,0x7A,0x74,0x76,0x7E,0x81,0x87,0x88,0x8A, - 0x93,0x8F,0x9B,0xAC,0xA2,0xA8,0xAF,0xA9,0xAB,0x9F,0x9D,0xAF,0xA8,0xA2,0xAC,0xAC, - 0xB3,0xB0,0xA2,0xA7,0xA6,0x97,0x95,0x94,0x93,0x90,0x85,0x84,0x84,0x73,0x7D,0x8A, - 0x75,0x77,0x78,0x6E,0x6A,0x55,0x56,0x62,0x54,0x4F,0x59,0x59,0x5D,0x56,0x51,0x5F, - 0x5A,0x50,0x58,0x5E,0x60,0x61,0x61,0x68,0x69,0x60,0x77,0x86,0x77,0x80,0x85,0x85, - 0x85,0x72,0x7D,0x89,0x7C,0x80,0x8C,0x90,0x94,0x8C,0x8C,0x96,0x8C,0x85,0x8B,0x8C, - 0x8B,0x89,0x89,0x8D,0x89,0x80,0x96,0x9F,0x8F,0x98,0x9B,0x98,0x91,0x81,0x8E,0x94, - 0x84,0x89,0x95,0x96,0x93,0x8A,0x8B,0x8F,0x83,0x7C,0x82,0x82,0x81,0x81,0x82,0x84, - 0x7E,0x77,0x8B,0x93,0x80,0x89,0x8C,0x84,0x7B,0x6C,0x7B,0x7E,0x6C,0x73,0x7E,0x7F, - 0x7A,0x76,0x7A,0x7A,0x6B,0x69,0x6D,0x68,0x67,0x68,0x6B,0x69,0x64,0x62,0x77,0x76, - 0x64,0x71,0x74,0x69,0x5E,0x5A,0x6C,0x67,0x5B,0x6D,0x7A,0x77,0x78,0x7E,0x87,0x84, - 0x7B,0x83,0x87,0x84,0x84,0x8D,0x8F,0x8C,0x89,0x8B,0xA6,0x9A,0x8C,0xA2,0x9D,0x8F, - 0x84,0x88,0x93,0x84,0x82,0x95,0x9A,0x93,0x93,0x9B,0x9D,0x90,0x8E,0x95,0x8F,0x89, - 0x90,0x95,0x90,0x8F,0x89,0x98,0xA8,0x8C,0x93,0xA3,0x91,0x85,0x7E,0x86,0x81,0x6D, - 0x79,0x84,0x78,0x75,0x7C,0x7F,0x75,0x6C,0x71,0x6E,0x62,0x62,0x69,0x64,0x5E,0x5E, - 0x59,0x71,0x6F,0x5A,0x72,0x72,0x62,0x5F,0x60,0x6A,0x5B,0x54,0x6C,0x6B,0x63,0x6E, - 0x79,0x78,0x6F,0x70,0x79,0x6E,0x69,0x73,0x74,0x70,0x74,0x71,0x77,0x92,0x7F,0x7D, - 0x95,0x85,0x7D,0x7B,0x7F,0x82,0x70,0x78,0x88,0x7D,0x7D,0x8B,0x91,0x8D,0x89,0x91, - 0x91,0x85,0x8A,0x92,0x8D,0x8D,0x94,0x8B,0x9D,0xAD,0x94,0xA5,0xB1,0x9D,0x9B,0x98, - 0x9D,0x94,0x86,0x98,0x9C,0x90,0x97,0xA1,0xA0,0x95,0x96,0x9D,0x90,0x88,0x90,0x8E, - 0x88,0x8B,0x8B,0x84,0x9A,0x97,0x87,0x9D,0x99,0x89,0x86,0x85,0x85,0x76,0x73,0x82, - 0x7D,0x74,0x7E,0x84,0x7A,0x73,0x7A,0x77,0x6A,0x6B,0x6F,0x68,0x62,0x67,0x5F,0x62, - 0x76,0x63,0x69,0x78,0x66,0x63,0x63,0x62,0x5D,0x55,0x60,0x65,0x5F,0x63,0x6F,0x6F, - 0x65,0x6B,0x73,0x67,0x65,0x6E,0x6D,0x69,0x69,0x6F,0x68,0x78,0x81,0x73,0x87,0x86, - 0x78,0x7C,0x7A,0x78,0x72,0x71,0x7D,0x7C,0x78,0x82,0x89,0x83,0x81,0x88,0x87,0x7F, - 0x83,0x88,0x87,0x83,0x87,0x8A,0x84,0x9C,0x9B,0x90,0xA9,0xA0,0x94,0x99,0x96,0x94, - 0x8B,0x8F,0x9B,0x95,0x95,0xA3,0xA4,0x9B,0x9E,0xA4,0x9E,0x99,0x9F,0x9F,0x9C,0x99, - 0x9A,0x98,0x92,0xAC,0xA5,0x99,0xB3,0xA5,0x9A,0x9B,0x98,0x95,0x89,0x8E,0x97,0x8C, - 0x8B,0x96,0x94,0x89,0x8C,0x90,0x87,0x80,0x86,0x84,0x7D,0x7A,0x7B,0x77,0x6D,0x86, - 0x80,0x71,0x89,0x7D,0x6F,0x71,0x6E,0x6A,0x5F,0x63,0x6B,0x62,0x61,0x6C,0x6B,0x61, - 0x65,0x68,0x60,0x5A,0x60,0x61,0x59,0x5A,0x5C,0x58,0x51,0x69,0x69,0x58,0x73,0x6C, - 0x5C,0x62,0x65,0x60,0x57,0x5E,0x68,0x60,0x60,0x6E,0x6F,0x67,0x6E,0x73,0x6F,0x6B, - 0x72,0x76,0x6F,0x71,0x76,0x74,0x6C,0x85,0x8D,0x78,0x93,0x94,0x80,0x86,0x8B,0x86, - 0x7E,0x84,0x8E,0x89,0x85,0x95,0x97,0x8D,0x95,0x9B,0x94,0x90,0x99,0x9B,0x91,0x95, - 0x99,0x96,0x8E,0xA5,0xB0,0x9A,0xB2,0xB6,0xA0,0xA4,0xA9,0xA2,0x99,0x9D,0xA6,0x9F, - 0x98,0xA6,0xA6,0x9A,0xA1,0xA5,0x9C,0x98,0x9D,0x9C,0x91,0x93,0x94,0x8D,0x83,0x98, - 0xA1,0x87,0x9C,0xA0,0x86,0x88,0x8D,0x84,0x78,0x7C,0x84,0x7C,0x75,0x82,0x81,0x75, - 0x7C,0x7F,0x76,0x73,0x78,0x76,0x6D,0x70,0x70,0x6A,0x61,0x74,0x81,0x66,0x7A,0x85, - 0x6A,0x6B,0x74,0x6B,0x5F,0x63,0x6D,0x66,0x61,0x6E,0x6F,0x64,0x6A,0x70,0x64,0x62, - 0x67,0x65,0x5E,0x60,0x61,0x5C,0x52,0x61,0x71,0x57,0x6B,0x78,0x5D,0x60,0x6A,0x62, - 0x58,0x5E,0x67,0x62,0x5F,0x6D,0x6F,0x66,0x6F,0x75,0x6D,0x70,0x77,0x77,0x73,0x79, - 0x7A,0x77,0x71,0x81,0x91,0x79,0x8F,0x9C,0x81,0x89,0x92,0x88,0x80,0x87,0x8E,0x87, - 0x85,0x93,0x92,0x88,0x93,0x96,0x8D,0x90,0x94,0x93,0x8F,0x94,0x93,0x8F,0x88,0x95, - 0xA5,0x8D,0xA2,0xAD,0x90,0x98,0xA2,0x93,0x8D,0x96,0x97,0x91,0x8F,0x99,0x98,0x8D, - 0x98,0x9A,0x8F,0x93,0x96,0x90,0x8C,0x8F,0x8B,0x87,0x7F,0x8E,0x98,0x7F,0x97,0x9A, - 0x7C,0x89,0x8F,0x7B,0x79,0x83,0x7F,0x79,0x7C,0x84,0x7F,0x7A,0x87,0x84,0x7A,0x82, - 0x83,0x7B,0x7B,0x7E,0x78,0x75,0x71,0x82,0x86,0x72,0x8D,0x88,0x6E,0x7F,0x81,0x6C, - 0x6F,0x77,0x6F,0x6C,0x72,0x75,0x6D,0x6F,0x79,0x71,0x6C,0x75,0x72,0x6C,0x6F,0x6F, - 0x6B,0x69,0x68,0x7E,0x76,0x70,0x8F,0x7A,0x6D,0x85,0x78,0x69,0x76,0x77,0x70,0x73, - 0x7B,0x7B,0x74,0x7C,0x81,0x77,0x7C,0x81,0x7B,0x79,0x7C,0x78,0x76,0x72,0x76,0x8B, - 0x79,0x81,0x97,0x7A,0x7C,0x8E,0x79,0x73,0x82,0x79,0x74,0x7E,0x7F,0x7A,0x7C,0x83, - 0x80,0x7B,0x82,0x81,0x7B,0x7E,0x7E,0x79,0x7A,0x75,0x7F,0x8B,0x7A,0x8E,0x95,0x7A, - 0x86,0x8E,0x75,0x7B,0x86,0x76,0x79,0x84,0x7D,0x7C,0x83,0x84,0x81,0x83,0x87,0x82, - 0x81,0x83,0x7F,0x7E,0x7E,0x78,0x88,0x8B,0x80,0x98,0x93,0x80,0x92,0x8F,0x7A,0x88, - 0x89,0x79,0x84,0x89,0x7F,0x85,0x8A,0x87,0x87,0x8A,0x89,0x87,0x87,0x86,0x81,0x81, - 0x7E,0x7C,0x8A,0x86,0x83,0x95,0x8C,0x80,0x90,0x88,0x79,0x87,0x83,0x76,0x84,0x83, - 0x79,0x82,0x85,0x7F,0x85,0x86,0x84,0x86,0x85,0x83,0x80,0x7F,0x7E,0x7F,0x87,0x85, - 0x86,0x90,0x89,0x82,0x8D,0x85,0x7B,0x87,0x80,0x76,0x83,0x80,0x78,0x81,0x80,0x7B, - 0x81,0x81,0x7F,0x83,0x80,0x7E,0x7E,0x7C,0x7A,0x7B,0x80,0x81,0x83,0x8A,0x83,0x80, - 0x89,0x82,0x7B,0x86,0x80,0x78,0x84,0x80,0x7A,0x83,0x81,0x7F,0x85,0x83,0x84,0x86, - 0x83,0x85,0x84,0x7E,0x7F,0x80,0x83,0x84,0x84,0x8A,0x87,0x82,0x88,0x83,0x7D,0x84, - 0x7E,0x79,0x80,0x7B,0x79,0x80,0x7B,0x7B,0x81,0x7D,0x80,0x82,0x7E,0x7F,0x7E,0x7A, - 0x79,0x79,0x7D,0x7F,0x7E,0x84,0x81,0x7D,0x83,0x7D,0x79,0x80,0x79,0x76,0x7D,0x76, - 0x77,0x7E,0x78,0x7B,0x81,0x7D,0x81,0x83,0x81,0x83,0x80,0x7D,0x7E,0x7C,0x82,0x83, - 0x81,0x88,0x85,0x81,0x87,0x80,0x7D,0x83,0x7A,0x79,0x80,0x77,0x79,0x7F,0x78,0x7B, - 0x80,0x7C,0x80,0x82,0x7F,0x81,0x7F,0x7C,0x7E,0x7B,0x80,0x83,0x81,0x87,0x85,0x81, - 0x87,0x81,0x7E,0x84,0x7B,0x7A,0x80,0x78,0x79,0x7F,0x78,0x7C,0x80,0x7D,0x81,0x82, - 0x7F,0x82,0x7F,0x7C,0x7D,0x7B,0x7F,0x82,0x80,0x86,0x85,0x81,0x85,0x80,0x7D,0x82, - 0x7A,0x79,0x7F,0x77,0x79,0x7F,0x79,0x7C,0x81,0x7E,0x83,0x84,0x81,0x84,0x81,0x7D, - 0x80,0x7D,0x81,0x85,0x82,0x88,0x88,0x83,0x87,0x83,0x7F,0x84,0x7D,0x7B,0x80,0x79, - 0x79,0x7F,0x7A,0x7B,0x80,0x7E,0x81,0x83,0x81,0x84,0x82,0x7F,0x80,0x7E,0x82,0x87, - 0x83,0x88,0x89,0x85,0x88,0x85,0x82,0x86,0x80,0x7D,0x82,0x7A,0x7A,0x80,0x7A,0x7B, - 0x81,0x7E,0x80,0x82,0x7F,0x82,0x80,0x7C,0x7E,0x7B,0x7F,0x83,0x80,0x84,0x86,0x81, - 0x85,0x82,0x7E,0x83,0x7E,0x7A,0x7E,0x79,0x78,0x7E,0x79,0x7A,0x81,0x7E,0x80,0x83, - 0x81,0x83,0x82,0x7E,0x80,0x7E,0x80,0x84,0x80,0x84,0x87,0x82,0x85,0x84,0x7F,0x83, - 0x80,0x7B,0x7E,0x7A,0x78,0x7F,0x7B,0x7B,0x82,0x80,0x81,0x85,0x83,0x84,0x84,0x81, - 0x82,0x80,0x82,0x86,0x83,0x85,0x89,0x84,0x85,0x86,0x81,0x83,0x82,0x7C,0x7D,0x7B, - 0x77,0x7B,0x78,0x77,0x7D,0x7B,0x7B,0x81,0x7F,0x80,0x82,0x7E,0x7F,0x7F,0x80,0x84, - 0x82,0x83,0x88,0x84,0x84,0x87,0x82,0x83,0x85,0x7F,0x7E,0x7F,0x7A,0x7C,0x7C,0x79, - 0x7E,0x7E,0x7C,0x81,0x81,0x7F,0x81,0x7F,0x7E,0x7E,0x7E,0x82,0x80,0x80,0x83,0x81, - 0x80,0x84,0x80,0x7F,0x83,0x7E,0x7C,0x7F,0x7B,0x7B,0x7E,0x7C,0x7F,0x81,0x80,0x83, - 0x85,0x83,0x85,0x85,0x83,0x83,0x83,0x86,0x86,0x83,0x85,0x84,0x82,0x84,0x83,0x81, - 0x83,0x81,0x7D,0x7E,0x7C,0x79,0x7B,0x7B,0x79,0x7C,0x7C,0x7C,0x7F,0x7F,0x7F,0x80, - 0x7F,0x80,0x81,0x81,0x83,0x83,0x82,0x83,0x82,0x81,0x82,0x82,0x81,0x82,0x80,0x7D, - 0x7D,0x7A,0x79,0x7C,0x7A,0x79,0x7D,0x7C,0x7C,0x7F,0x7F,0x7E,0x82,0x80,0x81,0x85, - 0x8F,0x87,0x69,0x77,0x8D,0x8E,0x78,0x88,0x97,0x6F,0x79,0x87,0x7F,0x81,0x87,0x90, - 0x7C,0x7A,0x88,0x88,0x7A,0x79,0x8B,0x82,0x76,0x77,0x7D,0x82,0x86,0x85,0x8A,0x82, - 0x73,0x81,0x80,0x83,0x8B,0x8C,0x8E,0x7E,0x7D,0x76,0x72,0x7F,0x7E,0x84,0x78,0x74, - 0x80,0x6D,0x79,0x93,0x7A,0x76,0x88,0x7B,0x7D,0x75,0x78,0x89,0x7B,0x7B,0x81,0x7B, - 0x7A,0x7B,0x80,0x7E,0x76,0x7C,0x85,0x81,0x7A,0x76,0x7A,0x83,0x84,0x86,0x82,0x7F, - 0x7F,0x7F,0x7E,0x76,0x80,0x91,0x90,0x8F,0x95,0x88,0x87,0x99,0x9F,0x9E,0x9D,0x9E, - 0x9F,0xA0,0xA0,0x9A,0x89,0x83,0x8E,0x92,0x92,0x95,0x87,0x79,0x78,0x72,0x6E,0x66, - 0x64,0x73,0x79,0x78,0x73,0x69,0x6B,0x71,0x72,0x72,0x66,0x63,0x6B,0x69,0x6A,0x68, - 0x63,0x66,0x68,0x69,0x69,0x65,0x67,0x70,0x6F,0x67,0x63,0x6A,0x79,0x7B,0x6E,0x70, - 0x70,0x6C,0x72,0x73,0x74,0x77,0x74,0x75,0x78,0x80,0x88,0x8E,0x97,0xA7,0xB6,0xB4, - 0xA8,0xA3,0xA2,0x9E,0x9C,0x9C,0x96,0x8F,0x93,0x90,0x8B,0x8D,0x8D,0x8C,0x8A,0x8E, - 0x90,0x8B,0x8D,0x8F,0x90,0x8C,0x86,0x85,0x89,0x8A,0x87,0x84,0x81,0x81,0x84,0x8C, - 0x8A,0x85,0x83,0x7F,0x81,0x82,0x81,0x7C,0x7D,0x84,0x82,0x7D,0x7C,0x7B,0x79,0x7A, - 0x7F,0x80,0x87,0x91,0x8F,0x8A,0x86,0x82,0x8B,0x8F,0x8F,0x97,0x97,0x94,0x90,0x90, - 0x96,0x92,0x8E,0x8D,0x86,0x83,0x83,0x7E,0x74,0x73,0x6E,0x6A,0x6C,0x68,0x68,0x6D, - 0x6A,0x66,0x63,0x61,0x65,0x5C,0x5D,0x64,0x62,0x61,0x5D,0x5D,0x59,0x58,0x5E,0x5E, - 0x5F,0x63,0x67,0x65,0x64,0x6A,0x6D,0x6D,0x6B,0x69,0x6C,0x6A,0x69,0x6B,0x6E,0x71, - 0x6F,0x6D,0x70,0x73,0x74,0x75,0x7E,0x92,0x95,0x95,0xA5,0xB0,0xB2,0xAE,0xAB,0x9F, - 0x9D,0x9F,0x96,0x95,0x9A,0x9C,0x98,0x9C,0x9A,0x9A,0xA0,0x9D,0x96,0x8D,0x88,0x88, - 0x8A,0x86,0x81,0x88,0x9C,0x9C,0x8F,0x8D,0x8B,0x89,0x8C,0x7C,0x6B,0x74,0x7C,0x7B, - 0x81,0x82,0x84,0x93,0x90,0x88,0x87,0x7F,0x7D,0x7F,0x7D,0x78,0x7E,0x81,0x7F,0x8A, - 0x9A,0x9E,0x99,0x9B,0x99,0x94,0x94,0x8E,0x83,0x89,0x8B,0x8E,0x96,0x95,0x96,0x94, - 0x90,0x88,0x82,0x79,0x73,0x7A,0x76,0x75,0x73,0x6D,0x68,0x6F,0x82,0x7B,0x71,0x6F, - 0x64,0x60,0x5F,0x53,0x4F,0x56,0x59,0x59,0x5F,0x55,0x52,0x5C,0x55,0x59,0x5A,0x59, - 0x61,0x6B,0x6B,0x62,0x5F,0x5C,0x64,0x72,0x7B,0x75,0x70,0x6E,0x69,0x67,0x67,0x62, - 0x65,0x72,0x78,0x85,0x8A,0x8B,0x8E,0x93,0x99,0xA0,0xA3,0xA1,0xAC,0xAF,0xAC,0xA1, - 0x97,0x99,0x9F,0xAE,0xB8,0xAA,0x9D,0x97,0x89,0x87,0x85,0x7F,0x83,0x8E,0x8D,0x8F, - 0x91,0x88,0x86,0x7E,0x7F,0x87,0x87,0x89,0x90,0x8F,0x8B,0x84,0x7D,0x7E,0x83,0x98, - 0xA0,0x9A,0x92,0x82,0x7A,0x7E,0x7C,0x78,0x84,0x86,0x88,0x94,0x94,0x89,0x85,0x85, - 0x88,0x91,0x91,0x95,0x97,0x9A,0x98,0x8C,0x8C,0x8A,0x8C,0x9C,0xA8,0x9C,0x90,0x82, - 0x75,0x7A,0x77,0x7A,0x7F,0x7B,0x7A,0x7F,0x77,0x69,0x64,0x5D,0x5D,0x64,0x63,0x60, - 0x63,0x60,0x5B,0x56,0x51,0x4C,0x58,0x6A,0x69,0x60,0x56,0x4E,0x4C,0x56,0x5A,0x63, - 0x68,0x67,0x6E,0x6D,0x65,0x5F,0x61,0x60,0x6C,0x74,0x75,0x75,0x77,0x77,0x77,0x7B, - 0x76,0x7C,0x90,0xA0,0xA6,0xA4,0x9A,0x95,0x9E,0xA2,0xA8,0xAE,0xAA,0xA7,0xAA,0xA6, - 0x9D,0x97,0x94,0x94,0x9C,0x9C,0x95,0x90,0x88,0x83,0x82,0x84,0x7E,0x82,0x94,0x97, - 0x96,0x8B,0x7D,0x72,0x76,0x7D,0x86,0x8A,0x87,0x88,0x87,0x89,0x84,0x7E,0x7C,0x83, - 0x8A,0x8C,0x8C,0x84,0x80,0x81,0x83,0x85,0x82,0x8D,0x9A,0x9D,0x9B,0x8F,0x80,0x81, - 0x89,0x94,0x9D,0x9A,0x94,0x93,0x95,0x91,0x8B,0x82,0x85,0x8C,0x8E,0x8F,0x8B,0x82, - 0x7A,0x78,0x7C,0x75,0x74,0x82,0x88,0x84,0x7B,0x68,0x56,0x5C,0x64,0x6A,0x6D,0x63, - 0x60,0x5C,0x5C,0x5D,0x55,0x52,0x55,0x5F,0x63,0x67,0x64,0x5C,0x5A,0x5F,0x62,0x5D, - 0x65,0x75,0x7B,0x7A,0x75,0x61,0x56,0x5E,0x6B,0x76,0x79,0x76,0x79,0x7A,0x7F,0x80, - 0x7E,0x84,0x8D,0x9B,0xA3,0xA7,0xA4,0x9E,0x9D,0xA2,0xA2,0x9D,0xA7,0xB0,0xAF,0xAA, - 0x9C,0x86,0x7F,0x83,0x8D,0x95,0x92,0x8C,0x87,0x84,0x82,0x83,0x7C,0x7C,0x84,0x85, - 0x8B,0x8A,0x82,0x7D,0x7D,0x80,0x7D,0x82,0x91,0x98,0x96,0x91,0x81,0x71,0x71,0x7E, - 0x88,0x91,0x93,0x89,0x86,0x88,0x88,0x87,0x8A,0x89,0x8F,0x95,0x99,0x93,0x8D,0x8D, - 0x88,0x8D,0x8B,0x93,0xA0,0xA2,0x9F,0x94,0x81,0x75,0x7A,0x85,0x8D,0x8B,0x8A,0x7F, - 0x7B,0x76,0x6F,0x6F,0x6A,0x6A,0x6C,0x70,0x6E,0x67,0x5D,0x5B,0x59,0x55,0x58,0x63, - 0x6C,0x6D,0x66,0x57,0x4A,0x46,0x4E,0x5C,0x63,0x65,0x66,0x60,0x60,0x62,0x62,0x62, - 0x60,0x67,0x6B,0x71,0x71,0x6C,0x6C,0x6B,0x72,0x6F,0x79,0x8C,0x92,0x98,0x91,0x88, - 0x81,0x85,0x95,0xA2,0xA9,0xAB,0xA5,0xA4,0xA6,0xA0,0xA0,0x9C,0x9A,0x9A,0x9E,0x9D, - 0x96,0x90,0x86,0x80,0x7F,0x80,0x88,0x95,0x9A,0x95,0x87,0x77,0x6F,0x71,0x7D,0x86, - 0x86,0x82,0x7D,0x79,0x7F,0x7F,0x7F,0x7D,0x7E,0x84,0x85,0x8A,0x86,0x80,0x80,0x83, - 0x83,0x85,0x93,0x9B,0x9D,0x98,0x8A,0x7E,0x7C,0x83,0x91,0x98,0x9A,0x94,0x8D,0x90, - 0x92,0x90,0x8F,0x8D,0x8A,0x8B,0x8D,0x8A,0x88,0x82,0x7A,0x7C,0x79,0x79,0x88,0x8C, - 0x88,0x7F,0x6C,0x5E,0x5B,0x64,0x6B,0x6C,0x69,0x61,0x59,0x5A,0x5D,0x5B,0x57,0x57, - 0x59,0x5B,0x60,0x5F,0x5D,0x57,0x56,0x58,0x55,0x65,0x77,0x7D,0x79,0x6F,0x5E,0x55, - 0x5A,0x66,0x70,0x77,0x78,0x71,0x71,0x76,0x7B,0x7F,0x83,0x82,0x89,0x95,0x96,0x98, - 0x9A,0x97,0x9D,0xA0,0x9F,0xAB,0xB6,0xB9,0xB5,0xA4,0x91,0x88,0x8C,0x94,0x9D,0x9A, - 0x94,0x8B,0x85,0x86,0x86,0x84,0x82,0x7F,0x81,0x86,0x82,0x80,0x7C,0x77,0x79,0x75, - 0x78,0x89,0x91,0x91,0x8E,0x80,0x75,0x71,0x78,0x85,0x8C,0x8C,0x87,0x85,0x85,0x86, - 0x8A,0x8B,0x8C,0x8D,0x91,0x98,0x98,0x97,0x91,0x8B,0x8E,0x8C,0x95,0xA6,0xA8,0xA6, - 0x9E,0x8D,0x7D,0x7A,0x82,0x8C,0x91,0x8E,0x88,0x80,0x7C,0x7C,0x78,0x74,0x72,0x6D, - 0x71,0x73,0x6F,0x69,0x61,0x5C,0x56,0x59,0x63,0x70,0x73,0x6F,0x65,0x51,0x47,0x4B, - 0x54,0x5F,0x67,0x66,0x61,0x5C,0x60,0x65,0x66,0x66,0x65,0x67,0x6E,0x74,0x74,0x72, - 0x6F,0x6F,0x6E,0x76,0x88,0x96,0x9B,0x98,0x8D,0x7D,0x78,0x80,0x8E,0x9A,0xA3,0xA1, - 0x9B,0x99,0x9B,0x9E,0x9C,0x9B,0x9B,0x9B,0xA1,0xA4,0x9E,0x98,0x90,0x8C,0x89,0x8D, - 0x9B,0xA3,0xA1,0x99,0x88,0x76,0x71,0x77,0x80,0x8B,0x8D,0x85,0x7D,0x7A,0x7C,0x7E, - 0x7D,0x7E,0x7E,0x7E,0x84,0x82,0x81,0x7E,0x79,0x79,0x77,0x80,0x91,0x9D,0x9E,0x97, - 0x86,0x78,0x75,0x7B,0x8A,0x95,0x95,0x8F,0x88,0x88,0x89,0x89,0x8A,0x87,0x84,0x86, - 0x89,0x88,0x86,0x81,0x7B,0x7A,0x75,0x7D,0x8E,0x95,0x92,0x88,0x76,0x69,0x65,0x6E, - 0x7C,0x82,0x81,0x76,0x70,0x70,0x72,0x75,0x73,0x71,0x6F,0x70,0x76,0x77,0x75,0x6F, - 0x6A,0x69,0x67,0x70,0x83,0x8B,0x8B,0x82,0x71,0x64,0x64,0x6E,0x79,0x82,0x80,0x7A, - 0x77,0x79,0x7F,0x82,0x81,0x7E,0x7C,0x80,0x88,0x8C,0x8D,0x88,0x84,0x82,0x7E,0x86, - 0x98,0x9F,0xA1,0x99,0x89,0x7B,0x77,0x7D,0x86,0x8D,0x89,0x84,0x82,0x7D,0x80,0x81, - 0x7E,0x7C,0x79,0x7A,0x7F,0x80,0x7F,0x79,0x74,0x72,0x6D,0x76,0x88,0x92,0x92,0x8A, - 0x7A,0x6C,0x6B,0x71,0x7D,0x85,0x85,0x82,0x7F,0x7C,0x80,0x83,0x80,0x80,0x7F,0x80, - 0x87,0x8B,0x89,0x85,0x7E,0x7C,0x79,0x7F,0x92,0x9A,0x9B,0x95,0x84,0x75,0x72,0x76, - 0x82,0x88,0x8A,0x85,0x7E,0x80,0x82,0x82,0x80,0x7D,0x78,0x7A,0x7F,0x82,0x82,0x7D, - 0x78,0x74,0x71,0x75,0x85,0x8F,0x91,0x8B,0x7A,0x6D,0x69,0x6A,0x74,0x7D,0x7E,0x7C, - 0x75,0x75,0x7A,0x7C,0x7F,0x7A,0x74,0x79,0x7C,0x81,0x86,0x81,0x7C,0x78,0x75,0x77, - 0x86,0x94,0x99,0x98,0x8B,0x7D,0x75,0x75,0x7F,0x89,0x8C,0x8C,0x86,0x82,0x87,0x8A, - 0x8B,0x86,0x7E,0x7D,0x81,0x86,0x8A,0x86,0x7F,0x7A,0x74,0x74,0x7F,0x8C,0x94,0x94, - 0x88,0x79,0x6E,0x6D,0x73,0x7C,0x83,0x7E,0x7B,0x79,0x7C,0x82,0x82,0x7F,0x77,0x75, - 0x78,0x7D,0x83,0x82,0x80,0x78,0x74,0x72,0x79,0x89,0x95,0x97,0x8F,0x80,0x71,0x6E, - 0x73,0x7C,0x84,0x83,0x7F,0x7C,0x7C,0x84,0x88,0x85,0x7F,0x7A,0x79,0x7E,0x84,0x86, - 0x84,0x7F,0x79,0x75,0x76,0x84,0x92,0x95,0x93,0x88,0x78,0x70,0x72,0x78,0x82,0x83, - 0x7F,0x7B,0x78,0x7C,0x82,0x83,0x81,0x7B,0x76,0x77,0x7E,0x82,0x82,0x7F,0x79,0x74, - 0x70,0x7B,0x8A,0x90,0x94,0x8C,0x7E,0x73,0x70,0x76,0x7D,0x84,0x85,0x7E,0x7C,0x7B, - 0x81,0x88,0x88,0x86,0x7E,0x7E,0x7E,0x82,0x86,0x87,0x83,0x7E,0x78,0x76,0x85,0x90, - 0x93,0x96,0x88,0x7A,0x75,0x70,0x7B,0x7F,0x82,0x82,0x76,0x76,0x79,0x7E,0x86,0x85, - 0x7F,0x7A,0x75,0x78,0x7F,0x82,0x84,0x7E,0x79,0x74,0x78,0x88,0x90,0x93,0x91,0x83, - 0x78,0x73,0x76,0x7F,0x84,0x85,0x7F,0x7A,0x7C,0x7E,0x85,0x88,0x88,0x85,0x7C,0x7A, - 0x7C,0x7F,0x83,0x85,0x81,0x7D,0x78,0x7E,0x89,0x8C,0x92,0x8D,0x82,0x7B,0x75,0x79, - 0x7E,0x80,0x81,0x7D,0x7C,0x79,0x7B,0x83,0x84,0x87,0x84,0x7E,0x7D,0x7A,0x7B,0x7E, - 0x80,0x7F,0x79,0x77,0x80,0x85,0x8D,0x8F,0x86,0x81,0x78,0x73,0x77,0x7C,0x7F,0x7F, - 0x7D,0x7C,0x7A,0x7F,0x84,0x86,0x89,0x85,0x80,0x7F,0x7E,0x80,0x81,0x82,0x80,0x7C, - 0x7F,0x86,0x8A,0x93,0x8E,0x87,0x84,0x7A,0x79,0x7C,0x7F,0x82,0x80,0x7E,0x7C,0x7E, - 0x81,0x81,0x86,0x88,0x83,0x80,0x7C,0x7C,0x7D,0x7F,0x80,0x7B,0x79,0x7F,0x84,0x8B, - 0x8F,0x88,0x85,0x7E,0x76,0x76,0x7A,0x7D,0x7F,0x7D,0x7B,0x7C,0x7D,0x7F,0x82,0x86, - 0x85,0x84,0x82,0x7F,0x7F,0x7F,0x80,0x7F,0x7A,0x7C,0x84,0x87,0x8E,0x8F,0x88,0x87, - 0x7F,0x7B,0x7D,0x7C,0x7E,0x7F,0x7E,0x7D,0x7F,0x80,0x81,0x83,0x85,0x85,0x85,0x80, - 0x7F,0x7F,0x7E,0x7F,0x7B,0x7A,0x7F,0x84,0x87,0x8D,0x88,0x85,0x85,0x7D,0x7B,0x7C, - 0x7A,0x7D,0x7D,0x7B,0x7C,0x80,0x80,0x80,0x83,0x85,0x85,0x84,0x80,0x7E,0x7D,0x7E, - 0x7F,0x7C,0x7C,0x83,0x86,0x8A,0x8D,0x86,0x86,0x85,0x7D,0x7D,0x7D,0x7B,0x7F,0x7C, - 0x7B,0x7F,0x7E,0x80,0x82,0x83,0x85,0x85,0x84,0x82,0x7F,0x7D,0x7C,0x7D,0x7B,0x7C, - 0x83,0x83,0x88,0x88,0x81,0x85,0x80,0x7C,0x7E,0x7B,0x7B,0x7E,0x7D,0x7B,0x7D,0x7D, - 0x7D,0x7E,0x81,0x82,0x83,0x83,0x82,0x7E,0x7C,0x7F,0x7D,0x7A,0x7E,0x82,0x81,0x86, - 0x86,0x81,0x85,0x80,0x7C,0x7F,0x7B,0x7C,0x7F,0x7C,0x7D,0x7E,0x7D,0x7F,0x80,0x81, - 0x84,0x84,0x84,0x83,0x81,0x81,0x82,0x81,0x7F,0x82,0x81,0x83,0x8B,0x84,0x80,0x83, - 0x7D,0x7D,0x7D,0x7C,0x7F,0x7D,0x7B,0x7F,0x7D,0x7A,0x7C,0x7C,0x7E,0x7C,0x8E,0x8A, - 0x7C,0x87,0x68,0x71,0x82,0x6E,0x6A,0x74,0x82,0x8A,0x8A,0x8B,0x8E,0x85,0x8C,0x9D, - 0x9A,0xA1,0xA5,0x91,0x8C,0x76,0x77,0x91,0x76,0x65,0x72,0x71,0x5B,0x5B,0x57,0x52, - 0x6B,0x63,0x62,0x59,0x5D,0x73,0x70,0x6D,0x79,0x79,0x82,0xA5,0x8B,0x8D,0x98,0x9B, - 0xAC,0x81,0xB8,0xBC,0x95,0xB4,0x96,0x9E,0xB1,0xA4,0x95,0x8D,0x95,0x9C,0x7D,0x70, - 0x76,0x5F,0x78,0x78,0x6F,0x8B,0x79,0x6B,0x77,0x77,0x7D,0x6E,0x4C,0x4B,0x56,0x62, - 0x64,0x62,0x5D,0x54,0x5A,0x6F,0x6E,0x6D,0x7E,0x80,0x95,0xA6,0x9C,0x8F,0x9B,0x9D, - 0x92,0x97,0xA4,0xB2,0xAD,0x9A,0xA3,0xA9,0xA2,0xA4,0x96,0x92,0x8E,0x8C,0x82,0x76, - 0x7F,0x76,0x76,0x74,0x72,0x7B,0x73,0x67,0x50,0x43,0x52,0x5E,0x43,0x30,0x41,0x3D, - 0x32,0x38,0x4B,0x5D,0x54,0x59,0x68,0x69,0x75,0x96,0xA7,0xA0,0x92,0x8E,0x9F,0x9B, - 0x92,0x96,0x94,0x9F,0x9E,0xA2,0xB9,0xB2,0xA9,0xB6,0xAD,0xA5,0xA6,0x88,0x8E,0x96, - 0x83,0x94,0x92,0x81,0x7E,0x71,0x6B,0x7F,0x87,0x7F,0x7F,0x6F,0x7E,0x82,0x6E,0x70, - 0x71,0x7F,0x81,0x74,0x6D,0x63,0x6A,0x6C,0x65,0x63,0x5F,0x72,0x80,0x76,0x82,0x81, - 0x7B,0x89,0x78,0x83,0x93,0x91,0x99,0x95,0x9E,0xA3,0xAF,0xBB,0xAD,0xB7,0xC1,0xB6, - 0xBD,0xBA,0xB2,0xB2,0xAE,0xAD,0xA5,0x99,0x89,0x78,0x74,0x6E,0x78,0x69,0x5D,0x75, - 0x75,0x6C,0x5C,0x49,0x44,0x46,0x4B,0x51,0x45,0x39,0x36,0x37,0x31,0x2C,0x39,0x39, - 0x3A,0x3C,0x3A,0x3D,0x46,0x50,0x4E,0x67,0x86,0x90,0x89,0x73,0x78,0x88,0x8A,0x99, - 0x9B,0x9A,0xA6,0x95,0x87,0x8B,0x90,0x96,0xA6,0xBC,0xB8,0xBC,0xC6,0xD0,0xD7,0xD1, - 0xD6,0xD8,0xD6,0xD7,0xCB,0xBC,0xAE,0xA0,0xA5,0xB3,0xB3,0xA4,0x8A,0x77,0x73,0x75, - 0x78,0x6E,0x69,0x64,0x72,0x6D,0x5C,0x57,0x47,0x58,0x54,0x55,0x5E,0x4E,0x55,0x5D, - 0x5E,0x54,0x52,0x5E,0x64,0x6F,0x7E,0x6E,0x6B,0x7B,0x6B,0x72,0x7B,0x78,0x7F,0x83, - 0x8F,0x94,0x97,0x95,0x98,0x93,0x94,0x96,0x91,0x95,0x9B,0x9F,0x9C,0xA4,0x9E,0x98, - 0xA5,0xA4,0x9B,0x8D,0x82,0x80,0x81,0x7D,0x80,0x7E,0x71,0x7B,0x7B,0x79,0x77,0x6F, - 0x66,0x51,0x50,0x56,0x61,0x74,0x6F,0x6F,0x7A,0x81,0x84,0x86,0x7F,0x6E,0x63,0x5B, - 0x66,0x77,0x81,0x74,0x5D,0x60,0x6E,0x80,0x82,0x70,0x71,0x79,0x79,0x79,0x82,0x8D, - 0x81,0x7D,0x78,0x78,0x91,0x90,0x8E,0x82,0x73,0x7F,0x87,0x91,0x99,0x91,0x89,0x7D, - 0x7E,0x93,0xA2,0xB5,0xB3,0xA0,0xA3,0xB1,0xB0,0xAD,0xAD,0x9F,0xB3,0xC5,0xBF,0xC5, - 0xB1,0xA5,0xAA,0xAF,0xB3,0xA5,0x9F,0xA4,0xA2,0x9A,0x8D,0x8E,0x95,0x92,0x92,0x84, - 0x77,0x65,0x55,0x55,0x53,0x5C,0x60,0x61,0x6D,0x75,0x69,0x5D,0x59,0x4D,0x57,0x5D, - 0x59,0x58,0x53,0x4C,0x42,0x41,0x38,0x35,0x46,0x49,0x4F,0x4D,0x41,0x42,0x3B,0x44, - 0x58,0x5F,0x65,0x6D,0x7D,0x83,0x7F,0x7D,0x7B,0x8D,0xA0,0xA6,0xA8,0x9E,0x94,0x92, - 0x8F,0x95,0x89,0x89,0xA1,0x95,0x92,0x89,0x76,0x8A,0x92,0x91,0x9F,0x9B,0x9A,0xAB, - 0xA5,0x93,0x95,0x93,0x9C,0xB9,0xB9,0xA6,0x9F,0x97,0xA2,0xAD,0xAB,0xA8,0x8F,0x91, - 0xA4,0x9B,0x90,0x81,0x7A,0x85,0x91,0x9A,0x99,0x91,0x85,0x86,0x86,0x7F,0x7C,0x81, - 0x8B,0x87,0x7C,0x71,0x66,0x74,0x8F,0x8A,0x80,0x65,0x65,0x7E,0x79,0x6E,0x47,0x30, - 0x41,0x5A,0x68,0x62,0x5C,0x5A,0x5A,0x5D,0x5F,0x59,0x5C,0x68,0x79,0x75,0x67,0x6A, - 0x70,0x72,0x71,0x78,0x79,0x73,0x74,0x7A,0x70,0x5F,0x5A,0x58,0x60,0x6C,0x6E,0x63, - 0x6B,0x77,0x75,0x7B,0x80,0x91,0xA2,0xAB,0xAE,0xA9,0x9D,0x9A,0xA1,0xA6,0xA6,0xA0, - 0x93,0x8A,0x99,0xB2,0xAE,0x9F,0x92,0x84,0x8B,0x93,0x8E,0x86,0x88,0x8D,0x8C,0x7E, - 0x76,0x79,0x86,0x93,0x8A,0x7D,0x80,0x8A,0x8F,0x8F,0x86,0x78,0x7C,0x7D,0x70,0x72, - 0x70,0x6D,0x6E,0x6E,0x6F,0x75,0x71,0x75,0x81,0x79,0x7E,0x77,0x61,0x6F,0x7D,0x86, - 0x8D,0x82,0x82,0x86,0x87,0x8F,0x8B,0x7C,0x7B,0x79,0x72,0x7F,0x85,0x74,0x65,0x5F, - 0x68,0x77,0x77,0x7D,0x7F,0x76,0x6A,0x5B,0x59,0x6A,0x81,0x88,0x7C,0x75,0x74,0x70, - 0x79,0x80,0x7C,0x77,0x72,0x79,0x72,0x61,0x6C,0x6A,0x62,0x6E,0x6B,0x75,0x7C,0x78, - 0x8A,0x8D,0x8D,0x90,0x8A,0x93,0xA3,0xAC,0xA7,0xA0,0xA6,0xA4,0xA1,0xA5,0xA4,0xA5, - 0x9E,0x94,0x87,0x83,0x93,0x91,0x80,0x79,0x74,0x80,0x8B,0x8C,0x94,0x95,0x90,0x89, - 0x7B,0x7A,0x88,0x91,0x8F,0x80,0x7D,0x7E,0x74,0x75,0x7C,0x86,0x85,0x7A,0x72,0x6B, - 0x74,0x7F,0x7A,0x6D,0x65,0x67,0x73,0x77,0x7E,0x80,0x7A,0x7A,0x79,0x7D,0x84,0x86, - 0x83,0x80,0x7C,0x7C,0x78,0x6C,0x70,0x7B,0x80,0x77,0x72,0x6D,0x7A,0x91,0x87,0x73, - 0x61,0x65,0x72,0x72,0x7B,0x7E,0x7F,0x78,0x6F,0x69,0x68,0x70,0x6E,0x6D,0x6A,0x64, - 0x64,0x5B,0x5F,0x71,0x76,0x6F,0x69,0x66,0x6B,0x83,0x86,0x73,0x6F,0x6E,0x7A,0x8F, - 0x8B,0x90,0x97,0x98,0x9E,0x9B,0xA0,0xAA,0xB1,0xB2,0xB3,0xAE,0xA2,0xA2,0xA2,0xA8, - 0xAA,0xA2,0x9A,0x95,0x99,0xAF,0xB4,0x9C,0x94,0x90,0x91,0x99,0x97,0x9B,0xA0,0x9A, - 0x8C,0x7E,0x85,0x94,0x96,0x97,0x94,0x8D,0x88,0x85,0x88,0x8B,0x89,0x82,0x75,0x79, - 0x7B,0x86,0x90,0x80,0x80,0x74,0x74,0x88,0x81,0x83,0x86,0x81,0x75,0x66,0x69,0x6D, - 0x76,0x7A,0x77,0x72,0x69,0x69,0x64,0x6D,0x74,0x68,0x69,0x67,0x5E,0x6A,0x76,0x68, - 0x64,0x5D,0x60,0x6B,0x45,0x49,0x6F,0x77,0x5F,0x45,0x58,0x4E,0x4C,0x61,0x5B,0x52, - 0x52,0x5F,0x53,0x53,0x69,0x6C,0x5F,0x59,0x68,0x62,0x6B,0x72,0x6A,0x74,0x71,0x70, - 0x81,0x81,0x82,0x8F,0x8D,0x8C,0x88,0x90,0xAC,0xB0,0xB0,0xAC,0xAB,0xAB,0xAB,0xB5, - 0xAF,0xB1,0xB1,0xA9,0xAD,0xA1,0xA8,0xBE,0xAC,0x9D,0xA2,0x9E,0x9A,0x98,0x97,0xA1, - 0xA9,0x98,0x8A,0x8B,0x97,0xA1,0x9B,0xA1,0x9F,0xA2,0xA5,0x94,0x9A,0xA9,0xA8,0xA0, - 0x9B,0x9A,0x93,0xA1,0xAF,0xA4,0x99,0x90,0x90,0x8F,0x92,0x96,0x98,0x97,0x89,0x7F, - 0x73,0x7C,0x8A,0x7F,0x7D,0x7F,0x79,0x71,0x73,0x7C,0x7B,0x7A,0x6E,0x64,0x60,0x62, - 0x78,0x73,0x61,0x5D,0x54,0x5E,0x5C,0x50,0x5C,0x60,0x58,0x49,0x35,0x36,0x42,0x49, - 0x4C,0x4C,0x4A,0x36,0x25,0x31,0x3F,0x43,0x42,0x36,0x34,0x38,0x41,0x60,0x63,0x55, - 0x55,0x58,0x68,0x6F,0x72,0x80,0x87,0x85,0x7F,0x79,0x82,0x93,0x97,0x97,0x97,0x93, - 0x8B,0x8C,0x97,0xA1,0xA2,0x97,0x8A,0x8C,0x8D,0x8E,0xA6,0xA0,0x8E,0x8C,0x8B,0x90, - 0x8F,0x90,0x9F,0xAA,0xA1,0x91,0x8A,0x8E,0x9C,0xA6,0xA7,0xAA,0xA2,0x9D,0x9F,0xA0, - 0xAE,0xAD,0xA3,0x9F,0x9C,0xA5,0xA4,0xB4,0xBF,0xA8,0xA4,0xA0,0x9B,0xA5,0xA4,0xAC, - 0xB4,0xA3,0x92,0x87,0x89,0x96,0x98,0x98,0x92,0x90,0x89,0x7E,0x7E,0x86,0x8B,0x86, - 0x7D,0x77,0x77,0x6D,0x74,0x84,0x75,0x66,0x5E,0x57,0x60,0x63,0x61,0x68,0x62,0x54, - 0x49,0x44,0x4F,0x5C,0x5A,0x58,0x59,0x56,0x4F,0x4E,0x5B,0x65,0x64,0x62,0x5D,0x5F, - 0x6A,0x68,0x80,0x8D,0x80,0x7E,0x76,0x7B,0x86,0x83,0x8D,0x98,0x90,0x80,0x74,0x75, - 0x84,0x8B,0x86,0x84,0x82,0x7D,0x79,0x78,0x82,0x8B,0x84,0x80,0x7A,0x79,0x76,0x7F, - 0x97,0x91,0x81,0x79,0x70,0x78,0x80,0x82,0x8D,0x8D,0x80,0x7B,0x79,0x84,0x8E,0x8D, - 0x8A,0x8E,0x91,0x86,0x7E,0x82,0x91,0x94,0x8F,0x8A,0x81,0x86,0x83,0x8F,0xA6,0x99, - 0x8A,0x81,0x80,0x8B,0x8E,0x8E,0x94,0x8E,0x85,0x7A,0x73,0x7F,0x85,0x82,0x84,0x83, - 0x7A,0x6E,0x66,0x6F,0x7B,0x77,0x6E,0x64,0x5F,0x5F,0x5D,0x6F,0x7D,0x6E,0x5E,0x54, - 0x50,0x5A,0x5C,0x60,0x6F,0x6D,0x60,0x5B,0x5D,0x6D,0x7A,0x79,0x7D,0x81,0x80,0x7C, - 0x7A,0x89,0x99,0x9A,0x99,0x95,0x92,0x93,0x8F,0xA3,0xB3,0xA3,0x92,0x89,0x88,0x91, - 0x8F,0x8C,0x95,0x8F,0x88,0x80,0x77,0x84,0x8A,0x88,0x8F,0x8F,0x89,0x7D,0x76,0x84, - 0x91,0x8E,0x88,0x82,0x80,0x85,0x83,0x91,0x9F,0x92,0x88,0x81,0x85,0x8C,0x8B,0x91, - 0x9B,0xA0,0x97,0x8B,0x86,0x8E,0x9A,0x9B,0x98,0x99,0x92,0x89,0x86,0x8B,0x96,0x95, - 0x93,0x8F,0x84,0x84,0x7C,0x87,0xA1,0x95,0x83,0x7A,0x73,0x7A,0x7D,0x7D,0x85,0x84, - 0x78,0x6C,0x63,0x68,0x74,0x75,0x72,0x73,0x71,0x66,0x5B,0x5D,0x6E,0x75,0x70,0x69, - 0x5F,0x5E,0x5E,0x67,0x81,0x82,0x74,0x6A,0x66,0x70,0x74,0x79,0x87,0x8C,0x86,0x7B, - 0x75,0x79,0x83,0x8A,0x8D,0x8E,0x8A,0x82,0x7A,0x78,0x83,0x8C,0x8A,0x84,0x7E,0x7B, - 0x78,0x72,0x87,0x9B,0x8C,0x7D,0x75,0x72,0x7E,0x82,0x83,0x8D,0x8D,0x85,0x7B,0x72, - 0x7C,0x87,0x8A,0x8A,0x89,0x8A,0x81,0x77,0x7A,0x87,0x8D,0x88,0x82,0x7F,0x7E,0x7A, - 0x82,0x98,0x99,0x8C,0x82,0x78,0x7C,0x84,0x87,0x8F,0x95,0x92,0x87,0x78,0x77,0x83, - 0x89,0x8C,0x8E,0x8C,0x87,0x7D,0x78,0x81,0x8A,0x8C,0x88,0x7F,0x7A,0x79,0x73,0x85, - 0x97,0x8C,0x7E,0x70,0x6A,0x73,0x78,0x7A,0x81,0x83,0x7F,0x72,0x63,0x68,0x75,0x7C, - 0x7F,0x7E,0x7B,0x76,0x6E,0x6D,0x78,0x84,0x89,0x84,0x7A,0x7A,0x7D,0x7C,0x8F,0x9D, - 0x94,0x8C,0x7D,0x7A,0x84,0x84,0x8B,0x91,0x8D,0x88,0x7D,0x72,0x78,0x82,0x87,0x88, - 0x83,0x80,0x7B,0x72,0x73,0x7A,0x84,0x87,0x7D,0x74,0x71,0x70,0x72,0x89,0x94,0x86, - 0x7A,0x6D,0x6E,0x76,0x77,0x7E,0x83,0x85,0x82,0x74,0x6F,0x76,0x80,0x86,0x86,0x85, - 0x84,0x80,0x77,0x75,0x7E,0x89,0x8E,0x86,0x7C,0x7B,0x79,0x78,0x8B,0x96,0x8B,0x80, - 0x71,0x6F,0x79,0x7B,0x81,0x85,0x85,0x87,0x7C,0x71,0x74,0x7A,0x84,0x88,0x85,0x86, - 0x81,0x76,0x71,0x77,0x82,0x88,0x83,0x7D,0x7A,0x76,0x72,0x82,0x90,0x8C,0x81,0x70, - 0x6C,0x75,0x78,0x7D,0x83,0x86,0x87,0x7C,0x72,0x75,0x7D,0x84,0x8A,0x8B,0x8C,0x8C, - 0x86,0x81,0x80,0x88,0x95,0x93,0x8B,0x85,0x7D,0x77,0x81,0x97,0x96,0x8C,0x7D,0x76, - 0x7B,0x79,0x7A,0x7C,0x82,0x86,0x81,0x74,0x6D,0x6E,0x75,0x7F,0x82,0x82,0x81,0x80, - 0x7A,0x73,0x76,0x81,0x86,0x85,0x81,0x7A,0x73,0x75,0x8A,0x96,0x90,0x86,0x76,0x77, - 0x7F,0x7C,0x80,0x82,0x86,0x8C,0x82,0x78,0x75,0x77,0x82,0x8A,0x88,0x87,0x84,0x83, - 0x7F,0x77,0x7C,0x85,0x89,0x8A,0x82,0x79,0x71,0x77,0x8C,0x93,0x8C,0x7F,0x73,0x75, - 0x7A,0x7D,0x7F,0x7F,0x85,0x8E,0x87,0x79,0x74,0x76,0x82,0x88,0x86,0x86,0x84,0x82, - 0x7C,0x79,0x7C,0x85,0x8A,0x84,0x7F,0x78,0x6F,0x7A,0x92,0x94,0x8F,0x7F,0x70,0x7B, - 0x7D,0x83,0x82,0x80,0x8B,0x88,0x86,0x80,0x79,0x76,0x7C,0x87,0x89,0x8B,0x80,0x75, - 0x76,0x80,0x85,0x7A,0x7C,0x89,0x83,0x72,0x65,0x6E,0x8E,0x9A,0x8D,0x79,0x6B,0x76, - 0x77,0x74,0x8C,0x84,0x6D,0x7C,0x8E,0x81,0x79,0x7D,0x6C,0x78,0x85,0x80,0x82,0x7D, - 0x83,0x8A,0x83,0x75,0x7A,0x8D,0x89,0x7A,0x7B,0x79,0x85,0x8F,0x95,0x97,0x77,0x68, - 0x76,0x8A,0x95,0x89,0x71,0x73,0x89,0x83,0x7D,0x79,0x71,0x81,0x83,0x79,0x89,0x8F, - 0x79,0x81,0x8B,0x75,0x72,0x73,0x85,0x90,0x7E,0x70,0x75,0x84,0x84,0xA0,0x9D,0x79, - 0x72,0x65,0x66,0x7F,0x89,0x86,0x90,0x7F,0x7A,0x91,0x80,0x6E,0x77,0x80,0x80,0x83, - 0x80,0x78,0x85,0x8D,0x8B,0x94,0x80,0x6D,0x7F,0x85,0x74,0x73,0x83,0x83,0x8E,0x8E, - 0x7C,0x7B,0x72,0x73,0x8E,0x95,0x7F,0x72,0x73,0x83,0x8B,0x8B,0x85,0x71,0x6C,0x72, - 0x79,0x87,0x93,0x91,0x96,0x90,0x79,0x8C,0x89,0x70,0x7C,0x81,0x69,0x64,0x77,0x7A, - 0x8E,0x95,0x86,0x8A,0x7F,0x69,0x75,0x84,0x7A,0x80,0x86,0x79,0x77,0x79,0x76,0x7A, - 0x87,0x86,0x94,0x9C,0x81,0x7A,0x7F,0x87,0x8F,0x91,0x8F,0x7E,0x6A,0x5E,0x5C,0x6D, - 0x86,0x8D,0x96,0x99,0x7D,0x7A,0x8B,0x89,0x87,0x90,0x93,0x84,0x81,0x79,0x80,0x90, - 0x85,0x88,0x89,0x72,0x5A,0x68,0x74,0x6F,0x74,0x6E,0x6C,0x6E,0x76,0x88,0x9B,0x98, - 0x99,0xA0,0x91,0x8C,0x88,0x8F,0x8D,0x85,0x84,0x74,0x7C,0x76,0x68,0x76,0x76,0x7D, - 0x89,0x84,0x7A,0x6D,0x96,0x93,0x82,0x9E,0xA2,0xA2,0x7D,0x6F,0x7D,0x85,0x7B,0x5A, - 0x74,0x77,0x53,0x58,0x65,0x64,0x6B,0x65,0x6A,0x99,0xA2,0x86,0x8B,0x95,0x8B,0x98, - 0x9E,0x9B,0x98,0x96,0xA1,0x99,0x88,0x79,0x6D,0x70,0x61,0x67,0x7C,0x85,0x86,0x76, - 0x64,0x54,0x6E,0x8E,0x8F,0x8F,0x8F,0x86,0x7B,0x7B,0x75,0x7A,0x8D,0x8E,0x93,0xA7, - 0x93,0x7C,0x8C,0x91,0x98,0x96,0x8E,0x83,0x5F,0x5F,0x61,0x5C,0x66,0x6C,0x72,0x67, - 0x57,0x4F,0x55,0x6B,0x80,0x81,0x7C,0x78,0x7E,0x83,0x88,0xA3,0xAA,0xAF,0xC3,0xAE, - 0xA4,0xB6,0x93,0x82,0x8D,0x81,0x7D,0x7C,0x74,0x73,0x85,0x87,0x84,0x81,0x73,0x61, - 0x5D,0x6A,0x77,0x7F,0x7D,0x75,0x73,0x7B,0x6C,0x72,0x75,0x66,0x7C,0x85,0x77,0x7A, - 0x80,0x84,0x82,0x8F,0xA4,0x9C,0x8B,0x84,0x7C,0x8F,0x9F,0x95,0x8F,0x81,0x69,0x6E, - 0x7F,0x68,0x6E,0x8C,0x73,0x6B,0x79,0x70,0x82,0x78,0x72,0x86,0x76,0x66,0x6A,0x6C, - 0x6B,0x8F,0x9C,0x98,0x8F,0x86,0x8F,0x83,0x84,0x8E,0x8D,0x96,0x8A,0x78,0x8C,0x94, - 0x8D,0x8B,0x92,0x87,0x6A,0x63,0x66,0x6E,0x75,0x73,0x79,0x7C,0x63,0x63,0x77,0x6F, - 0x63,0x80,0x8C,0x7F,0x8A,0x84,0x88,0x98,0x98,0xA3,0xBA,0xB2,0xA5,0xA7,0xA2,0x97, - 0x7B,0x7C,0x77,0x6A,0x68,0x56,0x53,0x63,0x71,0x7B,0x82,0x81,0x76,0x67,0x64,0x71, - 0x83,0x7F,0x73,0x70,0x77,0x84,0x84,0x8E,0x99,0xA5,0xA1,0x86,0x89,0x8C,0x80,0x82, - 0x8C,0x7E,0x72,0x6E,0x66,0x6D,0x79,0x82,0x8E,0x95,0x73,0x71,0x87,0x73,0x7D,0x83, - 0x83,0x79,0x66,0x79,0x8E,0x89,0x7A,0x8F,0x95,0x8E,0x85,0x6E,0x80,0x85,0x7A,0x8D, - 0x87,0x77,0x79,0x79,0x8F,0x93,0x87,0x90,0x8B,0x75,0x73,0x82,0x7E,0x80,0x88,0x76, - 0x79,0x7C,0x5F,0x6C,0x77,0x63,0x7D,0x8C,0x74,0x76,0x7A,0x76,0x7E,0x86,0x94,0x8E, - 0x87,0x95,0x93,0x96,0x8B,0x90,0xA5,0xAA,0x9C,0x8C,0x8A,0x7B,0x80,0x7D,0x82,0x78, - 0x62,0x78,0x74,0x6C,0x72,0x78,0x7F,0x7B,0x75,0x80,0x77,0x58,0x6D,0x8F,0x80,0x7A, - 0x7D,0x71,0x7B,0x80,0x7E,0x9A,0xA3,0x86,0x89,0x94,0x82,0x86,0x8E,0x93,0x87,0x7C, - 0x7D,0x70,0x6F,0x66,0x6B,0x7C,0x70,0x63,0x74,0x6E,0x6F,0x7A,0x7B,0x88,0x7A,0x7E, - 0x8C,0x93,0x94,0x8C,0x99,0x9A,0x91,0x82,0x7F,0x6E,0x70,0x86,0x77,0x6C,0x82,0x85, - 0x7D,0x8B,0x84,0x8E,0x93,0x7B,0x68,0x78,0x85,0x79,0x8F,0x99,0x8A,0x88,0x80,0x7D, - 0x77,0x6B,0x68,0x6F,0x88,0x87,0x7A,0x86,0x83,0x87,0x92,0x8E,0x84,0x7B,0x7A,0x76, - 0x7C,0x88,0x92,0xA0,0x95,0x90,0xA3,0x90,0x78,0x87,0x8D,0x80,0x7A,0x76,0x6E,0x65, - 0x5E,0x68,0x87,0x78,0x6C,0x94,0x84,0x70,0x7F,0x86,0x89,0x8A,0x86,0x7D,0x78,0x74, - 0x74,0x7C,0x8F,0x80,0x7B,0x87,0x77,0x6D,0x78,0x8D,0x79,0x6B,0x80,0x7C,0x6B,0x70, - 0x7B,0x7E,0x89,0x89,0x97,0x90,0x71,0x74,0x7E,0x7F,0x76,0x79,0x81,0x7B,0x83,0x87, - 0x9D,0xA8,0x87,0x8F,0x9A,0x77,0x77,0x85,0x8A,0x7F,0x6E,0x73,0x7A,0x77,0x71,0x79, - 0x8B,0x82,0x7C,0x89,0x83,0x6E,0x69,0x83,0x84,0x73,0x84,0x90,0x83,0x81,0x7C,0x89, - 0x9A,0x88,0x8F,0x93,0x86,0x71,0x79,0x9A,0x83,0x7A,0x7C,0x6F,0x6D,0x66,0x71,0x94, - 0x8E,0x7B,0x9C,0x96,0x82,0x94,0x90,0x8E,0x8C,0x77,0x70,0x78,0x70,0x6B,0x6F,0x7C, - 0x7A,0x7C,0x81,0x76,0x72,0x8B,0xA4,0x90,0x7F,0x8B,0x8E,0x79,0x74,0x72,0x80,0x8F, - 0x85,0x89,0x7C,0x64,0x5A,0x68,0x70,0x69,0x74,0x6A,0x73,0x85,0x78,0x90,0x92,0x6E, - 0x81,0x99,0x7C,0x68,0x7B,0x97,0x8A,0x7B,0x81,0x80,0x7D,0x75,0x79,0x88,0x9B,0x99, - 0x97,0x99,0x82,0x84,0x93,0x8C,0x7C,0x7A,0x7E,0x7F,0x7C,0x7E,0x84,0x82,0x84,0x89, - 0x79,0x68,0x59,0x50,0x6E,0x76,0x7C,0x81,0x7C,0x8F,0x7F,0x7E,0x9B,0x8D,0x86,0x97, - 0x94,0x8F,0x8A,0x95,0x98,0x8D,0x89,0x7A,0x79,0x70,0x65,0x6A,0x66,0x74,0x7F,0x76, - 0x81,0x72,0x7C,0xA3,0x9C,0x95,0x95,0x9E,0x9E,0x82,0x79,0x80,0x82,0x80,0x81,0x7C, - 0x6C,0x64,0x5B,0x6F,0x89,0x7E,0x73,0x7D,0x7A,0x73,0x7C,0x77,0x76,0x85,0x8A,0x89, - 0x79,0x6D,0x87,0x86,0x89,0x97,0x8A,0x87,0x72,0x6C,0x73,0x7B,0x8B,0x81,0x7F,0x89, - 0x76,0x76,0x90,0x8B,0x78,0x7A,0x8F,0x87,0x76,0x7C,0x78,0x82,0x9A,0x8D,0x86,0x78, - 0x70,0x7F,0x81,0x82,0x75,0x74,0x7D,0x74,0x73,0x7B,0x7F,0x8D,0x98,0xA1,0xA6,0x85, - 0x7A,0x86,0x7F,0x80,0x7C,0x7E,0x75,0x76,0x79,0x76,0x80,0x73,0x6F,0x8C,0x94,0x6E, - 0x97,0xA6,0x6A,0x7F,0x84,0x87,0x88,0x75,0x86,0x6F,0x7D,0x91,0x79,0x7E,0x7A,0x6B, - 0x74,0x8C,0x91,0x8E,0x8B,0x8D,0x94,0x8C,0x73,0x74,0x8C,0x87,0x83,0x78,0x70,0x70, - 0x75,0x85,0x86,0x8A,0x83,0x78,0x7A,0x66,0x6B,0x95,0x8B,0x80,0x97,0x82,0x77,0x8A, - 0x7C,0x7D,0x7C,0x72,0x8E,0x8D,0x75,0x77,0x72,0x84,0x84,0x71,0x71,0x58,0x5E,0x72, - 0x80,0x83,0x67,0x6B,0x7B,0x74,0x6B,0x7E,0x94,0x96,0xA3,0xB8,0xA6,0x81,0x87,0x9A, - 0x98,0x87,0x82,0x80,0x7D,0x7E,0x5F,0x6C,0x95,0x80,0x7C,0x8C,0x6D,0x74,0x88,0x72, - 0x77,0x73,0x76,0x83,0x7D,0x79,0x78,0x93,0x8B,0x83,0x90,0x7D,0x6B,0x63,0x70,0x8E, - 0x93,0x80,0x8B,0x95,0x86,0x6C,0x76,0x8F,0x7F,0x82,0x84,0x76,0x76,0x79,0x8A,0xA0, - 0xA8,0x98,0x8D,0x8A,0x78,0x76,0x8F,0x96,0x82,0x88,0x86,0x70,0x71,0x7B,0x77,0x69, - 0x64,0x7E,0x8A,0x76,0x67,0x6D,0x88,0x80,0x7F,0x87,0x72,0x71,0x62,0x73,0x8D,0x78, - 0x7F,0x88,0x81,0x70,0x73,0x95,0x90,0x87,0x9C,0x9E,0x7C,0x6E,0x77,0x83,0x87,0x7F, - 0x7A,0x78,0x6A,0x55,0x61,0x83,0x80,0x7D,0xA1,0x9A,0x7F,0x92,0x8F,0x8D,0x7C,0x7C, - 0x95,0x85,0x7B,0x6F,0x80,0x85,0x82,0x9B,0x90,0x77,0x68,0x6E,0x87,0x7F,0x66,0x78, - 0x93,0x81,0x67,0x7D,0x9A,0x84,0x83,0x95,0x8E,0x7E,0x75,0x83,0x95,0x8C,0x83,0x88, - 0x7E,0x70,0x63,0x7D,0x84,0x6D,0x87,0x8A,0x72,0x71,0x79,0x7F,0x72,0x6B,0x89,0xA8, - 0xA0,0x7E,0x85,0xA4,0x8D,0x8B,0x9E,0x91,0x78,0x5D,0x7B,0x96,0x77,0x6F,0x82,0x7D, - 0x64,0x68,0x7C,0x7D,0x73,0x86,0x9A,0x80,0x62,0x6A,0x8A,0x8B,0x7C,0x82,0x8A,0x79, - 0x5A,0x66,0x8E,0x88,0x6D,0x84,0x94,0x78,0x7A,0x84,0x7B,0x71,0x71,0x8C,0x91,0x79, - 0x65,0x79,0x82,0x77,0x9A,0xA3,0x90,0x7D,0x72,0x92,0x96,0x76,0x7F,0x93,0x84,0x6C, - 0x6D,0x87,0x7E,0x6F,0x81,0x8A,0x88,0x74,0x6E,0x89,0x88,0x76,0x7A,0x78,0x65,0x61, - 0x77,0x8A,0x8C,0x90,0x9C,0x9A,0x7E,0x7F,0x8D,0x74,0x6C,0x75,0x90,0x9B,0x78,0x71, - 0x8A,0x85,0x7C,0x93,0x96,0x80,0x67,0x67,0x83,0x8B,0x74,0x80,0x97,0x7E,0x7C,0x90, - 0x90,0x87,0x90,0x9C,0x92,0x8D,0x72,0x74,0x82,0x70,0x7B,0x88,0x7D,0x61,0x61,0x76, - 0x78,0x6C,0x75,0x91,0x82,0x72,0x86,0x88,0x71,0x65,0x78,0x8A,0x84,0x70,0x7E,0x8A, - 0x78,0x91,0x9D,0x98,0x88,0x64,0x6D,0x85,0x7E,0x70,0x81,0x90,0x74,0x6B,0x81,0x75, - 0x67,0x74,0x84,0x93,0x8B,0x78,0x89,0x98,0x8F,0x9D,0x98,0x82,0x73,0x68,0x75,0x75, - 0x74,0x8C,0x97,0x8C,0x84,0x92,0x83,0x6E,0x72,0x72,0x81,0x76,0x65,0x7C,0x83,0x6F, - 0x80,0xA2,0x9B,0x84,0x77,0x7E,0x8A,0x8C,0x87,0x8A,0x89,0x79,0x7E,0x86,0x80,0x7F, - 0x8F,0x88,0x89,0x8A,0x71,0x74,0x70,0x72,0x87,0x88,0x7C,0x71,0x7E,0x89,0x7A,0x7E, - 0x99,0x9A,0x96,0x97,0x9A,0x8B,0x7A,0x7E,0x7C,0x70,0x68,0x6D,0x71,0x6F,0x6F,0x82, - 0x93,0x92,0x7E,0x6D,0x6F,0x6A,0x74,0x88,0x8D,0x83,0x73,0x7F,0x91,0x7C,0x7C,0x8E, - 0x90,0x8E,0x82,0x84,0x7A,0x75,0x81,0x88,0x82,0x71,0x70,0x70,0x69,0x72,0x74,0x75, - 0x8C,0x87,0x86,0x9B,0x89,0x7C,0x91,0x92,0x7D,0x6B,0x81,0x8F,0x6F,0x6C,0x7E,0x8F, - 0x96,0x8D,0x95,0x8E,0x74,0x76,0x87,0x7B,0x73,0x6B,0x6E,0x81,0x74,0x7D,0x91,0x85, - 0x99,0xA1,0x90,0x87,0x6F,0x75,0x8B,0x84,0x79,0x80,0x8A,0x7A,0x6C,0x7D,0x84,0x7B, - 0x85,0x8E,0x93,0x85,0x6C,0x78,0x74,0x61,0x71,0x7E,0x82,0x84,0x82,0x85,0x87,0x92, - 0x99,0x9E,0x93,0x82,0x88,0x8B,0x88,0x7A,0x75,0x88,0x81,0x6E,0x75,0x7D,0x71,0x70, - 0x84,0x7F,0x76,0x73,0x75,0x7F,0x76,0x75,0x7D,0x7C,0x7A,0x83,0x82,0x82,0x8A,0x8A, - 0x96,0x92,0x82,0x80,0x8B,0x87,0x6B,0x78,0x88,0x78,0x69,0x68,0x71,0x68,0x6C,0x84, - 0x92,0x8D,0x81,0x88,0x86,0x7E,0x7F,0x7E,0x82,0x84,0x7F,0x82,0x85,0x84,0x87,0x94, - 0x9A,0x8B,0x89,0x8E,0x8B,0x7C,0x79,0x88,0x7B,0x68,0x6C,0x77,0x6D,0x71,0x83,0x8D, - 0x94,0x8C,0x84,0x82,0x80,0x75,0x75,0x81,0x84,0x7D,0x75,0x7D,0x83,0x83,0x8B,0x94, - 0x8D,0x85,0x87,0x85,0x75,0x74,0x7C,0x79,0x75,0x77,0x80,0x79,0x7F,0x84,0x8D,0x97, - 0x8D,0x88,0x87,0x86,0x7B,0x7F,0x83,0x86,0x8D,0x7B,0x7B,0x83,0x7C,0x84,0x7F,0x78, - 0x83,0x76,0x71,0x79,0x70,0x7C,0x80,0x71,0x78,0x7F,0x77,0x75,0x82,0x8A,0x89,0x8A, - 0x82,0x84,0x88,0x7F,0x7D,0x7F,0x86,0x8C,0x7C,0x7B,0x7E,0x72,0x78,0x78,0x79,0x79, - 0x7A,0x85,0x76,0x79,0x84,0x7B,0x78,0x79,0x7D,0x7B,0x7A,0x80,0x91,0x8F,0x90,0x8F, - 0x85,0x8C,0x88,0x86,0x7C,0x81,0x81,0x73,0x79,0x71,0x72,0x7E,0x81,0x7E,0x80,0x8C, - 0x82,0x7B,0x80,0x88,0x84,0x7B,0x85,0x8A,0x88,0x79,0x7B,0x8F,0x88,0x81,0x81,0x89, - 0x87,0x7A,0x78,0x79,0x7D,0x7B,0x7A,0x84,0x84,0x7B,0x84,0x85,0x84,0x87,0x82,0x7E, - 0x82,0x77,0x7E,0x86,0x75,0x7D,0x84,0x80,0x79,0x80,0x8A,0x85,0x86,0x7B,0x7D,0x78, - 0x76,0x75,0x71,0x7F,0x7B,0x77,0x7E,0x81,0x7E,0x7B,0x81,0x80,0x7A,0x82,0x82,0x76, - 0x78,0x7E,0x78,0x79,0x7A,0x81,0x82,0x75,0x82,0x87,0x80,0x84,0x82,0x7B,0x7E,0x82, - 0x76,0x7A,0x8A,0x85,0x80,0x84,0x85,0x7F,0x7E,0x7F,0x83,0x81,0x82,0x81,0x7E,0x8B, - 0x89,0x83,0x86,0x7F,0x84,0x83,0x72,0x82,0x7F,0x72,0x86,0x7C,0x7E,0x82,0x83,0x9D, - 0x83,0x8A,0x81,0x65,0x86,0x7D,0x69,0x71,0x7E,0x84,0x8C,0x8E,0x91,0x8E,0x90,0x9B, - 0x9E,0x9E,0x8F,0x8D,0x87,0x7E,0x89,0x86,0x7E,0x78,0x73,0x6B,0x67,0x65,0x58,0x56, - 0x62,0x61,0x62,0x67,0x69,0x7B,0x7C,0x77,0x8A,0x7B,0x7B,0x88,0x70,0x78,0x92,0x96, - 0x7C,0x85,0xA3,0x99,0x9D,0xAC,0xA0,0xA5,0xAA,0x9B,0x9A,0x95,0x8C,0x8A,0x8B,0x89, - 0x87,0x81,0x7E,0x7F,0x7A,0x7C,0x7B,0x72,0x68,0x67,0x69,0x60,0x52,0x4F,0x49,0x42, - 0x47,0x52,0x59,0x5E,0x5F,0x6A,0x82,0x90,0x8F,0x8B,0x8B,0x88,0x87,0x94,0x9E,0xA1, - 0xA4,0xAD,0xBB,0xC3,0xC6,0xCD,0xD1,0xCC,0xC6,0xB9,0xAF,0xAD,0xA9,0xA8,0xA6,0x9A, - 0x81,0x75,0x76,0x76,0x74,0x6D,0x60,0x55,0x54,0x4D,0x3E,0x35,0x2E,0x30,0x34,0x36, - 0x3C,0x41,0x42,0x49,0x53,0x59,0x60,0x68,0x70,0x71,0x78,0x84,0x89,0x8A,0x8D,0x8D, - 0x8E,0x92,0x96,0x97,0x93,0x93,0x95,0x9B,0xA3,0xA1,0x9B,0x95,0x90,0x8D,0x85,0x7E, - 0x7C,0x78,0x74,0x76,0x75,0x75,0x75,0x78,0x83,0x90,0x91,0x92,0x9F,0xA7,0xA3,0x9A, - 0x92,0x8B,0x86,0x83,0x7C,0x79,0x78,0x74,0x75,0x77,0x72,0x72,0x78,0x7C,0x7C,0x79, - 0x7E,0x82,0x80,0x7A,0x77,0x77,0x75,0x88,0x9B,0x91,0x92,0x9D,0x9A,0x9A,0x9A,0x92, - 0x91,0x9B,0x9A,0x97,0x9F,0xA2,0xA2,0xA0,0x91,0x89,0x8A,0x81,0x79,0x7A,0x7B,0x7A, - 0x7A,0x79,0x74,0x6F,0x7A,0x89,0x82,0x78,0x79,0x7D,0x7C,0x7B,0x77,0x78,0x80,0x7E, - 0x78,0x7C,0x82,0x84,0x84,0x7E,0x7E,0x88,0x88,0x84,0x88,0x90,0x8F,0x82,0x7F,0x7F, - 0x87,0x95,0x93,0x88,0x88,0x89,0x82,0x7D,0x75,0x71,0x7A,0x7A,0x72,0x73,0x79,0x7A, - 0x74,0x6D,0x6F,0x72,0x70,0x6C,0x6E,0x75,0x73,0x67,0x5B,0x59,0x5B,0x66,0x6E,0x65, - 0x64,0x69,0x5F,0x57,0x50,0x48,0x52,0x57,0x55,0x5B,0x5F,0x5E,0x57,0x51,0x4D,0x52, - 0x59,0x5A,0x63,0x6C,0x6B,0x66,0x6A,0x6E,0x72,0x81,0x92,0x9A,0x9F,0xA6,0xA7,0xA8, - 0xB2,0xBD,0xCC,0xD8,0xD9,0xDB,0xDD,0xDA,0xD8,0xD0,0xC8,0xCB,0xCC,0xC6,0xC6,0xC8, - 0xC1,0xB4,0xA9,0xA8,0x9C,0x95,0xA3,0x9F,0x8F,0x85,0x78,0x6E,0x69,0x61,0x62,0x67, - 0x64,0x61,0x61,0x5E,0x59,0x56,0x55,0x58,0x5E,0x5C,0x5F,0x66,0x61,0x56,0x57,0x5F, - 0x60,0x60,0x6C,0x74,0x6C,0x69,0x6B,0x67,0x65,0x66,0x6D,0x7C,0x83,0x81,0x86,0x87, - 0x82,0x82,0x89,0x91,0x98,0x9E,0xA7,0xAC,0xA6,0xA1,0xA4,0xAB,0xA9,0xA1,0xAF,0xB7, - 0xA4,0x9B,0x9B,0x94,0x90,0x8D,0x90,0x98,0x95,0x87,0x83,0x81,0x73,0x6D,0x74,0x78, - 0x75,0x71,0x71,0x6E,0x67,0x62,0x65,0x66,0x66,0x63,0x65,0x74,0x6D,0x5C,0x63,0x69, - 0x5E,0x5B,0x5F,0x65,0x69,0x5D,0x55,0x5C,0x56,0x4B,0x4E,0x55,0x58,0x57,0x54,0x59, - 0x56,0x4C,0x4B,0x52,0x55,0x4E,0x58,0x6D,0x65,0x5A,0x62,0x64,0x61,0x67,0x75,0x82, - 0x86,0x80,0x86,0x95,0x92,0x93,0xA5,0xB3,0xB7,0xB7,0xBB,0xBF,0xBD,0xB5,0xBC,0xC2, - 0xBC,0xBC,0xB3,0xC1,0xCC,0xB1,0xA9,0xB3,0xA4,0x98,0x9F,0xA2,0xA5,0x9F,0x92,0x9A, - 0x9D,0x8F,0x93,0x9D,0x9E,0xA0,0xA2,0x9F,0x9A,0x91,0x90,0x92,0x92,0x8C,0x89,0x9C, - 0x96,0x7D,0x84,0x87,0x79,0x79,0x81,0x86,0x86,0x79,0x75,0x7D,0x74,0x6C,0x76,0x79, - 0x76,0x7A,0x79,0x79,0x75,0x6C,0x6E,0x6F,0x69,0x72,0x6D,0x70,0x83,0x6D,0x63,0x6F, - 0x62,0x58,0x64,0x69,0x6E,0x6D,0x62,0x67,0x6A,0x5E,0x67,0x74,0x71,0x76,0x76,0x73, - 0x74,0x6E,0x6F,0x75,0x75,0x70,0x6C,0x81,0x84,0x6B,0x70,0x79,0x6C,0x65,0x6C,0x76, - 0x7B,0x71,0x70,0x7C,0x73,0x67,0x72,0x78,0x79,0x7B,0x7C,0x7E,0x7A,0x73,0x7A,0x7F, - 0x7E,0x84,0x7E,0x8B,0x9F,0x83,0x78,0x8C,0x7F,0x6F,0x7B,0x84,0x89,0x84,0x7B,0x85, - 0x85,0x77,0x82,0x8E,0x8C,0x91,0x98,0x9A,0x9B,0x9A,0x9F,0xA3,0xA0,0xA0,0x9B,0xAE, - 0xBA,0x9F,0x9E,0xA7,0x91,0x83,0x8A,0x8F,0x8C,0x7F,0x79,0x81,0x71,0x5E,0x68,0x6C, - 0x63,0x64,0x67,0x67,0x5F,0x56,0x5E,0x63,0x61,0x66,0x5F,0x6E,0x84,0x6E,0x69,0x7D, - 0x72,0x69,0x75,0x7E,0x83,0x82,0x7D,0x88,0x87,0x7A,0x81,0x89,0x86,0x88,0x8F,0x91, - 0x91,0x8E,0x91,0x93,0x91,0x94,0x91,0x9E,0xB4,0xA1,0x9C,0xAE,0xA0,0x94,0x9F,0xA5, - 0xA7,0xA7,0xA1,0xA4,0x9F,0x8E,0x94,0x9A,0x93,0x93,0x94,0x92,0x90,0x87,0x86,0x8B, - 0x84,0x87,0x80,0x80,0x96,0x86,0x72,0x81,0x78,0x61,0x67,0x6C,0x6C,0x6B,0x62,0x68, - 0x69,0x55,0x55,0x5F,0x59,0x59,0x5E,0x5F,0x5F,0x57,0x54,0x5A,0x56,0x56,0x53,0x57, - 0x70,0x63,0x4F,0x61,0x5F,0x4C,0x52,0x5C,0x5F,0x5D,0x55,0x5B,0x60,0x50,0x53,0x5F, - 0x5D,0x5F,0x63,0x67,0x6B,0x68,0x6A,0x70,0x6F,0x75,0x79,0x7C,0x9A,0x9F,0x8E,0xA0, - 0xA7,0x96,0x99,0xA5,0xAB,0xB0,0xAA,0xAA,0xB1,0xA2,0x9B,0xA4,0xA0,0x9C,0x9E,0x9F, - 0x9B,0x92,0x8D,0x91,0x8D,0x8B,0x8D,0x84,0x97,0xA0,0x87,0x8F,0x9D,0x8D,0x88,0x94, - 0x9A,0x9D,0x99,0x98,0xA3,0x9A,0x91,0x9B,0x9C,0x99,0x9D,0xA1,0xA5,0xA0,0x9D,0x9F, - 0x9C,0x9B,0xA0,0x97,0xA3,0xB9,0xA2,0x9A,0xAC,0x9D,0x8F,0x97,0x9B,0xA0,0x9D,0x94, - 0x9B,0x97,0x88,0x8F,0x94,0x8E,0x8C,0x8C,0x8A,0x85,0x7E,0x7F,0x81,0x7B,0x7E,0x77, - 0x6F,0x87,0x80,0x68,0x79,0x75,0x5D,0x5E,0x63,0x63,0x61,0x59,0x5D,0x5E,0x4C,0x48, - 0x4D,0x48,0x45,0x48,0x48,0x46,0x44,0x41,0x41,0x40,0x43,0x43,0x3B,0x53,0x5B,0x3F, - 0x48,0x55,0x43,0x40,0x4C,0x52,0x54,0x4F,0x51,0x5C,0x57,0x52,0x5F,0x65,0x64,0x67, - 0x6B,0x70,0x6D,0x6E,0x73,0x75,0x76,0x7B,0x76,0x83,0xA0,0x90,0x89,0xA1,0x9A,0x90, - 0x9B,0xA6,0xB0,0xAF,0xAC,0xB9,0xBC,0xB0,0xB6,0xC1,0xBF,0xBF,0xC1,0xC0,0xBD,0xB7, - 0xB5,0xB8,0xB2,0xB2,0xA8,0xA5,0xBF,0xB1,0x98,0xA8,0xA5,0x90,0x92,0x9A,0x9B,0x97, - 0x91,0x96,0x99,0x8B,0x89,0x94,0x92,0x8E,0x92,0x97,0x98,0x94,0x93,0x95,0x92,0x93, - 0x91,0x8B,0xA3,0xAA,0x8F,0x96,0xA0,0x8C,0x86,0x8E,0x95,0x96,0x8C,0x8A,0x91,0x86, - 0x7D,0x85,0x85,0x80,0x7F,0x80,0x80,0x7D,0x78,0x7A,0x7C,0x7A,0x76,0x6D,0x7E,0x8B, - 0x72,0x70,0x7D,0x6B,0x61,0x68,0x6C,0x70,0x6A,0x66,0x6E,0x69,0x5A,0x5B,0x5F,0x5C, - 0x59,0x56,0x57,0x54,0x4B,0x47,0x48,0x47,0x47,0x3F,0x4A,0x62,0x50,0x41,0x53,0x4E, - 0x41,0x45,0x4E,0x58,0x54,0x4B,0x55,0x58,0x50,0x53,0x5C,0x5F,0x5D,0x5D,0x66,0x6A, - 0x66,0x65,0x6A,0x6E,0x70,0x67,0x73,0x94,0x86,0x75,0x89,0x8A,0x7E,0x81,0x8A,0x97, - 0x99,0x91,0x9A,0xA3,0x9C,0x9C,0xA4,0xAB,0xAF,0xB1,0xB8,0xBC,0xBA,0xB6,0xBA,0xBC, - 0xBD,0xB6,0xB4,0xCF,0xCB,0xAF,0xB5,0xB9,0xAA,0xA4,0xA3,0xA9,0xA8,0x98,0x96,0x9A, - 0x8E,0x84,0x84,0x88,0x89,0x83,0x83,0x89,0x86,0x80,0x80,0x81,0x84,0x7C,0x76,0x94, - 0x96,0x7A,0x81,0x88,0x7E,0x7A,0x7B,0x87,0x8E,0x83,0x80,0x8A,0x86,0x80,0x80,0x85, - 0x8C,0x87,0x84,0x8A,0x8B,0x84,0x81,0x87,0x8B,0x82,0x7E,0x9A,0x9E,0x83,0x84,0x88, - 0x7F,0x7B,0x79,0x84,0x8D,0x80,0x79,0x82,0x81,0x79,0x75,0x7A,0x7D,0x74,0x70,0x74, - 0x74,0x6C,0x67,0x67,0x6B,0x5F,0x5C,0x79,0x74,0x5B,0x5F,0x5F,0x58,0x54,0x51,0x5E, - 0x65,0x55,0x51,0x5B,0x59,0x50,0x50,0x58,0x5D,0x59,0x56,0x5C,0x5E,0x58,0x52,0x56, - 0x5D,0x53,0x5A,0x78,0x6E,0x5F,0x67,0x68,0x67,0x65,0x67,0x74,0x78,0x6D,0x6D,0x76, - 0x75,0x72,0x73,0x7C,0x84,0x83,0x85,0x8C,0x8E,0x8C,0x8A,0x93,0x98,0x92,0xA7,0xBC, - 0xAA,0xA4,0xAA,0xA5,0xA3,0xA1,0xA2,0xAF,0xB0,0xA2,0x9F,0xA2,0x9B,0x91,0x8D,0x91, - 0x92,0x8F,0x8A,0x87,0x86,0x81,0x7A,0x7F,0x7A,0x74,0x8E,0x90,0x79,0x7C,0x7B,0x75, - 0x76,0x73,0x7B,0x87,0x83,0x7E,0x82,0x87,0x84,0x7E,0x81,0x8A,0x8C,0x8B,0x8A,0x8D, - 0x8E,0x8C,0x89,0x8B,0x87,0x94,0xAB,0x9D,0x90,0x96,0x90,0x8D,0x8C,0x8B,0x96,0x9A, - 0x93,0x8E,0x8F,0x92,0x8F,0x8B,0x8F,0x95,0x96,0x92,0x8B,0x8C,0x8B,0x83,0x82,0x7E, - 0x81,0x9B,0x9A,0x84,0x87,0x85,0x7C,0x7A,0x74,0x79,0x82,0x7C,0x74,0x71,0x71,0x71, - 0x6C,0x66,0x67,0x6E,0x6D,0x66,0x65,0x66,0x61,0x5C,0x59,0x53,0x68,0x7B,0x68,0x5D, - 0x60,0x5B,0x5C,0x57,0x59,0x69,0x6F,0x6A,0x65,0x64,0x69,0x6B,0x65,0x65,0x6D,0x75, - 0x74,0x70,0x73,0x77,0x76,0x75,0x72,0x7B,0x97,0x96,0x84,0x86,0x88,0x8A,0x8C,0x89, - 0x91,0x9D,0xA1,0x9C,0x98,0x9E,0xA6,0xA4,0x9E,0x9E,0xA5,0xAA,0xA4,0x9E,0x9D,0x99, - 0x96,0x8E,0x88,0x9E,0xAA,0x97,0x8B,0x83,0x7E,0x80,0x77,0x70,0x77,0x7F,0x7C,0x73, - 0x6A,0x6D,0x74,0x72,0x6E,0x72,0x79,0x7B,0x79,0x76,0x76,0x78,0x78,0x72,0x7F,0x95, - 0x91,0x86,0x82,0x7E,0x84,0x88,0x83,0x86,0x8F,0x96,0x97,0x8F,0x8A,0x8E,0x90,0x8F, - 0x90,0x92,0x96,0x98,0x96,0x93,0x90,0x8E,0x89,0x8D,0xA2,0xA3,0x98,0x92,0x88,0x85, - 0x87,0x83,0x82,0x88,0x8B,0x8F,0x8B,0x81,0x7E,0x81,0x7F,0x7B,0x7A,0x7C,0x7C,0x77, - 0x73,0x6E,0x6B,0x66,0x64,0x76,0x7F,0x73,0x6B,0x63,0x5C,0x61,0x5E,0x56,0x5A,0x5E, - 0x61,0x67,0x61,0x5D,0x61,0x60,0x61,0x62,0x62,0x66,0x68,0x69,0x6A,0x69,0x67,0x64, - 0x72,0x86,0x82,0x7F,0x7D,0x74,0x7A,0x7F,0x79,0x7C,0x7E,0x7E,0x87,0x8A,0x86,0x88, - 0x89,0x88,0x8D,0x8F,0x8C,0x8E,0x8F,0x90,0x91,0x93,0x93,0x91,0x9B,0xA2,0x98,0x97, - 0x95,0x8E,0x96,0x95,0x8B,0x8D,0x89,0x84,0x88,0x85,0x83,0x85,0x80,0x7D,0x7F,0x7D, - 0x7B,0x7C,0x7E,0x7C,0x7B,0x7C,0x7A,0x7A,0x82,0x81,0x7D,0x83,0x82,0x80,0x86,0x82, - 0x7E,0x85,0x84,0x84,0x86,0x84,0x84,0x84,0x81,0x84,0x87,0x87,0x88,0x8A,0x8A,0x8A, - 0x89,0x8C,0x8B,0x8A,0x8F,0x8C,0x8A,0x8E,0x8B,0x8D,0x92,0x8D,0x89,0x8C,0x88,0x87, - 0x8A,0x88,0x85,0x84,0x81,0x83,0x86,0x84,0x84,0x85,0x85,0x85,0x85,0x85,0x80,0x7F, - 0x86,0x86,0x80,0x81,0x7F,0x7D,0x81,0x7C,0x7B,0x7C,0x77,0x77,0x79,0x73,0x70,0x6F, - 0x6E,0x6F,0x6F,0x6E,0x6F,0x6F,0x70,0x72,0x76,0x75,0x73,0x73,0x7B,0x7C,0x75,0x79, - 0x7A,0x78,0x7D,0x7C,0x7A,0x7C,0x78,0x78,0x7D,0x79,0x76,0x78,0x75,0x73,0x78,0x7A, - 0x7A,0x7A,0x7B,0x80,0x82,0x80,0x82,0x83,0x86,0x8B,0x88,0x87,0x8A,0x85,0x89,0x91, - 0x8B,0x88,0x87,0x83,0x84,0x83,0x80,0x82,0x7E,0x79,0x7D,0x7F,0x7C,0x7C,0x7D,0x7F, - 0x7F,0x7E,0x7E,0x7E,0x7A,0x7F,0x83,0x7D,0x7E,0x7D,0x7B,0x81,0x7F,0x78,0x7E,0x7C, - 0x77,0x7B,0x7A,0x78,0x78,0x75,0x77,0x7B,0x7B,0x7B,0x7E,0x7F,0x81,0x84,0x85,0x86, - 0x84,0x82,0x89,0x8D,0x86,0x88,0x89,0x85,0x8A,0x8C,0x89,0x8B,0x88,0x86,0x8B,0x87, - 0x83,0x83,0x80,0x7F,0x83,0x84,0x84,0x84,0x85,0x86,0x86,0x86,0x86,0x86,0x84,0x86, - 0x8B,0x85,0x80,0x85,0x87,0x94,0x7D,0x65,0x7F,0x8D,0x83,0x72,0x8C,0x81,0x64,0x74, - 0x76,0x78,0x78,0x87,0x89,0x73,0x7C,0x84,0x84,0x77,0x7C,0x84,0x77,0x78,0x76,0x77, - 0x7E,0x7C,0x7B,0x85,0x78,0x6F,0x78,0x70,0x70,0x73,0x74,0x6F,0x74,0x78,0x71,0x7B, - 0x82,0x81,0x80,0x7E,0x87,0x87,0x88,0x8A,0x82,0x81,0x83,0x85,0x85,0x87,0x88,0x7D, - 0x7E,0x83,0x7F,0x84,0x7F,0x78,0x77,0x78,0x72,0x6F,0x76,0x75,0x7F,0x84,0x76,0x75, - 0x7F,0x81,0x81,0x8D,0x8F,0x85,0x84,0x82,0x84,0x87,0x89,0x86,0x82,0x81,0x80,0x83, - 0x83,0x83,0x7A,0x71,0x75,0x76,0x70,0x71,0x72,0x70,0x70,0x72,0x76,0x77,0x74,0x76, - 0x77,0x77,0x78,0x7A,0x7A,0x7D,0x82,0x8D,0x8A,0x80,0x8A,0x83,0x7D,0x89,0x8A,0x84, - 0x84,0x85,0x82,0x89,0x87,0x81,0x82,0x74,0x77,0x80,0x81,0x80,0x80,0x82,0x81,0x83, - 0x80,0x7C,0x82,0x86,0x7E,0x87,0x8A,0x89,0x89,0x7F,0x7E,0x7F,0x86,0x85,0x86,0x84, - 0x79,0x7E,0x85,0x81,0x7F,0x7D,0x77,0x7C,0x7C,0x7E,0x7F,0x7C,0x7F,0x82,0x82,0x7A, - 0x80,0x85,0x85,0x83,0x84,0x87,0x81,0x82,0x80,0x7C,0x7C,0x7F,0x7C,0x7D,0x7B,0x74, - 0x7A,0x76,0x76,0x7B,0x78,0x7A,0x7E,0x7C,0x76,0x7C,0x82,0x7F,0x83,0x82,0x85,0x83, - 0x85,0x8B,0x8A,0x90,0x8A,0x82,0x85,0x83,0x85,0x85,0x85,0x81,0x81,0x78,0x76,0x82, - 0x80,0x83,0x87,0x7D,0x7B,0x83,0x83,0x82,0x7E,0x81,0x8A,0x89,0x85,0x85,0x85,0x7D, - 0x7A,0x86,0x92,0x93,0x8F,0x86,0x79,0x7D,0x82,0x72,0x71,0x73,0x6F,0x79,0x80,0x7F, - 0x86,0x81,0x7A,0x85,0x89,0x7F,0x7E,0x7D,0x7F,0x89,0x83,0x7F,0x82,0x7F,0x7B,0x79, - 0x84,0x95,0x97,0x96,0x8C,0x76,0x76,0x80,0x7F,0x7F,0x7D,0x79,0x81,0x8A,0x89,0x86, - 0x80,0x81,0x87,0x86,0x83,0x82,0x80,0x88,0x8E,0x87,0x85,0x81,0x7D,0x7A,0x78,0x85, - 0x98,0x9C,0x95,0x8D,0x7F,0x7E,0x80,0x7A,0x75,0x75,0x78,0x83,0x8A,0x85,0x87,0x86, - 0x87,0x86,0x7F,0x79,0x79,0x7C,0x7F,0x84,0x87,0x89,0x89,0x87,0x7E,0x76,0x7F,0x9A, - 0x99,0x94,0x8D,0x7D,0x80,0x81,0x7E,0x77,0x7A,0x7E,0x88,0x88,0x79,0x81,0x88,0x86, - 0x83,0x7F,0x79,0x81,0x83,0x7C,0x80,0x80,0x80,0x7C,0x79,0x79,0x73,0x80,0x9D,0x91, - 0x84,0x8F,0x7F,0x83,0x8E,0x7A,0x79,0x7F,0x77,0x7F,0x82,0x79,0x83,0x88,0x89,0x86, - 0x82,0x83,0x80,0x83,0x7E,0x7D,0x81,0x7E,0x7F,0x80,0x7D,0x7A,0x7D,0x94,0x95,0x80, - 0x88,0x81,0x7B,0x8B,0x7C,0x6F,0x79,0x73,0x7A,0x83,0x75,0x7C,0x85,0x87,0x89,0x81, - 0x81,0x87,0x82,0x7C,0x7B,0x7C,0x85,0x80,0x7C,0x80,0x73,0x75,0x93,0x8E,0x7C,0x8C, - 0x85,0x80,0x8C,0x7A,0x71,0x7D,0x7C,0x7D,0x7E,0x70,0x7C,0x87,0x8B,0x8C,0x82,0x85, - 0x8B,0x81,0x7A,0x7E,0x7D,0x85,0x83,0x7B,0x7E,0x79,0x7C,0x99,0x93,0x7E,0x8A,0x80, - 0x82,0x89,0x73,0x71,0x7F,0x74,0x74,0x7A,0x71,0x7D,0x84,0x82,0x81,0x7D,0x84,0x8A, - 0x80,0x7B,0x7F,0x80,0x81,0x79,0x7A,0x7E,0x71,0x80,0x98,0x85,0x80,0x8D,0x7E,0x87, - 0x87,0x6D,0x75,0x7B,0x6F,0x75,0x77,0x6D,0x7F,0x7F,0x7B,0x86,0x7F,0x84,0x88,0x81, - 0x7D,0x79,0x7B,0x82,0x7A,0x7C,0x81,0x76,0x83,0x91,0x82,0x83,0x8A,0x7E,0x88,0x83, - 0x6E,0x7D,0x7D,0x71,0x7C,0x73,0x70,0x83,0x76,0x7C,0x86,0x76,0x82,0x88,0x7E,0x7D, - 0x7D,0x7D,0x7B,0x76,0x78,0x79,0x73,0x82,0x8A,0x7A,0x83,0x8B,0x7E,0x8A,0x80,0x70, - 0x7F,0x75,0x74,0x79,0x6D,0x77,0x84,0x74,0x79,0x7E,0x79,0x86,0x82,0x80,0x80,0x7C, - 0x7B,0x7C,0x7B,0x7D,0x7D,0x77,0x8B,0x8A,0x7C,0x89,0x86,0x7C,0x8A,0x7A,0x73,0x84, - 0x73,0x76,0x7E,0x72,0x7C,0x7E,0x75,0x80,0x80,0x83,0x8E,0x82,0x7D,0x85,0x81,0x7D, - 0x7E,0x79,0x7E,0x7A,0x7A,0x8C,0x7F,0x7A,0x89,0x7D,0x81,0x8B,0x7A,0x7B,0x84,0x76, - 0x7A,0x75,0x6E,0x80,0x78,0x77,0x82,0x7A,0x84,0x89,0x7B,0x83,0x87,0x7E,0x7C,0x77, - 0x78,0x7D,0x75,0x7E,0x88,0x79,0x84,0x8C,0x81,0x8A,0x88,0x79,0x84,0x7F,0x76,0x80, - 0x73,0x77,0x81,0x7C,0x7C,0x7F,0x7E,0x85,0x84,0x7C,0x89,0x86,0x84,0x82,0x7B,0x81, - 0x7A,0x79,0x85,0x83,0x7B,0x88,0x88,0x81,0x86,0x80,0x81,0x86,0x7C,0x7C,0x7C,0x72, - 0x7D,0x7C,0x75,0x7D,0x7A,0x7D,0x86,0x81,0x83,0x89,0x86,0x83,0x7D,0x7E,0x7E,0x78, - 0x81,0x88,0x80,0x82,0x86,0x7E,0x86,0x83,0x7E,0x87,0x7F,0x7C,0x7F,0x79,0x79,0x80, - 0x79,0x79,0x7D,0x7B,0x85,0x83,0x82,0x87,0x84,0x86,0x85,0x7E,0x85,0x81,0x7F,0x8A, - 0x82,0x81,0x86,0x83,0x89,0x89,0x7F,0x85,0x88,0x7E,0x84,0x7D,0x7D,0x86,0x7B,0x7A, - 0x81,0x7F,0x84,0x86,0x81,0x87,0x83,0x85,0x89,0x80,0x81,0x82,0x7F,0x89,0x88,0x7E, - 0x89,0x85,0x85,0x89,0x81,0x83,0x88,0x82,0x85,0x82,0x7A,0x82,0x7B,0x78,0x7D,0x7B, - 0x7E,0x83,0x7E,0x84,0x89,0x85,0x8A,0x84,0x84,0x84,0x7E,0x85,0x86,0x81,0x86,0x8A, - 0x84,0x8A,0x83,0x7F,0x87,0x81,0x82,0x84,0x80,0x83,0x82,0x79,0x81,0x7E,0x7C,0x83, - 0x7F,0x81,0x86,0x84,0x84,0x84,0x83,0x87,0x81,0x85,0x8A,0x80,0x83,0x84,0x80,0x84, - 0x83,0x7F,0x85,0x85,0x83,0x83,0x7F,0x81,0x7F,0x7D,0x7D,0x7F,0x7E,0x81,0x82,0x83, - 0x86,0x83,0x83,0x81,0x82,0x80,0x81,0x86,0x86,0x81,0x85,0x86,0x7F,0x86,0x82,0x80, - 0x83,0x81,0x81,0x82,0x7C,0x7E,0x82,0x7B,0x7D,0x7F,0x7E,0x81,0x7F,0x7D,0x81,0x80, - 0x82,0x85,0x80,0x85,0x83,0x88,0x8B,0x83,0x84,0x83,0x83,0x84,0x7E,0x7D,0x85,0x80, - 0x7D,0x7E,0x7D,0x7E,0x7D,0x7B,0x7C,0x81,0x7F,0x82,0x80,0x7F,0x82,0x81,0x80,0x84, - 0x83,0x82,0x89,0x84,0x85,0x86,0x84,0x83,0x87,0x84,0x7D,0x82,0x82,0x7E,0x7C,0x7F, - 0x7D,0x7D,0x7D,0x7B,0x7B,0x7D,0x82,0x80,0x82,0x8F,0x90,0x86,0x8C,0x7E,0x77,0x78, - 0x76,0x84,0x7C,0x82,0x7E,0x7C,0x87,0x6B,0x78,0x99,0x79,0x74,0x81,0x75,0x73,0x63, - 0x76,0x86,0x7C,0x82,0x79,0x72,0x72,0x75,0x78,0x76,0x75,0x7F,0x81,0x7C,0x78,0x75, - 0x79,0x78,0x7B,0x82,0x86,0x7F,0x86,0x8D,0x7F,0x77,0x86,0x91,0x87,0x84,0x83,0x7C, - 0x82,0x92,0x95,0x97,0xA9,0xA6,0x9B,0x9B,0x9C,0x94,0x86,0x8A,0x97,0x93,0x99,0x98, - 0x89,0x84,0x7D,0x7B,0x7B,0x74,0x6F,0x74,0x75,0x72,0x6B,0x64,0x64,0x64,0x6B,0x73, - 0x6C,0x6B,0x70,0x6A,0x67,0x64,0x62,0x67,0x70,0x73,0x6E,0x6D,0x6E,0x77,0x7C,0x6D, - 0x63,0x6A,0x76,0x79,0x71,0x6B,0x75,0x76,0x67,0x67,0x69,0x6D,0x70,0x68,0x73,0x80, - 0x7D,0x7F,0x82,0x8D,0x94,0xA0,0xA9,0x97,0x99,0x9A,0x96,0x9B,0x87,0x7D,0x85,0x7F, - 0x7B,0x7D,0x7F,0x8A,0x86,0x7D,0x87,0x8A,0x87,0x80,0x79,0x87,0x89,0x7F,0x83,0x88, - 0x80,0x81,0x9F,0x9B,0x91,0x9B,0x91,0x94,0x82,0x66,0x78,0x7C,0x70,0x78,0x7C,0x8E, - 0x9D,0x86,0x84,0x8B,0x82,0x7F,0x79,0x85,0x8F,0x82,0x7F,0x87,0x80,0x8F,0xAB,0x97, - 0xA2,0xAD,0x97,0x95,0x81,0x7D,0x99,0x8C,0x86,0x91,0x8C,0x98,0x8A,0x70,0x81,0x7F, - 0x68,0x6C,0x70,0x7C,0x76,0x62,0x64,0x62,0x54,0x5C,0x78,0x73,0x72,0x6E,0x60,0x61, - 0x50,0x45,0x5B,0x5E,0x5D,0x68,0x69,0x72,0x6A,0x5B,0x63,0x67,0x63,0x66,0x6E,0x7C, - 0x76,0x66,0x63,0x64,0x5D,0x6A,0x84,0x77,0x72,0x77,0x6A,0x72,0x68,0x66,0x81,0x83, - 0x8B,0x9E,0xA5,0xA8,0x9F,0x90,0x97,0x99,0x90,0x95,0x9E,0x9D,0x8F,0x87,0x86,0x88, - 0x7D,0x87,0xA2,0x9B,0x93,0x92,0x87,0x88,0x80,0x7C,0x93,0x99,0x94,0x9A,0x96,0x8D, - 0x84,0x7C,0x82,0x8B,0x8E,0x8F,0x8F,0x8D,0x82,0x77,0x7C,0x86,0x7F,0x95,0xAF,0x9C, - 0x96,0x91,0x85,0x86,0x7A,0x83,0x9B,0x96,0x94,0x97,0x92,0x92,0x87,0x86,0x98,0x99, - 0x94,0x9C,0xA2,0x96,0x89,0x87,0x8A,0x8E,0x83,0x8F,0xA8,0x93,0x81,0x7D,0x75,0x74, - 0x67,0x6E,0x7E,0x7C,0x73,0x6F,0x68,0x61,0x5B,0x57,0x66,0x6B,0x64,0x66,0x63,0x5C, - 0x57,0x56,0x61,0x5B,0x60,0x82,0x77,0x63,0x67,0x5D,0x5C,0x5A,0x5E,0x74,0x78,0x69, - 0x68,0x68,0x5F,0x5D,0x5A,0x66,0x75,0x71,0x73,0x7C,0x75,0x6F,0x79,0x82,0x90,0x99, - 0x97,0xB6,0xB8,0x95,0x99,0x97,0x8E,0x92,0x8E,0xA0,0xAC,0x96,0x8A,0x8E,0x88,0x85, - 0x85,0x8C,0x9B,0x94,0x89,0x8D,0x8B,0x87,0x87,0x89,0x8F,0x84,0x95,0xA9,0x8C,0x89, - 0x8D,0x80,0x7F,0x7C,0x86,0x9B,0x8E,0x82,0x8E,0x89,0x85,0x87,0x89,0x97,0x97,0x88, - 0x8F,0x98,0x8C,0x88,0x90,0x8F,0x96,0x95,0x8C,0xA8,0xA6,0x85,0x91,0x97,0x8F,0x92, - 0x91,0x9C,0xA4,0x8D,0x88,0x90,0x88,0x88,0x85,0x88,0x8F,0x82,0x76,0x7B,0x73,0x6C, - 0x6F,0x6C,0x6E,0x63,0x72,0x82,0x61,0x5C,0x65,0x57,0x55,0x55,0x5D,0x70,0x65,0x59, - 0x67,0x63,0x59,0x5B,0x60,0x6C,0x6C,0x61,0x67,0x6C,0x62,0x5E,0x63,0x65,0x65,0x61, - 0x61,0x7D,0x77,0x5D,0x6C,0x6F,0x66,0x6A,0x71,0x84,0x8E,0x7E,0x89,0x99,0x90,0x90, - 0x95,0x9C,0xA1,0x99,0x94,0x9B,0x93,0x8E,0x90,0x8F,0x90,0x81,0x91,0xA7,0x8A,0x82, - 0x94,0x85,0x7E,0x81,0x88,0x9A,0x8E,0x81,0x8E,0x8C,0x7D,0x80,0x86,0x8F,0x8F,0x7F, - 0x86,0x8E,0x7F,0x7B,0x87,0x89,0x8A,0x87,0x87,0xA2,0x9A,0x7F,0x8D,0x91,0x83,0x85, - 0x89,0x98,0x9A,0x86,0x8C,0x96,0x89,0x86,0x8D,0x95,0x98,0x8E,0x8E,0x97,0x8C,0x88, - 0x8D,0x8E,0x8D,0x82,0x86,0xA1,0x90,0x7B,0x8A,0x81,0x73,0x6F,0x70,0x80,0x7B,0x68, - 0x72,0x76,0x64,0x5F,0x66,0x6D,0x6C,0x63,0x66,0x6F,0x62,0x5B,0x65,0x65,0x60,0x61, - 0x5D,0x72,0x79,0x5B,0x65,0x72,0x5F,0x5A,0x62,0x6C,0x6F,0x5F,0x62,0x71,0x63,0x5C, - 0x68,0x6F,0x71,0x6D,0x73,0x7B,0x76,0x74,0x80,0x84,0x88,0x86,0x86,0xA8,0xA8,0x8B, - 0x9B,0xA1,0x8A,0x89,0x8F,0x99,0x9B,0x8A,0x8E,0x99,0x87,0x7E,0x89,0x8C,0x8A,0x88, - 0x89,0x8E,0x83,0x7E,0x86,0x85,0x80,0x84,0x7C,0x87,0x9C,0x80,0x7D,0x92,0x81,0x77, - 0x81,0x88,0x90,0x88,0x83,0x93,0x8B,0x7D,0x88,0x8D,0x8A,0x8C,0x90,0x94,0x8F,0x87, - 0x8B,0x8C,0x8B,0x8C,0x83,0x98,0xA7,0x89,0x8E,0x9C,0x88,0x81,0x84,0x8F,0x94,0x85, - 0x84,0x92,0x86,0x78,0x7F,0x84,0x81,0x7C,0x7C,0x80,0x7A,0x70,0x73,0x75,0x6E,0x6E, - 0x67,0x69,0x83,0x72,0x5D,0x73,0x6A,0x58,0x5E,0x65,0x6A,0x67,0x60,0x6A,0x6B,0x5A, - 0x5E,0x66,0x66,0x67,0x66,0x6A,0x6A,0x62,0x62,0x66,0x64,0x66,0x5F,0x66,0x82,0x72, - 0x67,0x7D,0x76,0x69,0x72,0x7C,0x87,0x87,0x84,0x92,0x97,0x8A,0x8E,0x98,0x96,0x97, - 0x97,0x9B,0x9B,0x93,0x92,0x94,0x8F,0x8C,0x8C,0x83,0x98,0xA0,0x84,0x8C,0x92,0x7E, - 0x7C,0x82,0x88,0x8C,0x81,0x82,0x8C,0x7F,0x78,0x81,0x85,0x85,0x86,0x88,0x8D,0x89, - 0x85,0x89,0x88,0x86,0x87,0x82,0x96,0xA7,0x8A,0x8E,0x9F,0x8A,0x83,0x8B,0x8F,0x94, - 0x8D,0x8C,0x9B,0x91,0x82,0x89,0x92,0x90,0x8D,0x8F,0x92,0x90,0x8B,0x8A,0x88,0x85, - 0x88,0x80,0x7D,0x98,0x8B,0x75,0x89,0x82,0x6C,0x70,0x75,0x7C,0x74,0x6D,0x84,0x74, - 0x70,0x60,0x51,0x6D,0x60,0x50,0x56,0x63,0x64,0x6A,0x74,0x72,0x6D,0x6B,0x74,0x99, - 0x9A,0x77,0x8E,0x95,0x6E,0x65,0x59,0x63,0x70,0x46,0x41,0x5F,0x4E,0x34,0x3C,0x3E, - 0x3F,0x54,0x64,0x6A,0x5D,0x64,0x7B,0x7F,0x87,0x95,0x9B,0xB9,0xD6,0xB2,0xB7,0xDA, - 0xD8,0xCC,0xA9,0xCC,0xD7,0xAF,0xC1,0xB9,0xBA,0xB9,0xA4,0x9A,0x8E,0x8C,0x96,0x82, - 0x70,0x70,0x5B,0x6E,0x6C,0x62,0x7C,0x6E,0x7F,0x7C,0x54,0x77,0x7A,0x3D,0x3E,0x55, - 0x5D,0x60,0x59,0x5C,0x63,0x5A,0x62,0x73,0x7C,0x8D,0x89,0x9C,0xB2,0xA5,0x97,0x9F, - 0xA3,0xA1,0xAE,0xBA,0xD5,0xDB,0xB3,0xBD,0xD4,0xB7,0xB1,0xAE,0xB1,0xAB,0x9B,0x9A, - 0x95,0x90,0x7A,0x70,0x7A,0x79,0x7C,0x73,0x64,0x57,0x40,0x41,0x4A,0x44,0x35,0x31, - 0x4A,0x55,0x3C,0x3D,0x65,0x57,0x4C,0x62,0x5F,0x65,0x6D,0x6A,0x74,0x70,0x5A,0x69, - 0x78,0x78,0x7E,0x79,0x80,0x99,0x9A,0xA2,0xA9,0x98,0x9D,0x96,0x8A,0xB1,0x99,0x6C, - 0x93,0x8B,0x76,0x8A,0x84,0x82,0x7B,0x6F,0x83,0x9B,0x8B,0x7F,0x78,0x72,0x82,0x76, - 0x6A,0x6B,0x67,0x6B,0x61,0x52,0x45,0x46,0x5E,0x6E,0x70,0x66,0x69,0x7D,0x7A,0x70, - 0x7F,0x7A,0x75,0x81,0x86,0x9E,0x9B,0x93,0x9C,0xA1,0xA9,0xA7,0xAF,0xB7,0xAE,0xC2, - 0xCD,0xC4,0xD0,0xBF,0xBA,0xC8,0xBD,0xB3,0xAF,0xA3,0x8B,0x7B,0x74,0x72,0x80,0x6C, - 0x69,0x87,0x7F,0x73,0x63,0x4C,0x47,0x53,0x68,0x73,0x67,0x5A,0x66,0x6E,0x66,0x61, - 0x70,0x7B,0x75,0x69,0x6E,0x78,0x7B,0x82,0x77,0x87,0x9A,0x95,0x8A,0x70,0x6D,0x7E, - 0x81,0x87,0x89,0x86,0x95,0x93,0x78,0x6C,0x75,0x74,0x79,0x84,0x7E,0x7F,0x7A,0x79, - 0x8C,0x87,0x7B,0x7C,0x7A,0x81,0x78,0x67,0x61,0x50,0x45,0x5C,0x75,0x70,0x5B,0x4F, - 0x5B,0x64,0x6C,0x70,0x70,0x72,0x78,0x84,0x7F,0x86,0x6D,0x72,0x8F,0x82,0x87,0x7F, - 0x80,0x8F,0x8E,0x89,0x86,0x89,0x85,0x7F,0x93,0x96,0x7A,0x7F,0x7B,0x7A,0x83,0x75, - 0x7F,0x84,0x88,0x8E,0xA3,0xA0,0x90,0x9F,0x9F,0xA3,0x9A,0x9D,0xA7,0xB0,0xAF,0xAF, - 0xB5,0xA5,0x9F,0xA4,0xA6,0x9B,0x93,0x90,0x90,0x91,0x83,0x8A,0x8C,0x82,0x86,0x7E, - 0x7D,0x7A,0x7A,0x7B,0x6F,0x6E,0x6A,0x74,0x7D,0x73,0x71,0x73,0x73,0x71,0x6F,0x68, - 0x65,0x64,0x60,0x6A,0x7E,0x86,0x6F,0x5E,0x65,0x6C,0x6B,0x73,0x76,0x6E,0x72,0x77, - 0x69,0x61,0x61,0x5C,0x6B,0x65,0x62,0x78,0x74,0x73,0x69,0x62,0x71,0x71,0x70,0x7B, - 0x7C,0x79,0x6D,0x6D,0x79,0x77,0x8C,0xAB,0xA3,0x99,0xA5,0xA2,0x98,0x91,0x86,0xA3, - 0xB9,0xAE,0xB2,0xAE,0xA7,0xA8,0xA8,0xA8,0x9A,0x93,0x96,0x98,0x95,0x85,0x82,0x82, - 0x7D,0x76,0x72,0x80,0x6C,0x54,0x59,0x4E,0x4D,0x54,0x50,0x5D,0x6D,0x61,0x5B,0x66, - 0x5E,0x5E,0x67,0x67,0x69,0x67,0x6B,0x6B,0x6B,0x65,0x60,0x6C,0x6F,0x75,0x8D,0x8C, - 0x86,0x8A,0x8D,0x9A,0x97,0x94,0xA1,0xB2,0xBE,0xAF,0xAE,0xAF,0xA3,0xA9,0xB1,0xB8, - 0xC1,0xB8,0xB9,0xBD,0xB0,0xAA,0x9C,0xA2,0x9C,0x94,0xA9,0x93,0x8D,0xA2,0x8A,0x79, - 0x77,0x70,0x84,0x92,0x78,0x68,0x73,0x6D,0x70,0x7B,0x6B,0x68,0x6A,0x62,0x75,0x76, - 0x65,0x5E,0x54,0x58,0x5A,0x68,0x6D,0x5F,0x64,0x67,0x65,0x60,0x5D,0x65,0x67,0x6E, - 0x66,0x62,0x6E,0x70,0x65,0x5B,0x5E,0x65,0x61,0x73,0x89,0x7D,0x6E,0x60,0x72,0x7B, - 0x82,0x8E,0x6B,0x63,0x72,0x82,0x83,0x73,0x7E,0x86,0x86,0x8B,0x86,0x84,0x89,0x82, - 0x8A,0x8D,0x8B,0x97,0x93,0x8C,0x8E,0x97,0x92,0x8E,0x8D,0x90,0xA1,0x9B,0x8D,0x91, - 0x97,0x9A,0x94,0x82,0x91,0xA3,0x9A,0x97,0x97,0xA1,0xAD,0xA5,0xA2,0xA7,0xA6,0xA5, - 0xA5,0xA9,0xB1,0xA8,0x96,0x95,0x9B,0xB6,0xC6,0xAC,0x9E,0x9A,0x94,0x96,0x85,0x70, - 0x7D,0x83,0x7A,0x74,0x6C,0x6B,0x6D,0x6B,0x65,0x63,0x68,0x6F,0x6F,0x70,0x6C,0x56, - 0x58,0x56,0x4F,0x65,0x61,0x53,0x56,0x5F,0x63,0x5A,0x4C,0x4A,0x61,0x66,0x60,0x5F, - 0x4E,0x4E,0x5B,0x5B,0x62,0x6A,0x6B,0x6B,0x69,0x70,0x76,0x67,0x62,0x61,0x67,0x7D, - 0x79,0x6C,0x65,0x6B,0x76,0x76,0x71,0x77,0x8C,0x91,0x82,0x78,0x7E,0x86,0x92,0x99, - 0x95,0x98,0x9D,0x98,0x9C,0xA7,0xA3,0x9A,0x95,0x94,0xA5,0xAC,0x9A,0x8F,0x8B,0x92, - 0xA0,0x9A,0x91,0x8D,0x9C,0xAB,0xA0,0x98,0x94,0x97,0x9A,0x97,0x94,0x8E,0x94,0x9C, - 0x97,0x98,0x9B,0x9B,0x9B,0x8E,0x98,0x9F,0x8D,0x83,0x7E,0x79,0x80,0x7D,0x74,0x79, - 0x80,0x84,0x83,0x79,0x76,0x73,0x6E,0x6E,0x70,0x6C,0x66,0x6C,0x6B,0x64,0x62,0x62, - 0x69,0x68,0x75,0x75,0x68,0x68,0x63,0x65,0x61,0x60,0x5E,0x5D,0x69,0x6E,0x6C,0x6C, - 0x6C,0x75,0x7C,0x75,0x71,0x68,0x64,0x66,0x66,0x65,0x5A,0x59,0x5F,0x62,0x68,0x6F, - 0x6C,0x69,0x74,0x76,0x6D,0x6A,0x6E,0x6E,0x74,0x7D,0x7D,0x86,0x87,0x8C,0x90,0x83, - 0x87,0x87,0x89,0x8F,0x8E,0x97,0x8F,0x87,0x98,0x9F,0xA1,0xA7,0xA2,0x9F,0xAA,0xAF, - 0xA4,0xA2,0xA6,0xA4,0xAC,0xAC,0xA0,0x9C,0xA0,0xA6,0xA2,0x98,0x93,0x98,0x97,0x97, - 0x9A,0x8E,0x90,0x92,0x90,0x8F,0x8E,0x8F,0x8F,0x91,0x8D,0x94,0x91,0x8D,0x92,0x89, - 0x88,0x8E,0x87,0x85,0x87,0x83,0x7E,0x7B,0x7C,0x7F,0x7F,0x80,0x7E,0x7F,0x82,0x82, - 0x7E,0x74,0x73,0x6F,0x6E,0x75,0x72,0x70,0x69,0x70,0x73,0x66,0x72,0x71,0x67,0x66, - 0x62,0x61,0x55,0x56,0x56,0x50,0x59,0x5B,0x5C,0x5C,0x61,0x64,0x61,0x67,0x63,0x67, - 0x6F,0x6D,0x6F,0x6B,0x63,0x6A,0x71,0x6F,0x71,0x6A,0x69,0x70,0x72,0x76,0x72,0x6C, - 0x6F,0x72,0x71,0x70,0x6B,0x68,0x6E,0x77,0x7C,0x7F,0x83,0x85,0x8B,0x91,0x8F,0x8E, - 0x90,0x8D,0x92,0x98,0x93,0x8F,0x8F,0x90,0x93,0x91,0x91,0x92,0x8D,0x8F,0x9A,0x9A, - 0x91,0x91,0x98,0x97,0x9F,0xA5,0x9D,0x9D,0xA0,0xA5,0xAB,0xA6,0xA3,0xA6,0xA2,0xA3, - 0xA7,0xA1,0x9D,0x9A,0x92,0x94,0x96,0x93,0x95,0x94,0x96,0x95,0x92,0x94,0x8E,0x92, - 0x94,0x93,0x93,0x91,0x90,0x8F,0x91,0x8D,0x8A,0x89,0x8A,0x8E,0x8B,0x89,0x87,0x80, - 0x7C,0x7B,0x7D,0x7E,0x75,0x74,0x74,0x71,0x72,0x6B,0x69,0x6C,0x6F,0x6E,0x71,0x70, - 0x6A,0x70,0x6F,0x6D,0x6F,0x6F,0x6F,0x6D,0x6D,0x6A,0x66,0x72,0x71,0x63,0x65,0x68, - 0x64,0x62,0x63,0x5E,0x59,0x64,0x66,0x63,0x6C,0x64,0x5D,0x67,0x64,0x65,0x69,0x61, - 0x64,0x67,0x6C,0x72,0x72,0x72,0x71,0x78,0x7D,0x7D,0x78,0x76,0x77,0x7A,0x7D,0x79, - 0x77,0x78,0x79,0x84,0x82,0x7E,0x82,0x83,0x8D,0x90,0x8A,0x8E,0x8C,0x88,0x91,0x8D, - 0x8A,0x8F,0x8A,0x8E,0x95,0x92,0x8F,0x8D,0x91,0x99,0x9E,0x98,0x96,0x96,0x94,0x9A, - 0x97,0x9A,0x99,0x95,0x9B,0x98,0x99,0x95,0x8B,0x8E,0x92,0x97,0x98,0x8F,0x8F,0x90, - 0x8B,0x8F,0x8C,0x88,0x8C,0x88,0x8E,0x8C,0x84,0x85,0x85,0x8B,0x87,0x8C,0x8E,0x8B, - 0x8E,0x8A,0x8E,0x8B,0x88,0x8D,0x8C,0x88,0x89,0x86,0x80,0x81,0x80,0x7D,0x7C,0x7B, - 0x7C,0x7D,0x7C,0x75,0x77,0x78,0x75,0x77,0x74,0x78,0x7D,0x7A,0x76,0x79,0x78,0x73, - 0x79,0x78,0x75,0x73,0x73,0x73,0x72,0x74,0x75,0x75,0x74,0x78,0x7B,0x78,0x77,0x74, - 0x72,0x75,0x7A,0x7C,0x74,0x72,0x73,0x77,0x78,0x74,0x72,0x73,0x77,0x7A,0x78,0x76, - 0x76,0x74,0x76,0x77,0x74,0x73,0x77,0x76,0x77,0x78,0x74,0x74,0x6F,0x74,0x7A,0x7B, - 0x7C,0x78,0x7B,0x7E,0x82,0x82,0x7D,0x7B,0x7F,0x86,0x85,0x80,0x7D,0x7D,0x80,0x82, - 0x81,0x7E,0x7F,0x80,0x7F,0x7F,0x7E,0x7E,0x7D,0x7F,0x82,0x82,0x81,0x7C,0x7C,0x7F, - 0x80,0x7F,0x81,0x7D,0x7A,0x82,0x82,0x83,0x82,0x7E,0x81,0x81,0x7F,0x80,0x81,0x82, - 0x84,0x83,0x84,0x86,0x84,0x83,0x82,0x7F,0x80,0x81,0x82,0x86,0x84,0x84,0x85,0x86, - 0x87,0x86,0x85,0x83,0x84,0x83,0x84,0x84,0x80,0x80,0x82,0x84,0x84,0x82,0x7F,0x7F, - 0x83,0x83,0x82,0x81,0x82,0x83,0x81,0x83,0x82,0x83,0x83,0x84,0x88,0x86,0x86,0x86, - 0x85,0x87,0x88,0x86,0x86,0x84,0x83,0x84,0x85,0x83,0x7F,0x80,0x81,0x82,0x82,0x7E, - 0x7D,0x7E,0x7C,0x80,0x81,0x7F,0x7E,0x7D,0x82,0x87,0x84,0x83,0x82,0x81,0x85,0x85, - 0x81,0x81,0x81,0x82,0x84,0x82,0x7F,0x81,0x83,0x7F,0x7F,0x7E,0x80,0x7F,0x7F,0x7F, - 0x7F,0x7F,0x7D,0x7E,0x80,0x80,0x7F,0x7E,0x7E,0x7C,0x7D,0x7D,0x7B,0x7C,0x7D,0x7E, - 0x81,0x80,0x7C,0x7C,0x81,0x81,0x7F,0x81,0x7E,0x7D,0x81,0x80,0x7E,0x81,0x80,0x80, - 0x84,0x81,0x80,0x84,0x83,0x84,0x81,0x7E,0x81,0x81,0x7F,0x7E,0x7F,0x7E,0x7E,0x7E, - 0x7D,0x7F,0x7D,0x7A,0x7F,0x7E,0x80,0x7F,0x79,0x7D,0x7E,0x7F,0x82,0x7F,0x81,0x83, - 0x82,0x84,0x80,0x80,0x81,0x82,0x83,0x82,0x84,0x83,0x83,0x81,0x7E,0x7F,0x80,0x7E, - 0x7D,0x7D,0x7B,0x7A,0x79,0x7B,0x7B,0x7D,0x7F,0x7B,0x7D,0x7E,0x81,0x80,0x7E,0x7E, - 0x81,0x80,0x81,0x83,0x80,0x80,0x80,0x83,0x80,0x81,0x82,0x7F,0x81,0x81,0x80,0x81, - 0x80,0x7F,0x80,0x80,0x7F,0x80,0x7E,0x81,0x83,0x7F,0x7E,0x7E,0x81,0x80,0x7F,0x83, - 0x81,0x81,0x81,0x82,0x80,0x7D,0x7F,0x80,0x81,0x81,0x80,0x80,0x7F,0x7F,0x80,0x82, - 0x81,0x80,0x81,0x82,0x81,0x80,0x80,0x7F,0x81,0x80,0x81,0x80,0x80,0x80,0x7E,0x80, - 0x7E,0x7D,0x7F,0x7E,0x7E,0x7E,0x7C,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x83,0x84, - 0x80,0x82,0x82,0x81,0x84,0x84,0x84,0x83,0x82,0x82,0x87,0x85,0x81,0x82,0x81,0x83, - 0x80,0x81,0x80,0x7E,0x81,0x7E,0x80,0x7F,0x7F,0x81,0x7F,0x80,0x80,0x80,0x80,0x81, - 0x82,0x82,0x80,0x83,0x84,0x82,0x82,0x82,0x80,0x81,0x84,0x81,0x83,0x82,0x7F,0x84, - 0x81,0x82,0x84,0x80,0x81,0x84,0x83,0x81,0x83,0x81,0x7F,0x80,0x80,0x7F,0x80,0x7C, - 0x80,0x7E,0x7E,0x81,0x7B,0x7D,0x7F,0x7D,0x7F,0x7F,0x7E,0x80,0x80,0x80,0x81,0x7F, - 0x7E,0x82,0x83,0x81,0x81,0x80,0x81,0x82,0x80,0x82,0x81,0x80,0x82,0x81,0x7E,0x80, - 0x7E,0x7D,0x80,0x7F,0x7B,0x7D,0x7F,0x7D,0x7E,0x7F,0x7D,0x7F,0x80,0x80,0x81,0x80, - 0x81,0x81,0x82,0x82,0x81,0x82,0x82,0x81,0x83,0x83,0x82,0x82,0x84,0x81,0x80,0x84, - 0x82,0x83,0x83,0x81,0x7F,0x80,0x80,0x7F,0x81,0x81,0x7F,0x7F,0x7F,0x7E,0x80,0x7D, - 0x7E,0x7C,0x7E,0x7F,0x7F,0x81,0x7D,0x7E,0x82,0x82,0x81,0x82,0x81,0x81,0x83,0x83, - 0x82,0x81,0x82,0x80,0x81,0x83,0x80,0x7F,0x81,0x81,0x81,0x81,0x7F,0x80,0x7E,0x7F, - 0x7E,0x7D,0x7F,0x7C,0x7E,0x7E,0x7D,0x7D,0x7D,0x7F,0x7D,0x7D,0x7E,0x7E,0x7D,0x7E, - 0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7F,0x80,0x82,0x80,0x82,0x83,0x83,0x82,0x80,0x84, - 0x82,0x81,0x82,0x80,0x7F,0x81,0x7F,0x7E,0x80,0x7E,0x7C,0x7F,0x80,0x7C,0x7E,0x7E, - 0x7D,0x7F,0x7D,0x7D,0x7E,0x7F,0x7E,0x80,0x80,0x7C,0x7F,0x81,0x81,0x7E,0x7F,0x81, - 0x7F,0x80,0x80,0x7F,0x80,0x80,0x81,0x80,0x81,0x7E,0x7D,0x81,0x7E,0x81,0x80,0x7F, - 0x80,0x7C,0x7B,0x7F,0x7D,0x7C,0x7F,0x7D,0x7F,0x82,0x7C,0x7E,0x7C,0x80,0x83,0x7F, - 0x80,0x7F,0x80,0x7F,0x7D,0x81,0x81,0x81,0x80,0x82,0x81,0x88,0x8B,0x90,0x93,0x81, - 0x7A,0x76,0x77,0x78,0x77,0x78,0x7E,0x6F,0x70,0x8F,0x78,0x72,0x83,0x7B,0x6F,0x6E, - 0x81,0x77,0x73,0x7A,0x77,0x79,0x84,0x87,0x83,0x8B,0x8D,0x88,0x82,0x83,0x8F,0x89, - 0x87,0x86,0x79,0x7D,0x86,0x86,0x88,0x9B,0x9C,0x92,0x92,0x80,0x82,0x93,0x8D,0x96, - 0x97,0x88,0x8D,0x93,0x8B,0x80,0x84,0x89,0x8C,0x90,0x84,0x7B,0x77,0x76,0x6F,0x63, - 0x6D,0x6E,0x70,0x70,0x6A,0x6D,0x6C,0x6F,0x72,0x75,0x6B,0x66,0x6A,0x69,0x6B,0x73, - 0x74,0x6C,0x67,0x6A,0x6F,0x6C,0x67,0x69,0x70,0x72,0x66,0x65,0x6D,0x71,0x6F,0x6D, - 0x74,0x77,0x73,0x74,0x82,0x87,0x8B,0xA4,0xB7,0xB2,0x9C,0x97,0x99,0x92,0x8F,0x8E, - 0x8E,0x8D,0x89,0x89,0x90,0x8B,0x80,0x81,0x89,0x85,0x7D,0x85,0x83,0x82,0x86,0x81, - 0x85,0x85,0x83,0x86,0x8B,0x89,0x87,0x93,0x92,0x8E,0x96,0x92,0x91,0x97,0x95,0x95, - 0x99,0x91,0x8C,0x91,0x95,0x95,0x98,0xA0,0x9B,0x9C,0x9C,0x8D,0x8C,0x91,0x93,0x92, - 0x92,0x93,0x92,0x8D,0x8B,0x8B,0x89,0x87,0x83,0x7D,0x7C,0x74,0x6E,0x70,0x6E,0x6A, - 0x69,0x68,0x65,0x60,0x61,0x64,0x62,0x5D,0x64,0x63,0x60,0x64,0x5F,0x62,0x66,0x64, - 0x66,0x66,0x63,0x62,0x62,0x65,0x62,0x5E,0x65,0x67,0x66,0x66,0x68,0x66,0x6D,0x6A, - 0x61,0x6F,0x75,0x75,0x7C,0x83,0x8E,0x9C,0xA3,0xA2,0x98,0x95,0x91,0x86,0x8A,0x87, - 0x88,0x93,0x94,0x8C,0x8C,0x88,0x80,0x82,0x7F,0x7A,0x80,0x80,0x80,0x81,0x81,0x89, - 0x8B,0x87,0x8C,0x90,0x91,0x97,0x9A,0x9F,0x9F,0x96,0x95,0x9D,0xA6,0xA4,0x9E,0xA2, - 0xA4,0xA3,0x95,0x8F,0x97,0x95,0x91,0x90,0x8F,0x98,0x99,0x92,0x96,0x9B,0x9E,0x95, - 0x92,0x96,0x98,0x95,0x8C,0x84,0x8C,0x99,0x8E,0x89,0x84,0x83,0x84,0x6E,0x5B,0x62, - 0x65,0x54,0x58,0x5F,0x67,0x67,0x5F,0x66,0x6C,0x6F,0x69,0x67,0x68,0x68,0x62,0x5C, - 0x5C,0x6D,0x79,0x6C,0x6D,0x6F,0x71,0x74,0x62,0x56,0x60,0x60,0x57,0x55,0x62,0x6E, - 0x72,0x73,0x7B,0x89,0x8A,0x8C,0x95,0x9D,0x9A,0x98,0x95,0x8E,0x9E,0xAA,0x9D,0x99, - 0x9D,0x97,0x90,0x7E,0x76,0x7F,0x78,0x71,0x75,0x7C,0x87,0x88,0x80,0x87,0x96,0x8F, - 0x86,0x8C,0x89,0x8A,0x8C,0x8C,0x87,0x8E,0xA9,0xA4,0x99,0xA3,0xAB,0xA2,0x94,0x8C, - 0x8E,0x92,0x86,0x85,0x91,0x97,0x99,0x98,0x9C,0xA0,0x96,0x8A,0x8D,0x8B,0x86,0x8A, - 0x8A,0x86,0x81,0x9D,0xA7,0x8D,0x8F,0x94,0x8A,0x79,0x6A,0x6D,0x73,0x67,0x5C,0x66, - 0x72,0x6D,0x65,0x6A,0x70,0x68,0x58,0x5F,0x64,0x59,0x58,0x60,0x5C,0x4B,0x67,0x7A, - 0x63,0x69,0x72,0x6A,0x5D,0x4F,0x55,0x60,0x58,0x52,0x65,0x74,0x72,0x68,0x71,0x7C, - 0x6F,0x68,0x71,0x80,0x80,0x82,0x94,0x9B,0x8F,0xA2,0xB9,0xA0,0x9A,0xA5,0x98,0x87, - 0x75,0x77,0x81,0x7B,0x73,0x7D,0x89,0x88,0x7D,0x7D,0x8A,0x7F,0x71,0x7C,0x83,0x80, - 0x80,0x84,0x87,0x7F,0x91,0xAA,0x99,0x94,0xA4,0x9C,0x8F,0x83,0x89,0x95,0x8B,0x84, - 0x90,0x9E,0x98,0x8E,0x90,0x96,0x8B,0x81,0x8B,0x93,0x8E,0x8A,0x8A,0x89,0x83,0x90, - 0xA5,0x95,0x92,0x9C,0x92,0x86,0x76,0x7A,0x85,0x75,0x69,0x77,0x7F,0x7D,0x6D,0x6C, - 0x76,0x6A,0x5A,0x63,0x6B,0x64,0x61,0x5E,0x60,0x5B,0x66,0x76,0x69,0x67,0x6F,0x65, - 0x58,0x51,0x50,0x5D,0x5B,0x53,0x67,0x70,0x6A,0x63,0x62,0x6C,0x67,0x58,0x66,0x73, - 0x6E,0x70,0x79,0x82,0x81,0x93,0xA9,0xA0,0xA4,0xAB,0xA0,0x92,0x8A,0x89,0x8E,0x86, - 0x7F,0x88,0x8F,0x89,0x7F,0x7C,0x82,0x7D,0x6A,0x77,0x82,0x7A,0x78,0x79,0x7E,0x77, - 0x81,0x9B,0x90,0x89,0x9C,0x94,0x88,0x80,0x85,0x91,0x89,0x85,0x94,0xA0,0x9C,0x99, - 0x94,0x95,0x96,0x82,0x84,0x93,0x8C,0x88,0x8A,0x90,0x88,0x85,0xA7,0x9F,0x89,0x9E, - 0x98,0x85,0x7F,0x7C,0x88,0x84,0x7B,0x83,0x8A,0x87,0x7C,0x73,0x76,0x77,0x62,0x61, - 0x74,0x6D,0x6A,0x6B,0x69,0x65,0x5C,0x74,0x7F,0x65,0x6D,0x74,0x64,0x58,0x51,0x61, - 0x63,0x56,0x61,0x70,0x6E,0x69,0x67,0x68,0x6D,0x61,0x59,0x6B,0x6E,0x68,0x6E,0x74, - 0x73,0x6E,0x89,0xA3,0x91,0x99,0xAF,0xA5,0x96,0x8D,0x94,0x99,0x8C,0x89,0x9E,0x9F, - 0x8F,0x8C,0x90,0x8C,0x7B,0x73,0x7F,0x81,0x79,0x7C,0x7E,0x7D,0x75,0x81,0x9C,0x8A, - 0x83,0x97,0x93,0x7F,0x74,0x7F,0x8A,0x7F,0x7C,0x96,0x9E,0x92,0x92,0x98,0x9D,0x8F, - 0x82,0x8E,0x94,0x8E,0x8B,0x90,0x8E,0x86,0x8C,0xA9,0xA1,0x90,0xA5,0xA2,0x8F,0x7F, - 0x7F,0x8C,0x83,0x77,0x8A,0x99,0x8A,0x84,0x82,0x87,0x7A,0x66,0x6E,0x75,0x71,0x6F, - 0x72,0x6D,0x65,0x63,0x7C,0x82,0x69,0x74,0x79,0x68,0x5C,0x53,0x62,0x66,0x54,0x61, - 0x75,0x73,0x6D,0x68,0x6E,0x6A,0x5C,0x5C,0x69,0x6A,0x6C,0x71,0x6E,0x6E,0x6A,0x7E, - 0x99,0x8B,0x8E,0xA2,0x9B,0x93,0x89,0x93,0xA0,0x93,0x92,0xA4,0xA7,0x9D,0x97,0x95, - 0x93,0x84,0x7C,0x83,0x82,0x80,0x80,0x7E,0x78,0x72,0x7A,0x96,0x90,0x83,0x93,0x93, - 0x81,0x74,0x73,0x83,0x80,0x77,0x89,0x96,0x96,0x90,0x93,0x9A,0x8F,0x84,0x87,0x8F, - 0x8A,0x8B,0x8F,0x8C,0x85,0x82,0x9C,0xA9,0x94,0x99,0xA4,0x96,0x88,0x7D,0x88,0x8E, - 0x7E,0x82,0x94,0x96,0x8E,0x87,0x89,0x89,0x79,0x75,0x79,0x7A,0x78,0x78,0x79,0x72, - 0x67,0x6E,0x89,0x7F,0x6F,0x7B,0x7A,0x6A,0x5B,0x58,0x69,0x64,0x58,0x69,0x72,0x73, - 0x6B,0x69,0x72,0x68,0x5D,0x5E,0x67,0x6D,0x6C,0x6C,0x6C,0x69,0x64,0x7C,0x92,0x85, - 0x8B,0x94,0x8E,0x8B,0x7E,0x8A,0x9A,0x8D,0x8D,0x9F,0xA2,0x9F,0x97,0x93,0x98,0x8A, - 0x7E,0x7D,0x85,0x86,0x7F,0x7B,0x7C,0x75,0x71,0x8D,0x91,0x85,0x8E,0x8B,0x82,0x78, - 0x68,0x7A,0x80,0x72,0x80,0x8C,0x93,0x90,0x86,0x8D,0x8F,0x84,0x7E,0x83,0x8A,0x8D, - 0x89,0x85,0x88,0x82,0x87,0xA5,0x9B,0x94,0xA4,0x9A,0x93,0x7E,0x7A,0x8D,0x83,0x7A, - 0x88,0x8F,0x98,0x91,0x81,0x88,0x85,0x7A,0x72,0x73,0x79,0x7A,0x73,0x6B,0x6A,0x62, - 0x75,0x8A,0x74,0x79,0x80,0x71,0x6E,0x55,0x59,0x6A,0x5A,0x5E,0x68,0x6A,0x76,0x71, - 0x63,0x70,0x6D,0x65,0x5E,0x5F,0x6C,0x6B,0x66,0x65,0x69,0x67,0x83,0x8F,0x7E,0x8F, - 0x92,0x8E,0x8E,0x7A,0x86,0x96,0x88,0x8F,0x91,0x95,0xA4,0x97,0x8C,0x95,0x93,0x89, - 0x7E,0x7A,0x84,0x7C,0x75,0x71,0x71,0x70,0x87,0x90,0x7C,0x8A,0x84,0x85,0x84,0x66, - 0x72,0x7F,0x71,0x77,0x77,0x7D,0x95,0x89,0x85,0x91,0x90,0x8E,0x85,0x80,0x86,0x85, - 0x80,0x86,0x89,0x82,0x90,0xA0,0x91,0x95,0x92,0x8A,0x9A,0x8C,0x7E,0x89,0x87,0x84, - 0x86,0x7B,0x86,0x8C,0x7D,0x84,0x7F,0x7B,0x84,0x7C,0x74,0x7B,0x79,0x76,0x78,0x72, - 0x72,0x75,0x77,0x71,0x6E,0x6E,0x6E,0x6F,0x6B,0x6C,0x6D,0x6C,0x6E,0x70,0x69,0x6A, - 0x69,0x67,0x68,0x68,0x68,0x6A,0x6D,0x6E,0x71,0x71,0x77,0x79,0x7C,0x7F,0x81,0x89, - 0x8B,0x8B,0x8C,0x90,0x9A,0x9A,0x95,0x9A,0x95,0x97,0x98,0x90,0x8F,0x8E,0x8A,0x86, - 0x85,0x7C,0x80,0x7D,0x7A,0x7A,0x75,0x7C,0x78,0x77,0x79,0x79,0x79,0x7C,0x77,0x79, - 0x7F,0x79,0x81,0x88,0x84,0x85,0x86,0x87,0x8B,0x84,0x81,0x88,0x86,0x85,0x83,0x82, - 0x8C,0x8C,0x88,0x8C,0x8E,0x8B,0x8C,0x8C,0x88,0x88,0x84,0x91,0x8D,0x82,0x89,0x81, - 0x8A,0x8E,0x7F,0x82,0x85,0x81,0x82,0x79,0x75,0x7C,0x79,0x79,0x77,0x72,0x7C,0x7E, - 0x78,0x7D,0x7B,0x79,0x7B,0x74,0x79,0x78,0x76,0x86,0x7B,0x76,0x7A,0x73,0x83,0x81, - 0x72,0x79,0x7A,0x7B,0x7C,0x73,0x79,0x82,0x7C,0x7F,0x82,0x7B,0x87,0x8B,0x84,0x88, - 0x88,0x88,0x88,0x85,0x82,0x86,0x95,0x8F,0x84,0x8B,0x82,0x8B,0x91,0x7A,0x7E,0x7D, - 0x7B,0x82,0x72,0x73,0x80,0x79,0x7C,0x79,0x72,0x80,0x80,0x75,0x78,0x7A,0x79,0x79, - 0x78,0x72,0x76,0x92,0x89,0x7C,0x86,0x7E,0x90,0x90,0x71,0x7C,0x80,0x7D,0x87,0x75, - 0x7A,0x8E,0x89,0x8B,0x85,0x86,0x8F,0x91,0x85,0x7C,0x87,0x88,0x7F,0x79,0x76,0x94, - 0xA3,0x8A,0x92,0x8F,0x8D,0x9B,0x7A,0x70,0x7E,0x7B,0x82,0x7C,0x78,0x89,0x94,0x8F, - 0x81,0x80,0x82,0x86,0x7E,0x71,0x7C,0x81,0x78,0x75,0x76,0x92,0x9A,0x8A,0x8E,0x81, - 0x85,0x8E,0x72,0x6D,0x75,0x7A,0x84,0x80,0x7E,0x86,0x92,0x8F,0x84,0x84,0x7F,0x84, - 0x87,0x7F,0x82,0x80,0x7A,0x79,0x8D,0x9F,0x8F,0x93,0x8F,0x7D,0x8B,0x7D,0x6D,0x73, - 0x73,0x78,0x7D,0x7E,0x79,0x82,0x86,0x79,0x7D,0x75,0x6D,0x79,0x75,0x74,0x76,0x6F, - 0x6A,0x77,0x93,0x8C,0x87,0x8A,0x78,0x7F,0x7F,0x73,0x72,0x72,0x79,0x80,0x88,0x83, - 0x81,0x87,0x81,0x82,0x83,0x7A,0x7E,0x81,0x80,0x81,0x7B,0x76,0x77,0x8C,0x98,0x91, - 0x8E,0x7F,0x7A,0x82,0x80,0x7D,0x78,0x75,0x78,0x82,0x88,0x85,0x83,0x7D,0x7C,0x83, - 0x80,0x7B,0x7C,0x79,0x7B,0x7C,0x79,0x75,0x78,0x8A,0x8F,0x93,0x8F,0x7B,0x78,0x79, - 0x77,0x7E,0x7F,0x7A,0x79,0x80,0x83,0x88,0x8C,0x84,0x81,0x83,0x7F,0x83,0x86,0x7F, - 0x81,0x7E,0x7A,0x7C,0x87,0x90,0x91,0x93,0x89,0x7E,0x7C,0x7A,0x7A,0x7B,0x7B,0x77, - 0x78,0x7C,0x7D,0x83,0x84,0x80,0x7E,0x7B,0x79,0x7C,0x7A,0x79,0x79,0x76,0x74,0x73, - 0x7E,0x88,0x8C,0x8D,0x85,0x7D,0x79,0x76,0x76,0x7A,0x7C,0x78,0x7B,0x7D,0x7B,0x83, - 0x85,0x84,0x85,0x82,0x80,0x7F,0x7D,0x7F,0x80,0x7F,0x7D,0x7A,0x80,0x8B,0x90,0x92, - 0x8E,0x85,0x7F,0x7A,0x76,0x7C,0x80,0x7D,0x81,0x7D,0x7A,0x81,0x80,0x80,0x85,0x83, - 0x80,0x7F,0x7A,0x7A,0x7E,0x7C,0x7B,0x7B,0x7F,0x85,0x89,0x8C,0x89,0x82,0x7F,0x7A, - 0x75,0x7B,0x7B,0x7C,0x82,0x7E,0x7F,0x82,0x7E,0x80,0x84,0x83,0x83,0x82,0x7D,0x7E, - 0x7E,0x7C,0x7D,0x7E,0x83,0x89,0x8A,0x8C,0x86,0x82,0x80,0x79,0x77,0x7C,0x7A,0x7B, - 0x7F,0x79,0x7C,0x7E,0x79,0x7D,0x80,0x7E,0x80,0x7F,0x79,0x79,0x79,0x78,0x78,0x7A, - 0x81,0x84,0x85,0x89,0x84,0x7E,0x80,0x7A,0x78,0x7E,0x7A,0x7B,0x7E,0x7A,0x7D,0x7D, - 0x7C,0x81,0x82,0x81,0x82,0x80,0x7E,0x7F,0x7D,0x7E,0x7D,0x7F,0x87,0x87,0x89,0x8A, - 0x83,0x82,0x82,0x7D,0x7F,0x83,0x7E,0x81,0x7F,0x7B,0x7F,0x7C,0x7C,0x81,0x7F,0x81, - 0x83,0x7D,0x7D,0x7F,0x7D,0x7E,0x7C,0x7F,0x84,0x85,0x87,0x86,0x80,0x81,0x7F,0x7C, - 0x81,0x80,0x7F,0x83,0x7D,0x7C,0x80,0x7C,0x7E,0x82,0x7F,0x82,0x83,0x7D,0x80,0x81, - 0x7F,0x80,0x7F,0x84,0x86,0x87,0x8B,0x84,0x80,0x85,0x7F,0x7D,0x84,0x7F,0x80,0x84, - 0x7B,0x7C,0x7F,0x79,0x7C,0x7E,0x7D,0x81,0x7E,0x7C,0x7F,0x7E,0x7E,0x7C,0x7E,0x85, - 0x84,0x87,0x89,0x80,0x82,0x84,0x7D,0x81,0x82,0x7E,0x84,0x82,0x7D,0x80,0x7D,0x7B, - 0x7F,0x7C,0x81,0x7E,0x8A,0x8F,0x7B,0x8A,0x6D,0x67,0x86,0x78,0x6A,0x79,0x84,0x84, - 0x90,0x8C,0x8C,0x8E,0x8F,0xA0,0xA7,0x9A,0x95,0x96,0x8C,0x88,0x89,0x85,0x7D,0x6F, - 0x63,0x5D,0x56,0x55,0x55,0x53,0x5F,0x68,0x6F,0x74,0x75,0x7A,0x7D,0x7D,0x82,0x8A, - 0x86,0x8D,0x93,0x8B,0x91,0x9B,0xA0,0xAC,0xB9,0xB6,0xBB,0xBB,0xAF,0xAB,0xA3,0x9B, - 0x96,0x93,0x92,0x8F,0x8D,0x86,0x7D,0x7E,0x76,0x6F,0x74,0x6E,0x6B,0x6F,0x67,0x60, - 0x58,0x49,0x45,0x43,0x40,0x40,0x44,0x4A,0x4F,0x56,0x5D,0x64,0x6B,0x76,0x80,0x84, - 0x89,0x8C,0x8D,0x90,0x8F,0x95,0x98,0x9A,0xA6,0xAF,0xB3,0xB9,0xB9,0xB4,0xB7,0xB6, - 0xB5,0xAE,0xA7,0xA4,0x99,0x95,0x8F,0x85,0x8A,0x88,0x86,0x87,0x7F,0x73,0x6D,0x61, - 0x54,0x54,0x4F,0x4D,0x4B,0x46,0x49,0x4F,0x55,0x5A,0x5E,0x67,0x71,0x73,0x74,0x78, - 0x7D,0x81,0x7F,0x86,0x92,0x96,0x9F,0xA4,0xA1,0xA8,0xAA,0xA6,0xAF,0xB2,0xB0,0xB4, - 0xAD,0xA5,0xA2,0x9A,0x92,0x8D,0x86,0x83,0x81,0x7A,0x77,0x72,0x6E,0x6A,0x6D,0x75, - 0x7A,0x7C,0x73,0x6C,0x68,0x5D,0x52,0x4E,0x49,0x45,0x4B,0x3C,0x32,0x44,0x4E,0x59, - 0x66,0x69,0x6B,0x72,0x77,0x77,0x7B,0x79,0x7A,0x87,0x94,0x9F,0xA8,0xAC,0xA6,0xAC, - 0xB1,0xAD,0xB1,0xB4,0xBA,0xBC,0xBE,0xC0,0xBF,0xBF,0xBC,0xB6,0xAC,0xA3,0x9A,0x8D, - 0x81,0x77,0x6C,0x62,0x5B,0x63,0x66,0x63,0x63,0x52,0x49,0x4B,0x3D,0x3F,0x45,0x4C, - 0x57,0x56,0x57,0x5A,0x5F,0x62,0x66,0x6A,0x71,0x77,0x78,0x7F,0x88,0x8D,0x8E,0x94, - 0x9D,0xA3,0xA5,0xA6,0xA1,0x9C,0x98,0x91,0x94,0x94,0x98,0x9F,0x9B,0x9A,0x9E,0x9A, - 0x9C,0x9D,0x95,0x93,0x8F,0x8A,0x86,0x81,0x7B,0x7B,0x85,0x87,0x88,0x8A,0x84,0x76, - 0x6E,0x66,0x62,0x65,0x62,0x68,0x6D,0x65,0x65,0x63,0x5F,0x63,0x63,0x5F,0x60,0x61, - 0x62,0x61,0x60,0x63,0x68,0x70,0x76,0x79,0x7C,0x79,0x79,0x76,0x74,0x7D,0x83,0x85, - 0x87,0x82,0x85,0x88,0x86,0x8F,0x96,0x92,0x92,0x93,0x90,0x94,0x96,0x97,0x9F,0xA8, - 0xAB,0xB0,0xB1,0xA8,0x9D,0x98,0x96,0x98,0x9A,0x99,0x98,0x8F,0x88,0x89,0x8A,0x88, - 0x89,0x83,0x7B,0x76,0x72,0x71,0x6A,0x62,0x69,0x6F,0x72,0x74,0x6D,0x61,0x57,0x53, - 0x55,0x5B,0x60,0x5F,0x5B,0x56,0x55,0x58,0x5A,0x5E,0x60,0x60,0x63,0x67,0x6C,0x71, - 0x71,0x74,0x82,0x90,0x9C,0xA3,0x9F,0x95,0x91,0x94,0x9E,0xAE,0xB1,0xAD,0xA9,0xA3, - 0xA5,0xA8,0xA8,0xA4,0x9F,0x9C,0x9D,0x9E,0x9B,0x95,0x8A,0x8A,0x93,0x99,0x9C,0x96, - 0x88,0x7F,0x7D,0x7D,0x85,0x89,0x83,0x7F,0x7A,0x77,0x7C,0x7D,0x78,0x72,0x6F,0x72, - 0x79,0x79,0x74,0x6D,0x68,0x71,0x7D,0x81,0x7D,0x70,0x62,0x61,0x6A,0x6D,0x70,0x69, - 0x60,0x63,0x68,0x6D,0x6E,0x67,0x60,0x63,0x69,0x70,0x73,0x6A,0x62,0x5F,0x6B,0x80, - 0x86,0x84,0x7B,0x6E,0x6F,0x7D,0x85,0x8B,0x8A,0x83,0x88,0x91,0x94,0x94,0x8E,0x89, - 0x8E,0x95,0x99,0x9A,0x93,0x8C,0x87,0x91,0xA4,0xAC,0xA8,0x9C,0x8F,0x90,0x99,0x9C, - 0x9E,0x9E,0x97,0x9A,0xA1,0x9D,0x99,0x92,0x8D,0x94,0x9B,0x9A,0x99,0x93,0x8B,0x84, - 0x89,0x98,0x9E,0x9B,0x90,0x80,0x77,0x7C,0x7C,0x7A,0x79,0x72,0x71,0x75,0x71,0x6B, - 0x65,0x5F,0x60,0x65,0x65,0x63,0x5C,0x52,0x49,0x4C,0x5D,0x67,0x66,0x5F,0x54,0x50, - 0x59,0x5E,0x61,0x65,0x64,0x67,0x71,0x73,0x70,0x6E,0x70,0x78,0x80,0x82,0x83,0x81, - 0x7B,0x78,0x7F,0x92,0x9D,0x9E,0x98,0x8C,0x87,0x90,0x95,0x96,0x98,0x97,0x99,0x9F, - 0x9C,0x97,0x94,0x94,0x99,0xA0,0x9E,0x9B,0x99,0x93,0x8B,0x8F,0xA3,0xAD,0xAA,0x9F, - 0x92,0x8C,0x95,0x9A,0x98,0x99,0x98,0x98,0x9D,0x9A,0x90,0x8A,0x89,0x8C,0x8E,0x89, - 0x86,0x81,0x77,0x6E,0x70,0x81,0x88,0x83,0x78,0x6B,0x66,0x6D,0x6D,0x6A,0x6B,0x6C, - 0x6C,0x71,0x6D,0x65,0x63,0x65,0x68,0x6B,0x67,0x66,0x65,0x5D,0x55,0x5C,0x6E,0x73, - 0x6D,0x62,0x55,0x55,0x5D,0x5D,0x5C,0x5F,0x61,0x65,0x69,0x63,0x5E,0x62,0x68,0x6F, - 0x73,0x70,0x71,0x72,0x6D,0x6A,0x79,0x8D,0x92,0x8E,0x85,0x7C,0x7F,0x88,0x87,0x89, - 0x8D,0x8F,0x94,0x96,0x8E,0x8D,0x91,0x95,0x9B,0x9B,0x96,0x98,0x96,0x8F,0x90,0xA3, - 0xB2,0xB2,0xAB,0x9F,0x98,0x9F,0xA3,0x9E,0x9F,0xA2,0xA3,0xA6,0xA4,0x98,0x95,0x98, - 0x9B,0x9C,0x9A,0x98,0x97,0x92,0x85,0x85,0x9B,0xA4,0x9D,0x92,0x84,0x7F,0x85,0x82, - 0x79,0x7B,0x7D,0x7B,0x7B,0x74,0x69,0x69,0x6D,0x6F,0x6D,0x6A,0x6A,0x69,0x60,0x56, - 0x61,0x75,0x77,0x6F,0x66,0x5E,0x60,0x67,0x61,0x60,0x66,0x67,0x68,0x69,0x60,0x5B, - 0x61,0x65,0x66,0x66,0x65,0x65,0x62,0x58,0x56,0x6C,0x7B,0x77,0x6F,0x66,0x61,0x6A, - 0x6C,0x66,0x6B,0x72,0x76,0x78,0x75,0x6C,0x6F,0x78,0x7B,0x7C,0x7B,0x7D,0x7F,0x7A, - 0x72,0x7F,0x98,0x9E,0x98,0x91,0x89,0x8B,0x94,0x8F,0x8F,0x99,0x9F,0xA2,0xA2,0x9B, - 0x98,0x9F,0xA3,0xA3,0xA1,0xA1,0xA2,0xA0,0x94,0x92,0xA6,0xB4,0xAF,0xA5,0x9B,0x96, - 0x9C,0x9B,0x94,0x97,0x9D,0x9E,0x9B,0x95,0x8E,0x91,0x96,0x96,0x93,0x92,0x91,0x8E, - 0x87,0x7C,0x87,0x9C,0x9D,0x93,0x89,0x80,0x82,0x87,0x80,0x7D,0x84,0x89,0x86,0x81, - 0x77,0x72,0x78,0x7A,0x77,0x74,0x73,0x70,0x6A,0x5D,0x5B,0x70,0x7C,0x74,0x68,0x60, - 0x5C,0x62,0x61,0x59,0x5E,0x67,0x69,0x65,0x60,0x59,0x5D,0x63,0x64,0x62,0x63,0x65, - 0x63,0x5B,0x52,0x63,0x78,0x77,0x6C,0x66,0x62,0x67,0x6C,0x63,0x64,0x6F,0x76,0x75, - 0x72,0x6C,0x70,0x79,0x7B,0x79,0x7A,0x7D,0x7D,0x79,0x6E,0x77,0x90,0x98,0x90,0x89, - 0x85,0x85,0x8D,0x87,0x83,0x8B,0x95,0x97,0x93,0x8C,0x89,0x94,0x98,0x97,0x95,0x99, - 0x9A,0x97,0x8D,0x88,0x9E,0xB0,0xAB,0xA1,0x9B,0x98,0x9E,0x9E,0x93,0x98,0xA4,0xA9, - 0xA5,0x9D,0x95,0x9B,0xA1,0x9E,0x9B,0x9C,0x9E,0x9A,0x92,0x86,0x92,0xA8,0xA8,0x9C, - 0x94,0x8F,0x91,0x94,0x86,0x85,0x90,0x96,0x94,0x8C,0x82,0x81,0x88,0x86,0x82,0x7F, - 0x82,0x80,0x79,0x6B,0x6D,0x84,0x8C,0x82,0x78,0x71,0x6F,0x74,0x6C,0x64,0x6C,0x73, - 0x73,0x6D,0x65,0x5F,0x66,0x67,0x63,0x62,0x65,0x66,0x60,0x57,0x53,0x68,0x76,0x70, - 0x65,0x5E,0x5D,0x64,0x64,0x59,0x5C,0x66,0x6D,0x69,0x63,0x5C,0x62,0x6A,0x67,0x67, - 0x6A,0x6D,0x6A,0x63,0x5B,0x6C,0x81,0x7F,0x76,0x6E,0x6D,0x75,0x7A,0x70,0x71,0x7C, - 0x82,0x81,0x7C,0x76,0x79,0x83,0x83,0x81,0x82,0x87,0x86,0x80,0x77,0x84,0x9C,0x9C, - 0x93,0x8C,0x89,0x8E,0x94,0x8C,0x8B,0x96,0x9C,0x9C,0x97,0x91,0x92,0x9C,0x9A,0x96, - 0x96,0x9B,0x99,0x92,0x86,0x91,0xA9,0xA8,0x9C,0x94,0x90,0x93,0x97,0x8E,0x8A,0x94, - 0x98,0x97,0x92,0x8B,0x89,0x93,0x92,0x8D,0x8B,0x8E,0x8E,0x86,0x7B,0x82,0x9A,0x9B, - 0x92,0x88,0x82,0x83,0x89,0x82,0x7C,0x84,0x8A,0x8B,0x85,0x7C,0x79,0x82,0x84,0x7F, - 0x7D,0x7E,0x7C,0x73,0x69,0x73,0x8A,0x89,0x7F,0x77,0x72,0x73,0x78,0x6F,0x6B,0x76, - 0x7C,0x7D,0x77,0x6F,0x6D,0x76,0x78,0x73,0x73,0x76,0x74,0x6A,0x64,0x75,0x88,0x85, - 0x7C,0x73,0x70,0x75,0x76,0x6D,0x70,0x7A,0x7E,0x7D,0x77,0x71,0x75,0x7D,0x7A,0x75, - 0x77,0x79,0x73,0x67,0x69,0x81,0x8A,0x82,0x79,0x72,0x72,0x78,0x73,0x6B,0x74,0x7D, - 0x7F,0x7B,0x73,0x72,0x79,0x7F,0x7B,0x7B,0x7F,0x7E,0x76,0x6D,0x7B,0x90,0x8E,0x86, - 0x7F,0x7C,0x80,0x82,0x78,0x78,0x86,0x8C,0x8A,0x82,0x7D,0x7E,0x84,0x83,0x7F,0x82, - 0x83,0x7D,0x73,0x76,0x8F,0x97,0x8B,0x84,0x80,0x80,0x83,0x7E,0x76,0x81,0x8C,0x8B, - 0x89,0x82,0x7E,0x84,0x87,0x80,0x81,0x86,0x83,0x79,0x70,0x84,0x98,0x91,0x89,0x85, - 0x82,0x84,0x82,0x78,0x79,0x85,0x89,0x87,0x83,0x7F,0x81,0x87,0x83,0x7E,0x84,0x87, - 0x7F,0x72,0x79,0x92,0x95,0x8A,0x85,0x82,0x84,0x86,0x7F,0x7A,0x85,0x8D,0x89,0x84, - 0x7F,0x80,0x88,0x88,0x81,0x82,0x88,0x85,0x77,0x71,0x88,0x97,0x8C,0x83,0x7F,0x80, - 0x83,0x7E,0x75,0x79,0x86,0x89,0x82,0x7E,0x7C,0x80,0x85,0x7F,0x7A,0x81,0x85,0x7B, - 0x70,0x7B,0x93,0x93,0x86,0x83,0x82,0x84,0x84,0x7B,0x77,0x80,0x89,0x87,0x82,0x81, - 0x81,0x85,0x84,0x7D,0x7E,0x84,0x7E,0x6F,0x6E,0x86,0x92,0x87,0x80,0x7F,0x80,0x81, - 0x7C,0x73,0x75,0x82,0x85,0x7C,0x7B,0x7E,0x80,0x82,0x7D,0x7B,0x81,0x84,0x77,0x6C, - 0x7B,0x91,0x8C,0x81,0x81,0x83,0x85,0x83,0x7B,0x77,0x81,0x8A,0x84,0x7E,0x81,0x84, - 0x86,0x84,0x7D,0x7F,0x85,0x81,0x72,0x74,0x8D,0x93,0x84,0x81,0x83,0x83,0x81,0x7C, - 0x76,0x78,0x85,0x87,0x7D,0x7C,0x81,0x83,0x81,0x7C,0x7A,0x7E,0x7F,0x74,0x6A,0x7B, - 0x91,0x88,0x7B,0x7F,0x84,0x81,0x7A,0x76,0x75,0x7A,0x84,0x7E,0x78,0x7E,0x85,0x85, - 0x7F,0x7D,0x7F,0x80,0x7B,0x71,0x72,0x89,0x92,0x83,0x7C,0x83,0x8A,0x83,0x77,0x78, - 0x7C,0x81,0x83,0x7D,0x7C,0x82,0x88,0x85,0x7D,0x7D,0x84,0x81,0x77,0x71,0x7C,0x8F, - 0x8C,0x7E,0x7D,0x85,0x8B,0x80,0x74,0x79,0x80,0x82,0x7C,0x78,0x7F,0x84,0x85,0x82, - 0x7D,0x80,0x83,0x7E,0x75,0x72,0x81,0x8F,0x85,0x7A,0x7E,0x89,0x89,0x7B,0x75,0x7E, - 0x83,0x80,0x79,0x79,0x80,0x81,0x81,0x7E,0x7F,0x83,0x82,0x7D,0x77,0x79,0x87,0x88, - 0x7D,0x7C,0x83,0x8B,0x85,0x7B,0x7D,0x82,0x83,0x7F,0x7A,0x7E,0x82,0x7F,0x7F,0x7E, - 0x81,0x82,0x7F,0x7C,0x7A,0x7F,0x86,0x81,0x7D,0x80,0x85,0x88,0x82,0x7D,0x82,0x84, - 0x83,0x7E,0x7C,0x80,0x81,0x7F,0x7F,0x7F,0x83,0x83,0x7E,0x7B,0x7C,0x83,0x83,0x7E, - 0x80,0x83,0x86,0x86,0x81,0x82,0x85,0x83,0x83,0x80,0x7F,0x81,0x80,0x81,0x81,0x81, - 0x84,0x82,0x7E,0x7C,0x7E,0x83,0x80,0x7E,0x7F,0x81,0x86,0x84,0x7F,0x82,0x83,0x83, - 0x81,0x7C,0x7E,0x7F,0x7E,0x7F,0x7E,0x81,0x82,0x7F,0x7D,0x7C,0x7F,0x83,0x7F,0x7F, - 0x80,0x81,0x86,0x83,0x80,0x83,0x83,0x83,0x80,0x7D,0x80,0x80,0x7F,0x7F,0x7F,0x83, - 0x83,0x7F,0x7F,0x7E,0x82,0x84,0x80,0x81,0x82,0x83,0x85,0x82,0x83,0x85,0x83,0x83, - 0x80,0x7E,0x80,0x7F,0x7F,0x7E,0x7E,0x81,0x80,0x7E,0x7C,0x7C,0x81,0x81,0x7E,0x80, - 0x80,0x82,0x83,0x7F,0x81,0x83,0x81,0x81,0x7D,0x7D,0x80,0x7E,0x7E,0x7F,0x80,0x83, - 0x80,0x7E,0x7D,0x7D,0x82,0x81,0x80,0x84,0x83,0x85,0x85,0x81,0x84,0x85,0x82,0x82, - 0x7D,0x7E,0x80,0x7E,0x7D,0x7D,0x7E,0x7F,0x7D,0x7C,0x7B,0x7B,0x7F,0x7D,0x7D,0x80, - 0x80,0x82,0x82,0x7E,0x82,0x84,0x81,0x81,0x7D,0x7F,0x80,0x7D,0x7E,0x7E,0x80,0x81, - 0x7E,0x7F,0x7E,0x7C,0x81,0x80,0x7F,0x83,0x82,0x84,0x84,0x7F,0x82,0x84,0x82,0x81, - 0x7D,0x7E,0x80,0x7D,0x7C,0x7C,0x7D,0x7F,0x7D,0x7C,0x7B,0x7A,0x7F,0x7F,0x7C,0x7F, - 0x81,0x83,0x84,0x81,0x80,0x83,0x83,0x8D,0x86,0x64,0x72,0x88,0x87,0x73,0x7E,0x90, - 0x6C,0x73,0x7F,0x78,0x7A,0x86,0x90,0x7C,0x7C,0x88,0x8B,0x7C,0x7A,0x8E,0x81,0x75, - 0x76,0x7B,0x81,0x7D,0x80,0x84,0x78,0x74,0x7E,0x7C,0x7F,0x85,0x88,0x8B,0x87,0x83, - 0x81,0x7C,0x85,0x87,0x81,0x87,0x7F,0x87,0x7D,0x6C,0x88,0x85,0x6B,0x7C,0x7A,0x78, - 0x6F,0x62,0x7F,0x76,0x6B,0x7B,0x73,0x77,0x80,0x7C,0x77,0x6D,0x73,0x81,0x8C,0x89, - 0x79,0x7B,0x8F,0x8E,0x88,0x89,0x82,0x86,0x91,0x92,0x8C,0x91,0xA4,0x99,0x90,0x9B, - 0x8D,0x8C,0x9E,0xA8,0xA2,0x9B,0x9D,0x97,0x92,0x94,0x92,0x81,0x7E,0x8C,0x8F,0x90, - 0x92,0x84,0x77,0x79,0x73,0x6F,0x69,0x6C,0x7A,0x78,0x73,0x6C,0x65,0x68,0x6A,0x6E, - 0x6D,0x62,0x63,0x61,0x59,0x5D,0x58,0x58,0x5E,0x62,0x6B,0x6D,0x62,0x61,0x6B,0x67, - 0x5F,0x61,0x69,0x77,0x78,0x6D,0x6F,0x70,0x74,0x7F,0x78,0x77,0x7A,0x79,0x80,0x7F, - 0x81,0x88,0x8F,0x9A,0xA9,0xB1,0xAF,0xA6,0x9F,0x9F,0x9F,0x98,0x91,0x94,0x91,0x8F, - 0x8C,0x89,0x92,0x93,0x8C,0x87,0x84,0x82,0x7F,0x7D,0x7C,0x7C,0x7D,0x82,0x85,0x89, - 0x8A,0x85,0x89,0x8D,0x88,0x86,0x8A,0x8E,0x8D,0x8D,0x8C,0x91,0x95,0x90,0x8D,0x8D, - 0x8E,0x91,0x8B,0x8C,0x91,0x91,0x91,0x8C,0x8E,0x95,0x91,0x8C,0x94,0x98,0x8F,0x95, - 0x98,0x93,0x9C,0x98,0x90,0x98,0x9A,0x98,0x93,0x90,0x90,0x88,0x87,0x81,0x78,0x7E, - 0x77,0x6E,0x6F,0x6A,0x6C,0x69,0x6E,0x71,0x5B,0x5D,0x5D,0x5B,0x64,0x53,0x52,0x57, - 0x50,0x53,0x45,0x4A,0x5C,0x59,0x5B,0x5A,0x62,0x6C,0x5F,0x5C,0x5F,0x5D,0x59,0x51, - 0x6C,0x7B,0x69,0x72,0x74,0x72,0x76,0x61,0x65,0x73,0x75,0x7F,0x79,0x7F,0x90,0x90, - 0x8F,0x99,0xA2,0xA9,0xA7,0xA2,0xA6,0x9D,0x8E,0x8E,0xA0,0xAD,0xA0,0x94,0x96,0x9A, - 0x90,0x7C,0x7E,0x88,0x8C,0x8D,0x86,0x89,0x8C,0x88,0x81,0x7C,0x86,0x8C,0x85,0x85, - 0x86,0x7D,0x7D,0x76,0x87,0xA2,0x97,0x90,0x96,0x92,0x92,0x8A,0x84,0x96,0x9C,0x97, - 0x92,0x95,0x9F,0x97,0x8B,0x8E,0x95,0x9B,0x9E,0x9A,0x9C,0x9C,0x91,0x88,0x8C,0xA6, - 0xA8,0x9A,0x9B,0x97,0x95,0x91,0x83,0x89,0x90,0x8E,0x88,0x7F,0x82,0x7F,0x75,0x72, - 0x73,0x74,0x71,0x69,0x66,0x62,0x5C,0x55,0x4A,0x5B,0x6F,0x63,0x56,0x54,0x55,0x56, - 0x4C,0x46,0x54,0x60,0x63,0x5A,0x56,0x5C,0x5D,0x5C,0x5C,0x63,0x6B,0x69,0x62,0x62, - 0x64,0x68,0x68,0x64,0x79,0x91,0x83,0x75,0x74,0x7D,0x87,0x82,0x85,0x97,0xA7,0xA8, - 0x9C,0x98,0xA3,0xA3,0x9A,0x94,0x98,0xA0,0x98,0x8F,0x8A,0x88,0x87,0x80,0x78,0x8B, - 0x9E,0x8D,0x80,0x7C,0x81,0x86,0x7F,0x7F,0x89,0x8F,0x87,0x7D,0x7B,0x89,0x8D,0x86, - 0x86,0x8C,0x90,0x89,0x87,0x8B,0x90,0x8F,0x89,0x87,0x9C,0xAF,0x9F,0x8F,0x8A,0x8F, - 0x96,0x8F,0x8B,0x9B,0xA5,0x9B,0x8A,0x86,0x92,0x9B,0x98,0x94,0x98,0x9A,0x92,0x87, - 0x88,0x8E,0x8D,0x85,0x7C,0x8A,0x9E,0x96,0x82,0x79,0x7B,0x7F,0x78,0x6F,0x71,0x75, - 0x73,0x5D,0x53,0x5E,0x63,0x5F,0x59,0x5E,0x5E,0x55,0x50,0x51,0x55,0x58,0x54,0x47, - 0x50,0x6F,0x70,0x5E,0x57,0x57,0x5D,0x65,0x60,0x5D,0x69,0x71,0x62,0x55,0x5F,0x6B, - 0x6F,0x72,0x73,0x7A,0x79,0x73,0x6F,0x77,0x83,0x85,0x88,0x89,0xA3,0xB9,0xAA,0x9B, - 0x96,0x9A,0xA1,0x9D,0x96,0x9A,0x9F,0x97,0x87,0x82,0x8D,0x8E,0x87,0x83,0x83,0x86, - 0x81,0x78,0x7A,0x83,0x81,0x7C,0x76,0x7D,0x96,0x96,0x83,0x7A,0x7A,0x87,0x8A,0x85, - 0x8D,0x95,0x96,0x8E,0x87,0x8E,0x99,0x98,0x94,0x94,0x98,0x97,0x8E,0x8D,0x90,0x95, - 0x93,0x8D,0x8A,0x9B,0xAE,0xA1,0x95,0x8F,0x8E,0x99,0x96,0x8D,0x94,0x9B,0x95,0x87, - 0x84,0x89,0x8C,0x8D,0x86,0x83,0x87,0x80,0x75,0x72,0x78,0x77,0x6E,0x66,0x60,0x71, - 0x80,0x6E,0x5C,0x56,0x59,0x5F,0x56,0x55,0x5D,0x62,0x60,0x51,0x4D,0x55,0x5C,0x59, - 0x57,0x5F,0x64,0x61,0x5A,0x58,0x60,0x65,0x61,0x5D,0x5B,0x73,0x83,0x78,0x6A,0x67, - 0x6F,0x76,0x75,0x76,0x83,0x8E,0x8E,0x88,0x8C,0x9B,0xA4,0xA2,0x9F,0xA3,0xA3,0x9F, - 0x96,0x93,0x97,0x98,0x93,0x89,0x89,0x98,0xA2,0x92,0x82,0x7A,0x7E,0x83,0x79,0x76, - 0x84,0x89,0x7F,0x77,0x75,0x7B,0x84,0x85,0x82,0x87,0x8F,0x86,0x7E,0x84,0x8F,0x90, - 0x90,0x8A,0x87,0x9F,0xAF,0x9E,0x8E,0x8D,0x90,0x97,0x91,0x8F,0x9C,0xA1,0x9B,0x8F, - 0x8D,0x94,0x99,0x99,0x93,0x9A,0xA0,0x95,0x8A,0x89,0x94,0x95,0x90,0x89,0x81,0x94, - 0xA6,0x93,0x85,0x81,0x80,0x83,0x7C,0x75,0x7B,0x82,0x75,0x65,0x61,0x69,0x6E,0x68, - 0x61,0x64,0x67,0x62,0x56,0x54,0x5B,0x60,0x59,0x51,0x4C,0x5A,0x75,0x6B,0x5B,0x57, - 0x5B,0x64,0x60,0x5B,0x68,0x70,0x6B,0x60,0x5B,0x6A,0x75,0x6F,0x6D,0x74,0x7A,0x7B, - 0x75,0x78,0x83,0x8D,0x8C,0x89,0x8C,0x97,0xB2,0xB1,0x9F,0x98,0x99,0x9F,0x99,0x8F, - 0x98,0xA0,0x9B,0x8F,0x7F,0x88,0x91,0x88,0x82,0x80,0x83,0x82,0x79,0x73,0x77,0x82, - 0x80,0x79,0x74,0x74,0x8F,0x9C,0x8A,0x82,0x82,0x86,0x8A,0x84,0x8A,0x95,0x98,0x92, - 0x88,0x89,0x92,0x96,0x8F,0x8D,0x97,0x9C,0x91,0x8A,0x90,0x99,0x9C,0x95,0x8E,0x89, - 0x98,0xB0,0xA8,0x94,0x91,0x8F,0x94,0x91,0x89,0x92,0x9C,0x95,0x89,0x86,0x88,0x8A, - 0x85,0x81,0x83,0x84,0x7E,0x71,0x6F,0x72,0x6F,0x6C,0x66,0x5C,0x58,0x6A,0x7D,0x69, - 0x59,0x57,0x57,0x59,0x4F,0x50,0x5E,0x63,0x5B,0x52,0x4F,0x57,0x5F,0x5D,0x5E,0x66, - 0x69,0x65,0x5E,0x61,0x6A,0x6E,0x6C,0x66,0x64,0x6A,0x86,0x8D,0x7A,0x7A,0x7B,0x7F, - 0x84,0x80,0x87,0x9C,0xA2,0x98,0x90,0x94,0xA0,0x9E,0x97,0x9A,0x9E,0x9C,0x93,0x8A, - 0x8C,0x91,0x8D,0x86,0x82,0x78,0x7E,0x99,0x91,0x7A,0x71,0x71,0x79,0x76,0x6C,0x78, - 0x8A,0x85,0x7D,0x76,0x7C,0x87,0x7F,0x7E,0x89,0x8D,0x8D,0x88,0x82,0x85,0x8E,0x8F, - 0x89,0x8D,0x85,0x91,0xAD,0xA1,0x93,0x91,0x8F,0x95,0x92,0x83,0x92,0xA0,0x9C,0x96, - 0x8B,0x91,0x99,0x8E,0x8B,0x95,0x99,0x97,0x8E,0x89,0x8C,0x8B,0x88,0x84,0x86,0x79, - 0x7F,0x98,0x8D,0x79,0x73,0x6D,0x72,0x68,0x59,0x66,0x6D,0x6A,0x62,0x5A,0x58,0x5C, - 0x57,0x52,0x5A,0x5F,0x62,0x5E,0x5A,0x5D,0x60,0x60,0x5E,0x62,0x59,0x61,0x7E,0x76, - 0x68,0x6C,0x61,0x6D,0x6D,0x5E,0x6A,0x76,0x77,0x7A,0x7A,0x7A,0x84,0x86,0x88,0x8A, - 0x8D,0x95,0x99,0x97,0x97,0xA0,0x9D,0x99,0x9A,0x94,0x91,0xA5,0xA0,0x8F,0x97,0x89, - 0x87,0x86,0x7A,0x7B,0x7B,0x74,0x75,0x79,0x71,0x75,0x76,0x77,0x79,0x78,0x7A,0x7F, - 0x7E,0x7B,0x7E,0x80,0x80,0x80,0x81,0x80,0x8C,0x92,0x8D,0x91,0x91,0x90,0x94,0x96, - 0x90,0x93,0x93,0x90,0x94,0x96,0x90,0x93,0x97,0x96,0x9C,0x98,0x94,0x95,0x93,0x91, - 0x91,0x91,0x91,0x8F,0x88,0x87,0x90,0x8D,0x86,0x88,0x85,0x84,0x88,0x80,0x7A,0x79, - 0x75,0x73,0x71,0x6C,0x6C,0x6B,0x6A,0x70,0x6D,0x6B,0x6C,0x69,0x65,0x68,0x68,0x6A, - 0x6A,0x6B,0x64,0x65,0x76,0x72,0x6C,0x70,0x6E,0x6F,0x74,0x70,0x6C,0x6F,0x6E,0x74, - 0x77,0x72,0x73,0x76,0x7A,0x7E,0x7D,0x7C,0x7C,0x82,0x82,0x84,0x88,0x89,0x8C,0x87, - 0x7F,0x84,0x9B,0x90,0x86,0x91,0x82,0x8D,0x8F,0x82,0x84,0x7E,0x83,0x87,0x7F,0x7C, - 0x7D,0x7D,0x81,0x80,0x76,0x78,0x7D,0x7A,0x78,0x7A,0x7D,0x80,0x7C,0x7A,0x72,0x78, - 0x98,0x93,0x81,0x86,0x7B,0x87,0x8C,0x73,0x7A,0x84,0x8D,0x8F,0x81,0x80,0x8A,0x8D, - 0x89,0x86,0x86,0x8F,0x90,0x8F,0x89,0x8E,0x94,0x8D,0x89,0x88,0x84,0x81,0x9E,0xA7, - 0x97,0x95,0x8A,0x87,0x8F,0x7B,0x79,0x89,0x90,0x93,0x85,0x7B,0x85,0x8B,0x81,0x7D, - 0x7D,0x84,0x87,0x81,0x7D,0x7D,0x7B,0x7B,0x7D,0x79,0x7B,0x70,0x7D,0x9C,0x8A,0x7E, - 0x77,0x6D,0x78,0x74,0x69,0x73,0x7F,0x84,0x7F,0x73,0x70,0x7A,0x7B,0x74,0x75,0x7D, - 0x84,0x87,0x7D,0x7A,0x7E,0x7E,0x83,0x81,0x81,0x79,0x7B,0x9C,0x9F,0x8A,0x82,0x7A, - 0x7F,0x83,0x74,0x75,0x83,0x8D,0x8A,0x7D,0x74,0x77,0x7E,0x79,0x73,0x76,0x7D,0x81, - 0x7B,0x72,0x76,0x77,0x7A,0x79,0x7A,0x75,0x68,0x81,0x92,0x86,0x78,0x71,0x6F,0x7C, - 0x79,0x6D,0x76,0x83,0x87,0x83,0x75,0x70,0x7F,0x81,0x7E,0x7D,0x82,0x86,0x8A,0x83, - 0x7C,0x7E,0x80,0x86,0x85,0x83,0x77,0x7D,0x9B,0xA1,0x8E,0x80,0x78,0x78,0x85,0x80, - 0x78,0x7F,0x8A,0x8D,0x8A,0x7B,0x75,0x82,0x82,0x81,0x80,0x7F,0x84,0x87,0x82,0x7E, - 0x7F,0x7F,0x80,0x81,0x7C,0x72,0x7C,0x94,0x99,0x87,0x7A,0x71,0x74,0x80,0x7C,0x7A, - 0x7D,0x82,0x87,0x84,0x78,0x74,0x7A,0x81,0x83,0x80,0x7F,0x81,0x84,0x81,0x7F,0x7E, - 0x81,0x84,0x82,0x7E,0x77,0x82,0x97,0x9B,0x92,0x84,0x74,0x77,0x82,0x84,0x84,0x7F, - 0x7F,0x88,0x8B,0x84,0x7F,0x7C,0x7C,0x82,0x84,0x7F,0x7B,0x7D,0x80,0x7E,0x7C,0x7C, - 0x7D,0x7F,0x79,0x71,0x7E,0x8D,0x8A,0x87,0x7D,0x71,0x73,0x79,0x7B,0x7E,0x7B,0x79, - 0x7F,0x81,0x80,0x80,0x7E,0x7D,0x7F,0x81,0x81,0x7F,0x7E,0x80,0x7F,0x82,0x85,0x83, - 0x82,0x82,0x7E,0x87,0x8E,0x86,0x84,0x85,0x7D,0x7F,0x84,0x80,0x82,0x81,0x7B,0x7D, - 0x81,0x7F,0x7E,0x7F,0x7E,0x80,0x82,0x82,0x81,0x81,0x81,0x80,0x80,0x81,0x7C,0x7F, - 0x80,0x7C,0x81,0x81,0x7E,0x80,0x80,0x7E,0x82,0x83,0x80,0x83,0x7F,0x7B,0x7D,0x7C, - 0x7A,0x7C,0x7A,0x79,0x7C,0x7D,0x7E,0x7D,0x7E,0x7C,0x7F,0x83,0x80,0x81,0x82,0x82, - 0x84,0x87,0x82,0x81,0x84,0x7F,0x82,0x85,0x82,0x81,0x81,0x7E,0x7D,0x7E,0x7E,0x7E, - 0x7D,0x7C,0x7C,0x7D,0x7E,0x7E,0x7D,0x7F,0x7F,0x7E,0x80,0x7E,0x7E,0x7E,0x7F,0x82, - 0x81,0x7F,0x7F,0x7E,0x7C,0x80,0x80,0x7D,0x7F,0x7D,0x7B,0x7D,0x7C,0x7A,0x7A,0x79, - 0x7A,0x7C,0x7D,0x7E,0x7F,0x7F,0x81,0x83,0x84,0x83,0x83,0x84,0x81,0x83,0x87,0x83, - 0x80,0x84,0x80,0x82,0x86,0x82,0x81,0x81,0x7E,0x7D,0x80,0x7D,0x7D,0x7D,0x7A,0x7D, - 0x7F,0x7E,0x80,0x80,0x80,0x82,0x84,0x83,0x81,0x82,0x82,0x80,0x85,0x87,0x81,0x82, - 0x83,0x7E,0x82,0x85,0x80,0x81,0x7F,0x7C,0x7E,0x7E,0x7B,0x7B,0x7B,0x7A,0x7D,0x7E, - 0x7E,0x7F,0x80,0x81,0x82,0x83,0x84,0x82,0x81,0x82,0x83,0x88,0x86,0x82,0x85,0x83, - 0x81,0x86,0x85,0x84,0x85,0x7F,0x7F,0x81,0x7F,0x7D,0x7E,0x7B,0x7C,0x7F,0x7F,0x80, - 0x80,0x81,0x81,0x84,0x83,0x82,0x82,0x82,0x80,0x83,0x86,0x82,0x83,0x82,0x7E,0x81, - 0x84,0x7E,0x7F,0x7F,0x7A,0x7D,0x7D,0x7A,0x7A,0x79,0x77,0x7A,0x7C,0x7E,0x7F,0x7F, - 0x81,0x83,0x83,0x84,0x84,0x83,0x82,0x84,0x88,0x85,0x82,0x85,0x82,0x81,0x86,0x84, - 0x81,0x82,0x7E,0x7D,0x80,0x7E,0x7D,0x7D,0x7A,0x7D,0x7F,0x7E,0x82,0x81,0x7F,0x82, - 0x85,0x85,0x84,0x84,0x83,0x82,0x87,0x89,0x83,0x84,0x85,0x80,0x85,0x86,0x80,0x83, - 0x81,0x7C,0x7F,0x7F,0x7C,0x7D,0x7A,0x7A,0x7E,0x7A,0x8D,0x84,0x80,0x88,0x66,0x79, - 0x86,0x6D,0x67,0x75,0x82,0x8B,0x8E,0x8D,0x8F,0x89,0x93,0xA8,0xA1,0x9D,0xAB,0x9B, - 0x8D,0x83,0x71,0x85,0x81,0x5C,0x62,0x70,0x63,0x5B,0x59,0x52,0x5B,0x63,0x63,0x5A, - 0x53,0x65,0x6C,0x6E,0x7C,0x72,0x88,0xAB,0x8D,0x93,0xA9,0x9C,0xAF,0x92,0x99,0xC7, - 0xA1,0xA5,0xA5,0x90,0xAB,0xA5,0x8E,0x8B,0x8A,0x93,0x8A,0x71,0x7E,0x70,0x6D,0x7A, - 0x68,0x87,0x8E,0x6A,0x7B,0x89,0x77,0x81,0x6B,0x44,0x5A,0x62,0x5F,0x6C,0x63,0x56, - 0x5A,0x64,0x69,0x5E,0x7B,0x81,0x84,0x9F,0x9A,0x8A,0x86,0x8C,0x85,0x88,0x92,0xA9, - 0xB3,0x9D,0x96,0xA0,0x99,0xA3,0x9B,0x8E,0x95,0x83,0x85,0x7E,0x74,0x7B,0x70,0x69, - 0x67,0x74,0x7C,0x66,0x52,0x4D,0x4E,0x58,0x4C,0x3B,0x40,0x52,0x49,0x43,0x51,0x5C, - 0x69,0x66,0x75,0x83,0x82,0x95,0xAB,0x9C,0x90,0x87,0x8B,0x98,0x8F,0x90,0x93,0x91, - 0xA2,0xB1,0xBB,0xC3,0xB3,0xAE,0xBC,0xAD,0xA5,0xA4,0x8B,0x95,0x99,0x8C,0x9C,0x96, - 0x88,0x80,0x74,0x76,0x81,0x7A,0x78,0x73,0x5F,0x67,0x68,0x5C,0x5B,0x5D,0x6A,0x65, - 0x5F,0x63,0x5E,0x69,0x70,0x79,0x77,0x71,0x8E,0x94,0x86,0x96,0x91,0x87,0x9B,0x94, - 0xA1,0xA7,0x96,0x98,0x96,0x96,0x98,0x9D,0x98,0x8B,0x96,0x9D,0x94,0x99,0x96,0x90, - 0x96,0x8D,0x8C,0x8A,0x7C,0x6E,0x62,0x5A,0x4E,0x60,0x58,0x4D,0x6B,0x6B,0x65,0x56, - 0x3F,0x3A,0x42,0x4A,0x4F,0x4B,0x42,0x45,0x4B,0x4B,0x4D,0x54,0x55,0x54,0x53,0x5B, - 0x69,0x6F,0x7D,0x80,0x93,0xB1,0xBD,0xB4,0x99,0x93,0x9F,0x9E,0x99,0x9F,0xA2,0xA8, - 0x9C,0x85,0x84,0x86,0x81,0x8F,0x9D,0x8F,0x8B,0x97,0xA2,0xA9,0xA7,0xAE,0xBC,0xB7, - 0xB5,0xB8,0xAB,0xA2,0x95,0x92,0xA7,0xB2,0xA9,0x9A,0x8A,0x8D,0x90,0x91,0x8B,0x80, - 0x7E,0x85,0x86,0x6E,0x66,0x56,0x5D,0x6F,0x6B,0x6E,0x67,0x64,0x6D,0x72,0x64,0x5D, - 0x5E,0x64,0x6A,0x74,0x72,0x55,0x5C,0x5D,0x58,0x64,0x5C,0x61,0x66,0x69,0x74,0x75, - 0x70,0x78,0x7F,0x7D,0x8A,0x87,0x88,0x92,0x9D,0x9E,0xA1,0xA7,0x9B,0x9D,0xA4,0xA3, - 0x9A,0x94,0x95,0x94,0x93,0x8B,0x91,0x8A,0x82,0x8B,0x83,0x7C,0x77,0x7B,0x75,0x6A, - 0x6C,0x6B,0x71,0x76,0x7D,0x8A,0x8F,0x85,0x73,0x70,0x6D,0x6A,0x67,0x62,0x6A,0x74, - 0x7A,0x6A,0x55,0x53,0x5A,0x65,0x61,0x5C,0x68,0x6E,0x72,0x70,0x72,0x7A,0x6E,0x7D, - 0x8D,0x93,0x9B,0x8D,0x89,0x8B,0x92,0x9A,0x9A,0x9E,0xA5,0xA2,0x9E,0x96,0x95,0x9F, - 0xA7,0xB7,0xB1,0xA4,0xAB,0xB5,0xAF,0xA5,0xA1,0x99,0xAD,0xC4,0xC4,0xC3,0xAC,0xA2, - 0xB1,0xBC,0xBB,0xAB,0xA5,0xAC,0xAA,0x9F,0x91,0x8E,0x8C,0x89,0x88,0x78,0x6E,0x60, - 0x52,0x4D,0x41,0x46,0x46,0x3F,0x53,0x62,0x53,0x44,0x3C,0x33,0x42,0x46,0x40,0x3D, - 0x3D,0x41,0x37,0x32,0x2E,0x32,0x3E,0x40,0x45,0x44,0x47,0x55,0x51,0x55,0x65,0x62, - 0x6A,0x80,0x94,0x9D,0x93,0x8D,0x92,0xA1,0xB1,0xB1,0xB1,0xB5,0xB1,0xAC,0xA4,0xA0, - 0xA7,0xA3,0xA5,0x98,0x8E,0x97,0x91,0x9A,0xA6,0x9A,0x93,0x9A,0xA9,0xBA,0xBA,0x9C, - 0x8E,0x9E,0xA4,0xB4,0xBB,0xA4,0xA0,0x9D,0x9C,0xAC,0xA8,0xA6,0xA1,0x8F,0x90,0x8B, - 0x7F,0x85,0x85,0x85,0x89,0x7F,0x83,0x98,0x91,0x7E,0x75,0x70,0x78,0x7D,0x7F,0x76, - 0x6E,0x6F,0x60,0x5B,0x77,0x80,0x78,0x67,0x55,0x67,0x67,0x5F,0x54,0x3C,0x43,0x46, - 0x52,0x68,0x66,0x62,0x51,0x47,0x5E,0x63,0x5B,0x5C,0x5B,0x69,0x62,0x57,0x62,0x6B, - 0x73,0x75,0x73,0x71,0x70,0x6D,0x6C,0x63,0x5C,0x61,0x5C,0x6B,0x84,0x7C,0x68,0x6E, - 0x77,0x86,0x95,0x99,0xA9,0xB7,0xB9,0xB2,0xAE,0xB1,0xB7,0xBF,0xB9,0xB0,0xA8,0x99, - 0x97,0xA0,0xA4,0xA2,0x97,0x99,0xA7,0xA1,0x99,0x86,0x77,0x8C,0x92,0x8F,0x8E,0x81, - 0x7F,0x7F,0x7A,0x80,0x81,0x8A,0x93,0x8A,0x8B,0x87,0x77,0x7D,0x79,0x75,0x71,0x65, - 0x7F,0x88,0x7E,0x76,0x6C,0x75,0x81,0x87,0x84,0x86,0x87,0x6E,0x63,0x73,0x80,0x89, - 0x83,0x74,0x75,0x78,0x7B,0x78,0x65,0x60,0x60,0x5B,0x6A,0x6D,0x5A,0x49,0x46,0x58, - 0x64,0x5F,0x65,0x6C,0x67,0x5A,0x4D,0x56,0x62,0x74,0x7C,0x6B,0x69,0x71,0x6F,0x79, - 0x7F,0x79,0x71,0x6E,0x88,0x90,0x71,0x5E,0x5C,0x67,0x7A,0x7F,0x7E,0x81,0x7D,0x81, - 0x88,0x93,0xA0,0xA1,0xA4,0xA5,0xB0,0xB1,0xA6,0xB3,0xB8,0xB1,0xAC,0xAE,0xC1,0xC0, - 0xA5,0x90,0x85,0x89,0x8D,0x86,0x8A,0x90,0x8A,0x81,0x80,0x8D,0x98,0x9A,0x91,0x89, - 0x85,0x84,0x86,0x88,0x7D,0x76,0x7D,0x7F,0x8E,0x8F,0x7F,0x7F,0x7F,0x86,0x7F,0x77, - 0x7A,0x7C,0x7E,0x6C,0x6A,0x79,0x7D,0x83,0x84,0x79,0x7C,0x7E,0x81,0x87,0x80,0x76, - 0x65,0x72,0x86,0x7C,0x68,0x56,0x59,0x69,0x6B,0x63,0x68,0x64,0x58,0x59,0x5E,0x61, - 0x5C,0x5E,0x5A,0x5F,0x6A,0x67,0x6B,0x6A,0x70,0x71,0x60,0x6B,0x77,0x70,0x67,0x60, - 0x6D,0x73,0x6E,0x77,0x83,0x83,0x7A,0x6F,0x74,0x87,0x8A,0x81,0x7D,0x7F,0x87,0x93, - 0x94,0x92,0x95,0x95,0xA7,0xC1,0xBF,0xAB,0xA6,0xA9,0xB5,0xB3,0xA3,0xA9,0xAC,0xA3, - 0x96,0x96,0xA0,0xA2,0xA0,0x9A,0xA0,0xA1,0x9E,0x9E,0x97,0x96,0x9F,0x98,0x9D,0xB2, - 0xA7,0x95,0x8A,0x8B,0x9A,0x9E,0x9D,0x9C,0x9B,0x99,0x93,0x8F,0x92,0x94,0x8A,0x86, - 0x88,0x89,0x83,0x7C,0x88,0x82,0x74,0x80,0x92,0x92,0x7F,0x6E,0x6C,0x6F,0x73,0x69, - 0x69,0x73,0x6A,0x5F,0x58,0x64,0x6D,0x6A,0x65,0x58,0x5F,0x65,0x5A,0x59,0x55,0x52, - 0x55,0x5E,0x6D,0x68,0x51,0x47,0x51,0x60,0x63,0x5A,0x5B,0x62,0x46,0x3C,0x50,0x61, - 0x57,0x53,0x72,0x5A,0x52,0x67,0x65,0x6B,0x74,0x79,0x6F,0x7E,0x90,0x86,0x7D,0x73, - 0x8D,0x93,0x84,0x8B,0x95,0xA0,0x9C,0x97,0xAB,0xBE,0xA9,0x9F,0xA2,0xA5,0xA5,0xA8, - 0xAE,0x9D,0xA0,0xA3,0xAB,0xC6,0xBF,0xAB,0x9E,0x9F,0xB2,0xB2,0xAA,0xA9,0xA1,0x9A, - 0x97,0x96,0x9F,0xAA,0x9F,0x9F,0xA4,0xA0,0xA3,0x9E,0xA0,0xA3,0x98,0x99,0xAC,0xAD, - 0x9E,0x92,0x97,0xA3,0x97,0x94,0xA5,0xA2,0x98,0x8F,0x88,0x91,0x94,0x8C,0x87,0x7F, - 0x87,0x81,0x74,0x78,0x6F,0x6E,0x6F,0x7A,0x80,0x70,0x61,0x55,0x5A,0x62,0x5C,0x5A, - 0x5B,0x5A,0x50,0x46,0x4A,0x50,0x52,0x51,0x45,0x44,0x49,0x49,0x4C,0x47,0x3F,0x33, - 0x47,0x64,0x5B,0x51,0x42,0x3E,0x52,0x4E,0x4D,0x5A,0x55,0x4B,0x46,0x4D,0x5D,0x63, - 0x5E,0x62,0x6B,0x74,0x74,0x74,0x79,0x7F,0x81,0x85,0x99,0x97,0x85,0x81,0x88,0x91, - 0x8F,0x87,0x8D,0x99,0x98,0x8A,0x89,0x94,0x9B,0x9E,0x9B,0x96,0x97,0x96,0x93,0x96, - 0x96,0x8C,0x8C,0xA4,0xAD,0x9F,0x94,0x98,0xA7,0xA8,0xA5,0xAE,0xB3,0xAE,0xA0,0xA0, - 0xAA,0xB1,0xAF,0xA2,0x9D,0xA3,0xA7,0xA7,0xA2,0x9D,0x9E,0x99,0xA4,0xAF,0x9F,0x8D, - 0x87,0x8E,0x95,0x8F,0x89,0x8B,0x8C,0x81,0x7A,0x83,0x87,0x86,0x7C,0x77,0x78,0x75, - 0x70,0x6D,0x6C,0x6D,0x61,0x67,0x7D,0x77,0x61,0x53,0x5E,0x69,0x62,0x5E,0x62,0x5E, - 0x57,0x4F,0x54,0x61,0x63,0x62,0x5E,0x5C,0x62,0x60,0x5D,0x5F,0x63,0x5F,0x5F,0x74, - 0x78,0x6B,0x69,0x73,0x81,0x87,0x85,0x8E,0x92,0x8C,0x81,0x7F,0x8F,0x96,0x91,0x87, - 0x81,0x83,0x85,0x82,0x7F,0x7D,0x72,0x76,0x91,0x90,0x79,0x6E,0x71,0x7E,0x7E,0x78, - 0x7D,0x7C,0x75,0x6D,0x76,0x84,0x83,0x79,0x78,0x80,0x89,0x84,0x82,0x88,0x8C,0x8F, - 0x8E,0x9E,0x9E,0x8C,0x8C,0x91,0x95,0x96,0x91,0x96,0x97,0x90,0x81,0x80,0x90,0x8F, - 0x88,0x84,0x81,0x82,0x80,0x7E,0x7F,0x7C,0x6D,0x73,0x8A,0x85,0x6D,0x65,0x6C,0x73, - 0x72,0x6F,0x77,0x72,0x65,0x5D,0x64,0x73,0x70,0x67,0x65,0x69,0x6D,0x67,0x69,0x6D, - 0x6B,0x63,0x65,0x7A,0x7A,0x65,0x60,0x6A,0x73,0x75,0x75,0x7F,0x80,0x75,0x6F,0x77, - 0x86,0x8E,0x8D,0x8E,0x91,0x92,0x96,0x98,0x9C,0x97,0x8A,0xA2,0xB4,0xA3,0x8D,0x88, - 0x95,0x99,0x91,0x90,0x96,0x8F,0x81,0x7E,0x88,0x90,0x8E,0x85,0x85,0x8C,0x8A,0x84, - 0x80,0x83,0x87,0x83,0x92,0x9E,0x92,0x83,0x85,0x91,0x95,0x91,0x91,0x97,0x95,0x8E, - 0x88,0x8F,0x99,0x97,0x97,0x96,0x94,0x92,0x8C,0x8D,0x90,0x82,0x82,0x99,0x9B,0x86, - 0x78,0x7C,0x86,0x87,0x7E,0x81,0x87,0x7B,0x6E,0x6E,0x7C,0x82,0x7D,0x78,0x75,0x77, - 0x74,0x71,0x70,0x72,0x6E,0x6E,0x80,0x7D,0x6B,0x62,0x69,0x74,0x75,0x6E,0x70,0x77, - 0x72,0x66,0x66,0x74,0x76,0x75,0x77,0x76,0x76,0x79,0x79,0x7D,0x80,0x73,0x86,0xA1, - 0x94,0x80,0x7C,0x8A,0x93,0x89,0x88,0x95,0x90,0x81,0x79,0x83,0x90,0x8C,0x85,0x86, - 0x87,0x85,0x7E,0x7A,0x7B,0x7D,0x7B,0x84,0x91,0x87,0x78,0x73,0x7C,0x83,0x81,0x7F, - 0x86,0x85,0x7B,0x78,0x83,0x8C,0x8A,0x85,0x87,0x8A,0x85,0x83,0x83,0x85,0x7E,0x7C, - 0x97,0x9C,0x85,0x7B,0x81,0x89,0x89,0x83,0x8E,0x93,0x84,0x7B,0x7B,0x86,0x8D,0x86, - 0x80,0x83,0x86,0x80,0x78,0x79,0x7E,0x79,0x78,0x8D,0x90,0x7D,0x6E,0x71,0x7E,0x7F, - 0x79,0x7E,0x83,0x7A,0x6F,0x6F,0x7C,0x80,0x7B,0x7A,0x7C,0x79,0x76,0x77,0x77,0x77, - 0x6E,0x7C,0x8F,0x81,0x71,0x72,0x7B,0x7F,0x7A,0x7C,0x8B,0x86,0x77,0x71,0x7D,0x8B, - 0x8A,0x86,0x86,0x89,0x89,0x83,0x7F,0x86,0x8A,0x81,0x8B,0x9B,0x90,0x7B,0x75,0x7F, - 0x86,0x84,0x80,0x88,0x85,0x76,0x70,0x79,0x85,0x81,0x80,0x81,0x7C,0x79,0x76,0x77, - 0x7D,0x76,0x76,0x8F,0x8F,0x7B,0x75,0x79,0x7F,0x7E,0x78,0x83,0x8B,0x7C,0x71,0x71, - 0x80,0x87,0x81,0x81,0x83,0x81,0x7D,0x79,0x7C,0x81,0x7B,0x7C,0x90,0x91,0x7E,0x73, - 0x7B,0x82,0x82,0x7C,0x82,0x89,0x7D,0x71,0x73,0x7F,0x80,0x7E,0x80,0x80,0x7D,0x79, - 0x78,0x7C,0x77,0x70,0x85,0x91,0x7F,0x70,0x74,0x7C,0x80,0x7C,0x7E,0x8B,0x82,0x72, - 0x6F,0x7A,0x81,0x7B,0x7A,0x7F,0x80,0x7A,0x76,0x77,0x7B,0x74,0x76,0x91,0x92,0x7F, - 0x75,0x7E,0x89,0x8B,0x87,0x8D,0x94,0x89,0x7D,0x81,0x8C,0x8B,0x87,0x85,0x87,0x86, - 0x81,0x7D,0x7D,0x78,0x73,0x89,0x92,0x7E,0x6E,0x72,0x7B,0x7C,0x77,0x7B,0x87,0x7D, - 0x71,0x70,0x7C,0x82,0x7D,0x7E,0x81,0x84,0x7F,0x78,0x7A,0x81,0x79,0x7F,0x95,0x8F, - 0x7C,0x76,0x7D,0x82,0x81,0x80,0x8A,0x89,0x79,0x73,0x79,0x81,0x83,0x80,0x81,0x84, - 0x81,0x7E,0x7B,0x7D,0x76,0x7C,0x95,0x92,0x7D,0x75,0x7C,0x80,0x7E,0x7C,0x85,0x88, - 0x79,0x71,0x76,0x80,0x81,0x7E,0x83,0x89,0x83,0x7E,0x7D,0x80,0x7C,0x75,0x8D,0x98, - 0x85,0x76,0x79,0x7E,0x7F,0x7C,0x80,0x8B,0x81,0x74,0x72,0x79,0x80,0x7F,0x7D,0x81, - 0x80,0x7D,0x7E,0x80,0x7D,0x76,0x90,0x9D,0x89,0x7C,0x80,0x85,0x84,0x81,0x87,0x92, - 0x87,0x7A,0x79,0x80,0x83,0x7F,0x7F,0x82,0x80,0x7A,0x77,0x77,0x77,0x6F,0x7D,0x95, - 0x89,0x76,0x76,0x7B,0x7F,0x7B,0x7D,0x8B,0x86,0x78,0x75,0x7C,0x83,0x80,0x80,0x83, - 0x81,0x7C,0x79,0x79,0x7D,0x73,0x7E,0x97,0x8E,0x7D,0x7C,0x82,0x84,0x83,0x84,0x8F, - 0x8C,0x7D,0x78,0x7F,0x87,0x85,0x84,0x88,0x86,0x81,0x7F,0x7C,0x7D,0x76,0x7A,0x94, - 0x90,0x7B,0x76,0x7C,0x7D,0x7D,0x7C,0x89,0x8C,0x7D,0x75,0x7A,0x84,0x82,0x80,0x87, - 0x88,0x81,0x7F,0x7E,0x82,0x7B,0x78,0x90,0x92,0x7D,0x76,0x7B,0x7C,0x7B,0x7B,0x84, - 0x8C,0x82,0x77,0x7A,0x83,0x84,0x82,0x85,0x89,0x80,0x79,0x7A,0x7E,0x7E,0x7C,0x93, - 0x9D,0x89,0x7D,0x80,0x7C,0x78,0x79,0x83,0x92,0x89,0x7D,0x7F,0x85,0x84,0x82,0x85, - 0x88,0x81,0x7A,0x76,0x74,0x71,0x69,0x7C,0x92,0x85,0x78,0x80,0x83,0x82,0x80,0x82, - 0x8E,0x86,0x76,0x75,0x7C,0x7D,0x7C,0x83,0x8B,0x89,0x83,0x81,0x7F,0x7F,0x77,0x84, - 0x9D,0x93,0x7E,0x80,0x86,0x81,0x7A,0x7D,0x8D,0x87,0x76,0x75,0x78,0x7B,0x7B,0x7E, - 0x87,0x86,0x7E,0x7D,0x7B,0x7B,0x73,0x78,0x91,0x8F,0x7B,0x7A,0x7E,0x7C,0x7D,0x81, - 0x90,0x8D,0x7C,0x7D,0x87,0x84,0x7F,0x7F,0x82,0x83,0x81,0x80,0x7A,0x78,0x71,0x79, - 0x95,0x8F,0x75,0x75,0x82,0x7F,0x76,0x79,0x8B,0x8D,0x83,0x7F,0x82,0x83,0x7D,0x7E, - 0x84,0x81,0x7B,0x7D,0x7F,0x92,0x85,0x68,0x71,0x7B,0x7E,0x8C,0x91,0x84,0x7A,0x75, - 0x82,0x84,0x7A,0x81,0x8B,0x92,0x94,0x8F,0x92,0x96,0x8E,0x84,0x81,0x81,0x6F,0x6D, - 0x7F,0x72,0x5E,0x63,0x60,0x5D,0x64,0x6B,0x7D,0x88,0x86,0x83,0x84,0x83,0x87,0x8E, - 0x92,0x8D,0x83,0x7B,0x7C,0x83,0x76,0x81,0x99,0xA5,0x9A,0x8D,0x97,0x8A,0x73,0x71, - 0x7D,0x70,0x7B,0x95,0x8F,0x89,0x80,0x71,0x7C,0x88,0x6D,0x5A,0x57,0x5E,0x63,0x6B, - 0x7F,0x7C,0x75,0x77,0x72,0x7D,0x87,0x92,0xAD,0xA4,0x94,0xB3,0xAA,0x7B,0x81,0x7E, - 0x67,0x66,0x76,0x7F,0x8D,0x9E,0x9E,0x9F,0xA7,0x9C,0x88,0x7A,0x58,0x3D,0x53,0x79, - 0x79,0x7C,0x8E,0x7F,0x6C,0x75,0x71,0x73,0x8E,0x92,0x9A,0x9A,0x8F,0x82,0x7E,0x92, - 0x86,0x75,0x79,0x71,0x73,0x5E,0x4E,0x66,0x72,0x73,0x80,0x88,0x75,0x5E,0x64,0x75, - 0x7D,0x8B,0x88,0x81,0x83,0x7A,0x98,0xB5,0xA2,0x99,0x96,0xA9,0xA8,0x88,0x8E,0x9A, - 0x91,0x88,0x80,0x77,0x76,0x61,0x58,0x61,0x52,0x61,0x76,0x78,0x79,0x86,0xA1,0x98, - 0x7D,0x90,0x95,0x7A,0x75,0x79,0x73,0x71,0x63,0x68,0x82,0x88,0x94,0x94,0x91,0x8D, - 0x85,0x7E,0x81,0x82,0x70,0x81,0xA4,0x97,0x86,0x8C,0x85,0x74,0x67,0x70,0x7F,0x77, - 0x64,0x69,0x7B,0x78,0x6F,0x80,0x97,0x8E,0x72,0x66,0x60,0x58,0x5E,0x73,0x8D,0x8E, - 0x90,0xA1,0x9A,0x8F,0x9C,0x9E,0xAB,0xA6,0x8E,0x95,0x78,0x6B,0x6B,0x59,0x5D,0x65, - 0x73,0x76,0x61,0x5D,0x7C,0x94,0x7C,0x7C,0x89,0x83,0x7D,0x7A,0x97,0xA0,0x94,0x8D, - 0x8B,0x8C,0x84,0x81,0x93,0xAD,0x99,0x85,0x8F,0x8A,0x73,0x6D,0x7B,0x82,0x89,0x79, - 0x6E,0x6A,0x5C,0x58,0x70,0x7B,0x6C,0x76,0x80,0x82,0x8E,0x8A,0x7F,0x8C,0x84,0x6F, - 0x7D,0x75,0x70,0x8A,0x7E,0x75,0x89,0x8D,0x83,0x83,0x7C,0x82,0x9B,0x9D,0x81,0x87, - 0x89,0x6E,0x80,0x85,0x76,0x78,0x73,0x73,0x7B,0x6C,0x71,0x89,0x76,0x6E,0x75,0x77, - 0x73,0x67,0x89,0xAD,0x92,0x8A,0x9A,0x97,0x91,0x84,0x7E,0x84,0x92,0x98,0x83,0x8A, - 0x8B,0x82,0x98,0x88,0x7B,0x7D,0x6B,0x68,0x71,0x77,0x77,0x6E,0x64,0x6D,0x6D,0x65, - 0x69,0x78,0x7B,0x78,0x90,0x86,0x7B,0x8D,0x98,0xAB,0xA5,0x97,0xA3,0x90,0x7D,0x8D, - 0x91,0x9E,0x97,0x89,0x96,0x92,0x81,0x82,0x84,0x84,0x73,0x63,0x6E,0x64,0x55,0x67, - 0x8B,0x84,0x67,0x6A,0x6C,0x66,0x6C,0x77,0x81,0x87,0x7C,0x7A,0x7A,0x84,0x88,0x8B, - 0x8A,0x83,0x88,0x7E,0x8A,0x83,0x7C,0x9F,0x96,0x80,0x90,0x95,0x85,0x7A,0x73,0x75, - 0x75,0x6B,0x6E,0x78,0x81,0x75,0x6D,0x84,0x8B,0x85,0x7A,0x71,0x73,0x7A,0x95,0xA4, - 0x9D,0xA6,0xAA,0x91,0x84,0x7D,0x7F,0x80,0x72,0x7C,0x7C,0x78,0x69,0x66,0x81,0x76, - 0x6E,0x86,0x85,0x77,0x7B,0x8A,0x8C,0x80,0x88,0x8E,0x7C,0x62,0x63,0x77,0x6D,0x63, - 0x81,0x8A,0x88,0x8F,0x86,0x9A,0x9A,0x89,0x82,0x7B,0x7E,0x6E,0x7E,0x87,0x8F,0x97, - 0x93,0xA9,0xA2,0x97,0x9C,0x91,0x82,0x80,0x7A,0x73,0x6A,0x64,0x64,0x5D,0x63,0x5A, - 0x5F,0x66,0x59,0x75,0x80,0x76,0x80,0x86,0x89,0x8C,0x8F,0x99,0x9B,0x8B,0x87,0x95, - 0x93,0x83,0x85,0x88,0x7B,0x71,0x68,0x6A,0x68,0x5C,0x79,0x82,0x7F,0x88,0x84,0x87, - 0x82,0x77,0x84,0x85,0x7F,0x89,0x82,0x8D,0x81,0x78,0x83,0x83,0x88,0x88,0x92,0x88, - 0x81,0x95,0x90,0x7E,0x85,0x87,0x84,0x6C,0x5E,0x72,0x77,0x75,0x74,0x8C,0x85,0x71, - 0x76,0x76,0x85,0x79,0x7C,0x90,0x8A,0x8D,0x8C,0x82,0x81,0x81,0x76,0x73,0x78,0x73, - 0x7A,0x8D,0x8D,0x87,0xA0,0x92,0x81,0x88,0x7E,0x80,0x79,0x71,0x79,0x8F,0x95,0x8F, - 0x9F,0x98,0x8C,0x89,0x7D,0x87,0x87,0x6F,0x61,0x5E,0x61,0x5D,0x64,0x70,0x6E,0x75, - 0x76,0x7A,0x7C,0x72,0x87,0x8E,0x87,0x8E,0x94,0xA0,0x99,0x90,0x92,0x93,0x86,0x7A, - 0x80,0x79,0x71,0x6D,0x61,0x63,0x6C,0x67,0x68,0x73,0x7A,0x75,0x7B,0x85,0x95,0x9F, - 0x88,0x8E,0x93,0x8F,0x86,0x73,0x7D,0x7F,0x7E,0x7E,0x8E,0x96,0x8A,0x8A,0x85,0x89, - 0x7F,0x7C,0x86,0x81,0x75,0x71,0x74,0x72,0x7A,0x72,0x74,0x77,0x6C,0x85,0x86,0x88, - 0x8F,0x9E,0x95,0x78,0x83,0x7C,0x83,0x7E,0x74,0x7E,0x6B,0x63,0x6D,0x7B,0x83,0x7E, - 0x86,0x91,0x83,0x88,0x8E,0x7D,0x77,0x74,0x72,0x79,0x7F,0x80,0x91,0xA4,0xA3,0x9A, - 0xA7,0xB0,0x95,0x84,0x8C,0x88,0x78,0x69,0x6B,0x73,0x67,0x69,0x68,0x68,0x69,0x65, - 0x6F,0x77,0x74,0x71,0x72,0x7C,0x7A,0x7D,0x92,0x8D,0x86,0x8E,0x8A,0x8D,0x8F,0x86, - 0x80,0x74,0x6B,0x6A,0x7F,0x79,0x74,0x87,0x84,0x86,0x7E,0x89,0x87,0x7A,0x83,0x86, - 0x84,0x80,0x8D,0x8F,0x96,0x8F,0x86,0x90,0x83,0x63,0x67,0x8D,0x94,0x82,0x74,0x8D, - 0x79,0x53,0x69,0x79,0x81,0x7A,0x94,0x98,0x79,0x85,0x87,0x89,0x82,0x85,0x95,0x8F, - 0x80,0x7B,0x8E,0x8D,0x88,0x90,0x8D,0x6D,0x5D,0x5C,0x5C,0x64,0x5F,0x77,0x8A,0x80, - 0x83,0x81,0x8D,0x93,0x85,0x8D,0x94,0x92,0x8C,0x97,0xA6,0x94,0x91,0x98,0x8C,0x93, - 0x9C,0x8C,0x89,0x82,0x72,0x6F,0x71,0x61,0x67,0x70,0x68,0x6F,0x6F,0x6C,0x76,0x7B, - 0x71,0x79,0x77,0x6F,0x7E,0x7F,0x81,0x89,0x87,0x82,0x85,0x8A,0x86,0x88,0x8B,0x7C, - 0x7C,0x80,0x7E,0x82,0x87,0x82,0x73,0x78,0x88,0x8D,0x82,0x8A,0x91,0x81,0x80,0x71, - 0x72,0x8D,0x78,0x77,0x8A,0x79,0x7D,0x7E,0x85,0x92,0x8C,0x90,0x82,0x79,0x7C,0x7D, - 0x8C,0x84,0x7E,0x84,0x7B,0x7D,0x7E,0x83,0x8A,0x77,0x6E,0x7F,0x84,0x81,0x84,0x8D, - 0x97,0x8F,0x88,0x95,0x8C,0x7A,0x6D,0x72,0x66,0x50,0x6B,0x73,0x78,0x83,0x7B,0x87, - 0x8F,0x84,0x84,0x7C,0x7D,0x81,0x78,0x92,0x99,0x89,0xA4,0xA5,0x9B,0x9C,0x8E,0x9A, - 0x98,0x88,0x82,0x79,0x71,0x66,0x65,0x66,0x64,0x67,0x70,0x70,0x6D,0x6E,0x6D,0x73, - 0x72,0x72,0x7C,0x88,0x83,0x83,0x99,0x92,0x86,0x87,0x83,0x7F,0x7D,0x74,0x74,0x76, - 0x6E,0x78,0x7E,0x7F,0x85,0x88,0x94,0x94,0x8E,0x97,0x96,0x89,0x82,0x78,0x71,0x6D, - 0x72,0x7B,0x74,0x76,0x85,0x8A,0x7F,0x83,0x91,0x92,0x89,0x7D,0x78,0x77,0x7F,0x83, - 0x82,0x89,0x84,0x73,0x7D,0x88,0x77,0x7B,0x7F,0x7D,0x7F,0x74,0x75,0x7D,0x89,0x8E, - 0x98,0x99,0x86,0x84,0x80,0x7B,0x68,0x60,0x73,0x6F,0x71,0x75,0x7D,0x8D,0x86,0x8C, - 0x99,0x8E,0x7E,0x7F,0x7B,0x75,0x75,0x7B,0x9A,0x96,0x95,0x9F,0x99,0x99,0x90,0x94, - 0x92,0x88,0x77,0x72,0x76,0x64,0x60,0x6A,0x6B,0x61,0x68,0x6F,0x73,0x75,0x74,0x7B, - 0x7E,0x7F,0x83,0x91,0x90,0x84,0x85,0x8D,0x8F,0x7F,0x7C,0x89,0x80,0x6D,0x73,0x78, - 0x6D,0x6C,0x7A,0x84,0x7B,0x7C,0x8F,0x91,0x86,0x86,0x87,0x8F,0x87,0x79,0x8C,0x8D, - 0x74,0x6C,0x82,0x8A,0x78,0x78,0x8C,0x8A,0x7C,0x79,0x7E,0x80,0x77,0x7C,0x8A,0x78, - 0x6B,0x82,0x8C,0x84,0x84,0x8B,0x87,0x79,0x71,0x75,0x7B,0x7A,0x7F,0x8E,0x93,0x92, - 0x93,0x91,0x91,0x7E,0x68,0x70,0x6C,0x5F,0x6C,0x7E,0x7D,0x7B,0x89,0x95,0x88,0x7B, - 0x80,0x87,0x79,0x6E,0x85,0x92,0x81,0x81,0x90,0x95,0x8D,0x8C,0x9A,0xA3,0x9B,0x8D, - 0x84,0x86,0x76,0x61,0x76,0x7B,0x6D,0x67,0x80,0x85,0x65,0x75,0x7C,0x6A,0x6E,0x71, - 0x79,0x83,0x6F,0x7C,0x8D,0x78,0x7A,0x79,0x84,0x87,0x78,0x87,0x81,0x7A,0x77,0x70, - 0x86,0x7B,0x77,0x90,0x8C,0x86,0x8B,0x90,0x8D,0x86,0x7A,0x78,0x76,0x6E,0x7E,0x8C, - 0x85,0x7E,0x89,0x92,0x89,0x7E,0x88,0x8E,0x85,0x7B,0x80,0x8C,0x81,0x7B,0x80,0x89, - 0x80,0x71,0x83,0x7F,0x6F,0x69,0x6B,0x73,0x6D,0x6E,0x80,0x8F,0x95,0x92,0x9B,0x9D, - 0x8B,0x86,0x85,0x79,0x70,0x65,0x67,0x72,0x77,0x83,0x87,0x91,0x93,0x8F,0x92,0x82, - 0x79,0x76,0x70,0x74,0x7B,0x7C,0x8D,0x89,0x8D,0xA3,0x98,0x92,0x9B,0x9F,0x95,0x7C, - 0x7E,0x8B,0x6E,0x5D,0x65,0x70,0x6D,0x60,0x72,0x7B,0x7F,0x72,0x6D,0x87,0x7C,0x6C, - 0x75,0x85,0x83,0x76,0x82,0x8F,0x89,0x84,0x89,0x85,0x7D,0x76,0x7D,0x82,0x70,0x83, - 0x92,0x7D,0x82,0x87,0x83,0x92,0x84,0x7A,0x8C,0x7E,0x73,0x78,0x7A,0x7A,0x6D,0x72, - 0x83,0x80,0x7C,0x89,0x90,0x8C,0x88,0x86,0x8D,0x84,0x7C,0x8B,0x8B,0x82,0x83,0x8E, - 0x93,0x7F,0x74,0x73,0x6C,0x68,0x6B,0x78,0x81,0x86,0x86,0x90,0x96,0x8E,0x94,0x95, - 0x8B,0x7E,0x78,0x73,0x69,0x6A,0x74,0x78,0x77,0x7D,0x88,0x8A,0x7F,0x7F,0x88,0x80, - 0x78,0x73,0x76,0x7F,0x7C,0x85,0x8F,0x98,0xA4,0x97,0x9E,0xAA,0x9A,0x8E,0x85,0x80, - 0x74,0x70,0x6D,0x6C,0x71,0x71,0x6C,0x6A,0x6A,0x70,0x73,0x69,0x77,0x85,0x82,0x7D, - 0x81,0x8A,0x83,0x82,0x8C,0x8A,0x8C,0x8A,0x82,0x88,0x84,0x6F,0x6F,0x78,0x77,0x73, - 0x7A,0x88,0x83,0x85,0x8F,0x88,0x85,0x7C,0x74,0x7C,0x7B,0x7A,0x7D,0x84,0x7E,0x78, - 0x7E,0x7D,0x89,0x8D,0x89,0x90,0x92,0x88,0x80,0x85,0x86,0x83,0x84,0x85,0x84,0x81, - 0x78,0x6D,0x6B,0x70,0x6C,0x6A,0x79,0x7C,0x85,0x89,0x8A,0x9B,0xA0,0x99,0x91,0x91, - 0x82,0x6E,0x71,0x73,0x73,0x78,0x76,0x82,0x7E,0x7B,0x85,0x82,0x82,0x78,0x74,0x78, - 0x77,0x6F,0x78,0x86,0x84,0x8B,0x8F,0x9C,0x9D,0x96,0x99,0x9C,0x94,0x87,0x86,0x7F, - 0x77,0x77,0x78,0x75,0x77,0x77,0x76,0x7A,0x76,0x6A,0x6D,0x70,0x6B,0x6B,0x72,0x79, - 0x76,0x77,0x87,0x86,0x81,0x8D,0x90,0x87,0x7A,0x82,0x88,0x7C,0x71,0x76,0x7E,0x75, - 0x7D,0x88,0x8F,0x93,0x82,0x89,0x8B,0x7D,0x73,0x7A,0x8F,0x82,0x82,0x92,0x84,0x81, - 0x7F,0x84,0x89,0x7B,0x7E,0x82,0x83,0x83,0x7C,0x7F,0x8C,0x7F,0x7C,0x88,0x76,0x75, - 0x77,0x73,0x77,0x73,0x72,0x73,0x79,0x7D,0x7F,0x8A,0x94,0x90,0x90,0x93,0x83,0x80, - 0x82,0x71,0x6E,0x73,0x7B,0x81,0x7C,0x82,0x87,0x8D,0x87,0x80,0x8B,0x7F,0x72,0x7C, - 0x81,0x7E,0x85,0x82,0x80,0x87,0x86,0x84,0x88,0x8E,0x8B,0x87,0x86,0x81,0x7A,0x80, - 0x83,0x79,0x7B,0x8A,0x83,0x79,0x81,0x81,0x7B,0x76,0x74,0x76,0x76,0x73,0x79,0x80, - 0x80,0x83,0x84,0x86,0x88,0x80,0x7C,0x7E,0x70,0x72,0x7E,0x73,0x72,0x71,0x7B,0x8B, - 0x7B,0x7B,0x91,0x8A,0x7D,0x7E,0x89,0x8C,0x81,0x7D,0x84,0x84,0x7B,0x77,0x88,0x8D, - 0x87,0x8B,0x88,0x8C,0x82,0x76,0x83,0x85,0x82,0x83,0x82,0x81,0x81,0x81,0x7B,0x77, - 0x76,0x72,0x78,0x79,0x77,0x82,0x89,0x72,0x70,0x8A,0x83,0x6F,0x76,0x87,0x8D,0x91, - 0x8F,0x8C,0x88,0x80,0x89,0x97,0x93,0x91,0x91,0x91,0x8B,0x85,0x7E,0x77,0x70,0x64, - 0x65,0x69,0x67,0x61,0x68,0x79,0x7C,0x7B,0x75,0x77,0x77,0x6D,0x6E,0x76,0x7A,0x7E, - 0x82,0x8B,0x93,0x87,0x8D,0x9A,0x8E,0xA0,0xB4,0xAE,0x9D,0x9F,0xAC,0x90,0x8D,0x93, - 0x85,0x89,0x89,0x8B,0x86,0x7F,0x79,0x78,0x79,0x69,0x5E,0x62,0x5F,0x5D,0x6A,0x68, - 0x69,0x5A,0x49,0x50,0x51,0x4D,0x4C,0x59,0x5D,0x61,0x67,0x76,0x81,0x73,0x7A,0x8A, - 0x8E,0x92,0x94,0x94,0x99,0x95,0x8F,0xA2,0xAE,0xB5,0xBC,0xC2,0xC9,0xC7,0xC9,0xC5, - 0xC0,0xBA,0xA7,0x95,0x8D,0x92,0x93,0x90,0x98,0x93,0x88,0x80,0x74,0x70,0x69,0x60, - 0x57,0x57,0x5B,0x4A,0x43,0x4B,0x47,0x43,0x42,0x4A,0x52,0x4F,0x51,0x55,0x5F,0x64, - 0x69,0x78,0x80,0x7F,0x80,0x8D,0x8F,0x8E,0x90,0x8A,0x92,0x90,0x8E,0x96,0x86,0x7F, - 0x86,0x8C,0x8E,0x8A,0x84,0x76,0x75,0x79,0x75,0x70,0x69,0x69,0x6A,0x73,0x75,0x71, - 0x72,0x71,0x74,0x73,0x78,0x7B,0x83,0x8C,0x8C,0x89,0x7F,0x7D,0x87,0x89,0x8A,0x8B, - 0x8C,0x8C,0x86,0x83,0x86,0x85,0x82,0x82,0x8A,0x8E,0x86,0x89,0x8F,0x91,0x96,0x95, - 0xA0,0xA2,0x9F,0xAA,0xA9,0xAB,0xB3,0xB3,0xB6,0xBA,0xB5,0xAF,0xAF,0xAA,0xA2,0x9D, - 0x9D,0x9A,0x92,0x90,0x8A,0x82,0x7D,0x77,0x73,0x6E,0x65,0x61,0x64,0x5E,0x5A,0x5B, - 0x58,0x54,0x52,0x51,0x4F,0x49,0x46,0x4D,0x51,0x4F,0x55,0x5B,0x62,0x69,0x6C,0x79, - 0x7E,0x7E,0x84,0x89,0x8C,0x8C,0x8C,0x8D,0x91,0x94,0x95,0x9A,0x9D,0x9E,0xA2,0xA1, - 0x9C,0x9D,0x9C,0x9B,0x98,0x93,0x93,0x92,0x92,0x91,0x90,0x8E,0x8B,0x87,0x83,0x81, - 0x7C,0x75,0x74,0x70,0x64,0x61,0x5E,0x5A,0x57,0x50,0x4E,0x4B,0x46,0x46,0x47,0x44, - 0x40,0x40,0x41,0x3E,0x3E,0x42,0x42,0x43,0x46,0x48,0x4A,0x4F,0x56,0x59,0x5E,0x64, - 0x69,0x72,0x78,0x7E,0x85,0x8E,0x95,0x97,0xA1,0xB1,0xB5,0xB7,0xC0,0xCC,0xD1,0xCF, - 0xCF,0xD1,0xD6,0xD2,0xD0,0xD2,0xC7,0xC0,0xC2,0xC3,0xBE,0xB7,0xB3,0xB5,0xB6,0xB1, - 0xAA,0xA9,0xA4,0x9C,0x97,0x92,0x8A,0x86,0x8C,0x8B,0x82,0x7E,0x7F,0x7E,0x7A,0x6D, - 0x64,0x66,0x64,0x64,0x66,0x68,0x6F,0x79,0x7B,0x74,0x75,0x7A,0x75,0x6E,0x69,0x6D, - 0x71,0x6E,0x6C,0x6B,0x6B,0x74,0x79,0x71,0x70,0x73,0x70,0x6F,0x6E,0x6A,0x6F,0x75, - 0x76,0x7B,0x82,0x88,0x90,0x8A,0x85,0x92,0x93,0x8B,0x90,0x98,0x9A,0x98,0x95,0x97, - 0xA2,0xA9,0xA1,0x9D,0x9E,0x99,0x93,0x88,0x7D,0x83,0x8A,0x83,0x7E,0x80,0x81,0x7F, - 0x6D,0x5F,0x67,0x66,0x5D,0x5D,0x60,0x5E,0x53,0x49,0x4D,0x5C,0x59,0x48,0x46,0x4B, - 0x46,0x3E,0x36,0x39,0x46,0x48,0x44,0x4D,0x56,0x58,0x57,0x4E,0x53,0x61,0x5E,0x5D, - 0x66,0x6C,0x69,0x64,0x67,0x75,0x85,0x82,0x7E,0x8C,0x95,0x92,0x8F,0x94,0xA2,0xB1, - 0xB2,0xBA,0xC9,0xD0,0xD0,0xC7,0xC2,0xCB,0xCB,0xC1,0xC5,0xCA,0xC3,0xB8,0xAE,0xAC, - 0xBB,0xBB,0xA6,0xA5,0xAB,0x9D,0x8B,0x80,0x83,0x8D,0x83,0x7A,0x84,0x87,0x7F,0x74, - 0x6E,0x77,0x7C,0x74,0x77,0x82,0x81,0x78,0x76,0x76,0x82,0x91,0x85,0x80,0x8C,0x88, - 0x7C,0x75,0x76,0x82,0x86,0x7C,0x7F,0x87,0x84,0x7C,0x75,0x76,0x7C,0x74,0x71,0x7E, - 0x80,0x77,0x75,0x73,0x7A,0x8B,0x85,0x7C,0x86,0x85,0x75,0x6E,0x6B,0x71,0x79,0x71, - 0x72,0x7F,0x7D,0x77,0x74,0x72,0x79,0x79,0x75,0x7F,0x84,0x7C,0x74,0x70,0x6E,0x7B, - 0x83,0x76,0x7A,0x7F,0x70,0x66,0x63,0x64,0x6E,0x6D,0x6A,0x73,0x77,0x6D,0x69,0x67, - 0x67,0x6C,0x6D,0x71,0x7A,0x75,0x6B,0x6B,0x6B,0x75,0x86,0x7F,0x7A,0x85,0x7E,0x73, - 0x72,0x73,0x7C,0x7F,0x7A,0x81,0x89,0x81,0x79,0x78,0x78,0x7C,0x7D,0x81,0x8C,0x8B, - 0x81,0x80,0x80,0x82,0x94,0x9F,0x96,0x9D,0xA2,0x95,0x8B,0x87,0x8A,0x92,0x90,0x8E, - 0x97,0x94,0x86,0x7F,0x7C,0x7B,0x7B,0x7B,0x81,0x85,0x79,0x6E,0x6D,0x6B,0x76,0x88, - 0x82,0x81,0x8B,0x81,0x77,0x76,0x78,0x80,0x84,0x82,0x8A,0x91,0x86,0x80,0x82,0x80, - 0x83,0x88,0x8D,0x93,0x90,0x87,0x85,0x83,0x83,0x98,0x9E,0x93,0x9B,0x9B,0x8E,0x89, - 0x87,0x8D,0x96,0x95,0x99,0xA4,0xA0,0x96,0x96,0x95,0x94,0x99,0x9D,0xA4,0xA5,0x9B, - 0x94,0x91,0x8D,0x93,0xA3,0x9F,0x97,0x9B,0x93,0x83,0x7C,0x7B,0x7D,0x7D,0x7A,0x7B, - 0x7B,0x71,0x66,0x63,0x5F,0x5F,0x62,0x64,0x66,0x62,0x57,0x52,0x4E,0x4D,0x5E,0x63, - 0x58,0x5F,0x60,0x4F,0x45,0x43,0x47,0x4A,0x49,0x4C,0x55,0x50,0x45,0x48,0x49,0x47, - 0x4B,0x50,0x59,0x5D,0x59,0x56,0x56,0x54,0x5D,0x72,0x6F,0x6D,0x7B,0x77,0x6C,0x6B, - 0x72,0x7E,0x82,0x85,0x93,0x9B,0x92,0x8F,0x95,0x95,0x99,0xA2,0xAB,0xB3,0xB2,0xAC, - 0xA8,0xA3,0xA1,0xAD,0xBB,0xAF,0xAD,0xB5,0xA6,0x97,0x92,0x94,0x98,0x96,0x94,0x9D, - 0x9D,0x8F,0x8C,0x8E,0x8B,0x8B,0x8F,0x94,0x98,0x98,0x92,0x8E,0x8C,0x8D,0x9F,0xA9, - 0x9C,0xA3,0xAB,0x9C,0x91,0x93,0x99,0x9E,0x9B,0x9D,0xA9,0xA5,0x97,0x96,0x96,0x8E, - 0x8F,0x94,0x98,0x9A,0x97,0x90,0x8A,0x84,0x84,0x98,0x9E,0x90,0x97,0x9B,0x89,0x7F, - 0x7F,0x84,0x86,0x81,0x84,0x8E,0x85,0x77,0x78,0x74,0x6B,0x6B,0x70,0x72,0x71,0x6D, - 0x66,0x5C,0x56,0x56,0x64,0x66,0x59,0x60,0x62,0x4E,0x42,0x44,0x47,0x48,0x45,0x4C, - 0x54,0x4B,0x40,0x44,0x42,0x3B,0x40,0x47,0x4D,0x4C,0x49,0x47,0x43,0x3E,0x42,0x58, - 0x5E,0x53,0x5C,0x64,0x56,0x4F,0x55,0x5F,0x63,0x62,0x6B,0x78,0x71,0x6B,0x74,0x77, - 0x77,0x7D,0x87,0x91,0x95,0x95,0x98,0x98,0x98,0x97,0xAE,0xC1,0xB2,0xB8,0xC6,0xBB, - 0xB0,0xB5,0xBE,0xC4,0xC3,0xC4,0xD0,0xC9,0xB8,0xBD,0xBF,0xB6,0xB6,0xBB,0xBC,0xBA, - 0xB1,0xAC,0xA5,0x9E,0x97,0xA0,0xB4,0xA5,0x99,0xA5,0x9B,0x87,0x87,0x8D,0x92,0x91, - 0x90,0x99,0x9A,0x88,0x86,0x8C,0x84,0x84,0x8C,0x90,0x92,0x8D,0x8A,0x87,0x81,0x7B, - 0x7E,0x96,0x96,0x83,0x8E,0x8F,0x79,0x70,0x78,0x7E,0x7E,0x7B,0x82,0x8A,0x7B,0x71, - 0x7B,0x77,0x6F,0x75,0x7D,0x7E,0x7A,0x78,0x76,0x6F,0x6D,0x69,0x78,0x8A,0x77,0x75, - 0x80,0x70,0x5E,0x60,0x66,0x67,0x62,0x61,0x6B,0x63,0x50,0x52,0x55,0x49,0x47,0x50, - 0x52,0x52,0x4E,0x4C,0x49,0x44,0x40,0x44,0x5D,0x5E,0x4C,0x58,0x5B,0x46,0x41,0x4A, - 0x52,0x57,0x56,0x60,0x6D,0x5F,0x58,0x65,0x63,0x5F,0x69,0x73,0x78,0x79,0x78,0x79, - 0x77,0x77,0x75,0x82,0x9E,0x95,0x8E,0xA0,0x98,0x88,0x8B,0x96,0x9F,0xA2,0xA3,0xB2, - 0xB7,0xA8,0xAA,0xB5,0xB0,0xB1,0xBD,0xC2,0xC7,0xC5,0xBF,0xBD,0xB6,0xB2,0xAA,0xB6, - 0xC9,0xB6,0xAB,0xB5,0xA5,0x90,0x8F,0x93,0x96,0x93,0x8F,0x98,0x93,0x7F,0x7E,0x82, - 0x7A,0x79,0x80,0x83,0x84,0x7E,0x7B,0x79,0x74,0x73,0x6F,0x82,0x95,0x82,0x7F,0x8D, - 0x7E,0x6E,0x73,0x7C,0x84,0x83,0x81,0x8D,0x8A,0x77,0x7C,0x82,0x7B,0x7B,0x82,0x87, - 0x87,0x81,0x7F,0x7F,0x7C,0x7A,0x77,0x8D,0x9B,0x85,0x83,0x8E,0x7B,0x6D,0x73,0x7A, - 0x80,0x7D,0x7B,0x83,0x7C,0x6C,0x6F,0x74,0x6E,0x6D,0x73,0x78,0x77,0x6E,0x6B,0x6A, - 0x65,0x61,0x5C,0x70,0x7D,0x65,0x63,0x6D,0x5A,0x4E,0x54,0x5A,0x61,0x5C,0x57,0x62, - 0x5C,0x4D,0x51,0x57,0x52,0x54,0x59,0x5F,0x61,0x5C,0x5D,0x61,0x5F,0x5D,0x5B,0x73, - 0x82,0x6B,0x6B,0x7B,0x6D,0x63,0x6A,0x75,0x81,0x7C,0x7A,0x8D,0x8C,0x7D,0x83,0x8C, - 0x8C,0x8D,0x93,0x9C,0xA0,0x9B,0x9D,0xA0,0x9E,0x9E,0x9C,0xB4,0xC3,0xAB,0xAA,0xB5, - 0xA5,0x9A,0x9C,0xA3,0xAB,0xA0,0x98,0xA2,0x9B,0x86,0x86,0x8C,0x87,0x83,0x83,0x87, - 0x86,0x7A,0x77,0x79,0x78,0x72,0x6F,0x8B,0x93,0x7A,0x7D,0x85,0x77,0x71,0x73,0x7D, - 0x8A,0x81,0x7C,0x89,0x84,0x78,0x7B,0x82,0x84,0x83,0x84,0x8B,0x8D,0x86,0x86,0x89, - 0x88,0x83,0x83,0x9F,0xA7,0x8E,0x92,0x9A,0x8D,0x88,0x89,0x94,0x9F,0x96,0x90,0x99, - 0x94,0x87,0x87,0x8B,0x8D,0x8B,0x89,0x8C,0x8D,0x84,0x81,0x7F,0x7F,0x79,0x75,0x8C, - 0x91,0x78,0x79,0x7B,0x6D,0x68,0x67,0x6F,0x78,0x6D,0x66,0x6C,0x69,0x5E,0x5D,0x5F, - 0x61,0x61,0x5F,0x62,0x64,0x60,0x5C,0x5B,0x5F,0x5A,0x57,0x71,0x77,0x64,0x67,0x69, - 0x62,0x60,0x5E,0x6B,0x77,0x6F,0x6B,0x74,0x73,0x6F,0x70,0x74,0x7E,0x83,0x81,0x87, - 0x8D,0x8B,0x88,0x89,0x90,0x8E,0x91,0xAF,0xB0,0x9E,0xA3,0xA3,0x9C,0x9D,0x9B,0xA6, - 0xB2,0xA7,0xA1,0xA5,0x9F,0x98,0x95,0x95,0x98,0x96,0x92,0x90,0x8F,0x86,0x7E,0x7B, - 0x7C,0x73,0x78,0x90,0x86,0x74,0x77,0x72,0x6E,0x6B,0x6B,0x79,0x80,0x75,0x72,0x74, - 0x72,0x70,0x6E,0x72,0x7B,0x7E,0x7C,0x7E,0x7F,0x7D,0x7A,0x7A,0x7D,0x79,0x88,0xA0, - 0x93,0x88,0x8D,0x84,0x83,0x83,0x85,0x95,0x9C,0x92,0x8D,0x8E,0x8F,0x8D,0x8B,0x8D, - 0x97,0x9A,0x93,0x93,0x95,0x93,0x8D,0x8A,0x8A,0x86,0x96,0xA5,0x93,0x89,0x87,0x7E, - 0x7D,0x78,0x78,0x86,0x88,0x7B,0x71,0x71,0x72,0x6F,0x6A,0x6A,0x73,0x74,0x6D,0x68, - 0x68,0x67,0x61,0x5E,0x5E,0x5C,0x70,0x7E,0x6C,0x62,0x60,0x5C,0x5F,0x5B,0x5D,0x6D, - 0x72,0x68,0x60,0x5F,0x64,0x67,0x63,0x63,0x6D,0x73,0x70,0x6D,0x6F,0x74,0x73,0x74, - 0x73,0x74,0x8D,0x9C,0x8D,0x85,0x87,0x8A,0x8E,0x8A,0x8E,0x9E,0xA6,0xA1,0x9A,0x99, - 0xA0,0xA3,0xA0,0x9E,0xA2,0xA7,0xA5,0x9E,0x9B,0x9A,0x96,0x94,0x8C,0x8A,0xA0,0xA9, - 0x98,0x8C,0x84,0x83,0x86,0x7E,0x79,0x80,0x85,0x80,0x75,0x6E,0x71,0x76,0x73,0x6E, - 0x70,0x78,0x7B,0x77,0x72,0x72,0x73,0x75,0x70,0x72,0x89,0x93,0x89,0x7E,0x74,0x76, - 0x7F,0x7E,0x7D,0x85,0x8B,0x8D,0x87,0x7C,0x7B,0x82,0x83,0x82,0x83,0x87,0x8A,0x8A, - 0x85,0x81,0x81,0x83,0x7F,0x86,0x99,0x9D,0x97,0x8B,0x7F,0x7F,0x85,0x84,0x87,0x8B, - 0x8C,0x8E,0x8A,0x81,0x80,0x81,0x84,0x85,0x84,0x84,0x84,0x84,0x80,0x78,0x74,0x72, - 0x6F,0x7A,0x8A,0x88,0x7F,0x75,0x69,0x6C,0x70,0x6B,0x6E,0x72,0x74,0x78,0x76,0x6F, - 0x6E,0x6F,0x71,0x75,0x76,0x77,0x79,0x7A,0x7A,0x77,0x73,0x72,0x72,0x81,0x8F,0x8B, - 0x86,0x7F,0x78,0x7C,0x7F,0x7B,0x7B,0x7D,0x7E,0x82,0x83,0x80,0x81,0x7F,0x7F,0x84, - 0x84,0x83,0x83,0x84,0x85,0x85,0x86,0x85,0x82,0x8A,0x93,0x91,0x8F,0x8B,0x84,0x86, - 0x89,0x83,0x83,0x81,0x7E,0x81,0x81,0x7F,0x7F,0x7D,0x7C,0x7E,0x7E,0x7C,0x7A,0x79, - 0x78,0x78,0x79,0x78,0x76,0x75,0x79,0x7D,0x79,0x7A,0x7A,0x77,0x7D,0x7E,0x7A,0x7E, - 0x7D,0x7A,0x7E,0x7E,0x7D,0x7E,0x7D,0x7E,0x82,0x82,0x81,0x82,0x83,0x83,0x83,0x83, - 0x83,0x82,0x87,0x8C,0x88,0x88,0x89,0x85,0x8A,0x8D,0x88,0x89,0x87,0x84,0x87,0x86, - 0x82,0x83,0x82,0x82,0x85,0x86,0x85,0x85,0x85,0x86,0x87,0x87,0x86,0x85,0x84,0x8A, - 0x8C,0x85,0x86,0x86,0x83,0x89,0x89,0x84,0x85,0x81,0x7C,0x7E,0x7A,0x77,0x79,0x77, - 0x76,0x79,0x79,0x77,0x78,0x78,0x7A,0x7C,0x7D,0x7D,0x7B,0x7B,0x82,0x82,0x7C,0x7F, - 0x7F,0x7E,0x85,0x83,0x7F,0x7E,0x7A,0x79,0x86,0x83,0x60,0x67,0x7E,0x86,0x75,0x77, - 0x92,0x70,0x70,0x86,0x82,0x81,0x88,0x95,0x80,0x80,0x90,0x8D,0x86,0x80,0x8C,0x8B, - 0x7E,0x76,0x7F,0x83,0x7F,0x82,0x84,0x7C,0x6E,0x72,0x71,0x72,0x74,0x7A,0x7B,0x77, - 0x82,0x80,0x81,0x86,0x89,0x87,0x82,0x89,0x86,0x82,0x86,0x7D,0x7F,0x81,0x7A,0x79, - 0x7A,0x78,0x74,0x74,0x72,0x6F,0x74,0x72,0x6D,0x70,0x71,0x6E,0x70,0x75,0x7A,0x87, - 0x8D,0x81,0x7F,0x85,0x8F,0x92,0x8C,0x91,0x8E,0x88,0x90,0x90,0x88,0x8B,0x89,0x81, - 0x85,0x84,0x81,0x82,0x81,0x7C,0x74,0x77,0x80,0x7B,0x77,0x80,0x81,0x7D,0x7F,0x82, - 0x83,0x7F,0x80,0x87,0x85,0x80,0x80,0x7E,0x89,0x90,0x87,0x87,0x85,0x7B,0x7F,0x87, - 0x83,0x80,0x7E,0x7B,0x80,0x85,0x83,0x81,0x83,0x82,0x7F,0x7D,0x7F,0x7E,0x7E,0x7F, - 0x7F,0x84,0x7D,0x80,0x87,0x7F,0x81,0x85,0x81,0x7D,0x81,0x7D,0x78,0x7F,0x79,0x78, - 0x7A,0x79,0x7C,0x79,0x7E,0x81,0x7C,0x84,0x84,0x88,0x8B,0x89,0x8A,0x87,0x84,0x88, - 0x8F,0x81,0x7E,0x8B,0x84,0x81,0x86,0x7F,0x81,0x83,0x7D,0x7C,0x79,0x76,0x78,0x7C, - 0x7A,0x77,0x76,0x77,0x7C,0x78,0x7B,0x82,0x88,0x88,0x83,0x85,0x86,0x84,0x82,0x86, - 0x86,0x84,0x7F,0x7E,0x8A,0x87,0x7B,0x7D,0x78,0x78,0x76,0x71,0x71,0x6E,0x73,0x75, - 0x7A,0x77,0x79,0x7F,0x7B,0x7E,0x81,0x85,0x85,0x85,0x87,0x86,0x86,0x8F,0x91,0x8C, - 0x8F,0x87,0x84,0x88,0x82,0x7D,0x81,0x83,0x7C,0x7E,0x7F,0x79,0x7B,0x79,0x7B,0x80, - 0x7E,0x7D,0x7D,0x83,0x81,0x83,0x88,0x84,0x8A,0x88,0x82,0x85,0x8A,0x8C,0x8B,0x87, - 0x83,0x80,0x82,0x85,0x7C,0x7C,0x7C,0x76,0x79,0x7C,0x80,0x7C,0x7C,0x79,0x75,0x7A, - 0x7B,0x7A,0x7E,0x7F,0x83,0x85,0x82,0x88,0x86,0x87,0x86,0x81,0x86,0x81,0x7E,0x80, - 0x83,0x89,0x8A,0x7F,0x7C,0x7B,0x75,0x78,0x7B,0x79,0x7C,0x7F,0x78,0x7C,0x81,0x80, - 0x81,0x82,0x81,0x86,0x87,0x88,0x88,0x83,0x83,0x80,0x7E,0x86,0x91,0x8B,0x89,0x85, - 0x7C,0x82,0x81,0x82,0x7F,0x73,0x71,0x76,0x7A,0x7F,0x82,0x79,0x77,0x7B,0x7B,0x7D, - 0x7F,0x7E,0x80,0x88,0x83,0x7F,0x82,0x80,0x7E,0x78,0x78,0x84,0x8D,0x90,0x8B,0x7E, - 0x7A,0x80,0x7D,0x76,0x75,0x6B,0x6D,0x7F,0x83,0x85,0x85,0x7E,0x7E,0x86,0x82,0x7F, - 0x7D,0x7B,0x7D,0x81,0x84,0x81,0x84,0x82,0x7F,0x7A,0x77,0x8A,0x9D,0x98,0x8E,0x80, - 0x75,0x7F,0x7D,0x7A,0x7B,0x76,0x78,0x86,0x8D,0x87,0x88,0x85,0x82,0x85,0x84,0x82, - 0x84,0x80,0x81,0x88,0x85,0x81,0x7E,0x7F,0x7E,0x78,0x75,0x82,0x8F,0x90,0x8D,0x7D, - 0x72,0x7E,0x7A,0x73,0x79,0x72,0x76,0x88,0x89,0x81,0x80,0x7F,0x82,0x8A,0x84,0x7D, - 0x79,0x7C,0x81,0x81,0x82,0x82,0x84,0x7D,0x7B,0x75,0x71,0x8B,0x8F,0x88,0x85,0x74, - 0x77,0x7C,0x76,0x73,0x71,0x75,0x7B,0x86,0x85,0x80,0x83,0x82,0x88,0x87,0x81,0x7E, - 0x81,0x86,0x82,0x84,0x83,0x83,0x88,0x82,0x7E,0x7C,0x7C,0x93,0x8E,0x80,0x87,0x78, - 0x7C,0x87,0x79,0x75,0x77,0x76,0x7B,0x7D,0x7C,0x73,0x75,0x82,0x84,0x81,0x7B,0x78, - 0x7D,0x7F,0x7A,0x7F,0x83,0x83,0x86,0x80,0x7D,0x74,0x78,0x94,0x90,0x81,0x85,0x7E, - 0x83,0x86,0x74,0x73,0x74,0x76,0x7E,0x7D,0x7A,0x78,0x80,0x8A,0x83,0x7C,0x7F,0x7E, - 0x82,0x83,0x7D,0x81,0x86,0x81,0x82,0x81,0x7A,0x78,0x8C,0x9A,0x88,0x87,0x88,0x84, - 0x8C,0x81,0x77,0x79,0x76,0x7C,0x7F,0x7C,0x7F,0x7E,0x89,0x8E,0x7F,0x82,0x81,0x7B, - 0x80,0x76,0x7A,0x87,0x82,0x84,0x82,0x7D,0x7B,0x82,0x97,0x8C,0x82,0x86,0x7D,0x84, - 0x81,0x70,0x78,0x7A,0x77,0x80,0x7A,0x7A,0x7F,0x82,0x87,0x85,0x81,0x83,0x82,0x81, - 0x7C,0x78,0x80,0x7F,0x7F,0x7D,0x79,0x77,0x7E,0x91,0x89,0x80,0x87,0x7D,0x85,0x88, - 0x70,0x76,0x78,0x78,0x83,0x79,0x78,0x81,0x82,0x86,0x87,0x80,0x83,0x86,0x84,0x7F, - 0x7C,0x84,0x82,0x81,0x7E,0x79,0x78,0x81,0x93,0x8D,0x84,0x86,0x7F,0x84,0x81,0x6F, - 0x7A,0x7C,0x73,0x7E,0x74,0x71,0x82,0x7F,0x80,0x84,0x7F,0x86,0x84,0x81,0x80,0x7B, - 0x80,0x80,0x7E,0x7D,0x7D,0x79,0x86,0x8D,0x81,0x87,0x88,0x7E,0x88,0x86,0x78,0x7F, - 0x78,0x77,0x7F,0x78,0x7A,0x7E,0x7C,0x83,0x81,0x7C,0x87,0x85,0x7E,0x84,0x84,0x81, - 0x7F,0x7D,0x80,0x7A,0x74,0x87,0x8B,0x84,0x89,0x84,0x80,0x8D,0x84,0x7A,0x85,0x79, - 0x7B,0x7E,0x71,0x7B,0x7D,0x7A,0x85,0x80,0x7D,0x8C,0x84,0x81,0x86,0x7F,0x7E,0x7E, - 0x7C,0x7F,0x7A,0x7B,0x8B,0x87,0x84,0x87,0x7F,0x85,0x8D,0x82,0x7F,0x83,0x78,0x7F, - 0x7A,0x71,0x7C,0x7D,0x7C,0x82,0x7D,0x80,0x89,0x83,0x87,0x85,0x83,0x86,0x7E,0x7D, - 0x7E,0x75,0x79,0x88,0x7F,0x81,0x89,0x83,0x8B,0x89,0x7F,0x80,0x7E,0x7A,0x7F,0x76, - 0x75,0x7D,0x77,0x7E,0x80,0x7D,0x86,0x85,0x82,0x85,0x81,0x83,0x81,0x79,0x7C,0x7B, - 0x78,0x82,0x87,0x82,0x87,0x86,0x85,0x8A,0x7F,0x7E,0x83,0x7B,0x7F,0x79,0x70,0x7B, - 0x76,0x75,0x7C,0x7C,0x80,0x85,0x84,0x86,0x89,0x85,0x86,0x80,0x7F,0x7C,0x78,0x83, - 0x84,0x80,0x88,0x85,0x82,0x8F,0x86,0x81,0x89,0x80,0x7F,0x80,0x76,0x7C,0x7E,0x7B, - 0x7F,0x7D,0x82,0x87,0x86,0x87,0x89,0x85,0x85,0x82,0x7B,0x7B,0x76,0x7F,0x86,0x7E, - 0x85,0x85,0x82,0x8A,0x81,0x7F,0x85,0x7B,0x7B,0x80,0x76,0x7D,0x7F,0x7A,0x7F,0x7E, - 0x7F,0x83,0x81,0x87,0x88,0x86,0x88,0x82,0x7D,0x80,0x7A,0x7D,0x83,0x7F,0x82,0x82, - 0x82,0x86,0x82,0x80,0x85,0x7F,0x7D,0x7F,0x77,0x7A,0x7E,0x7B,0x7E,0x7E,0x80,0x85, - 0x81,0x84,0x89,0x83,0x86,0x85,0x81,0x82,0x7E,0x84,0x85,0x80,0x86,0x83,0x7D,0x85, - 0x81,0x7F,0x82,0x7B,0x7E,0x7E,0x78,0x7D,0x7B,0x7A,0x7B,0x78,0x84,0x87,0x8E,0x90, - 0x90,0x91,0x81,0x80,0x78,0x77,0x78,0x7B,0x83,0x70,0x7E,0x72,0x63,0x8D,0x85,0x72, - 0x8C,0x83,0x7A,0x6C,0x62,0x7B,0x73,0x73,0x79,0x71,0x7F,0x7D,0x78,0x80,0x7E,0x84, - 0x8C,0x84,0x7B,0x73,0x7C,0x88,0x7E,0x7E,0x80,0x77,0x81,0x88,0x82,0x83,0x84,0x93, - 0x91,0x84,0x8F,0x84,0x7C,0x90,0x94,0x92,0xA0,0xA2,0x99,0x9B,0xA3,0xA2,0x8E,0x87, - 0x90,0x90,0x96,0x9D,0x91,0x8C,0x8C,0x86,0x84,0x75,0x72,0x7C,0x7B,0x78,0x6F,0x69, - 0x6D,0x68,0x64,0x69,0x69,0x68,0x68,0x65,0x66,0x65,0x63,0x68,0x6A,0x6C,0x6A,0x68, - 0x6F,0x6F,0x6F,0x6A,0x62,0x68,0x6C,0x6B,0x69,0x62,0x67,0x69,0x66,0x6C,0x6C,0x70, - 0x76,0x75,0x77,0x7B,0x80,0x8A,0x97,0xA8,0xB2,0xAA,0x9F,0x9C,0x9B,0x9C,0x9A,0x99, - 0x98,0x94,0x8F,0x8C,0x8D,0x8F,0x8C,0x87,0x85,0x87,0x8C,0x8A,0x83,0x84,0x85,0x83, - 0x82,0x82,0x87,0x8C,0x89,0x86,0x85,0x83,0x84,0x8A,0x8C,0x87,0x8A,0x88,0x86,0x87, - 0x82,0x7F,0x84,0x7F,0x7A,0x7F,0x79,0x79,0x7C,0x7B,0x7D,0x82,0x86,0x8B,0x8C,0x8C, - 0x8E,0x90,0x90,0x91,0x92,0x8E,0x95,0x92,0x94,0x96,0x90,0x90,0x8F,0x8D,0x8A,0x8B, - 0x88,0x83,0x7C,0x71,0x73,0x70,0x65,0x67,0x69,0x69,0x6C,0x65,0x67,0x6B,0x63,0x5F, - 0x60,0x55,0x56,0x6A,0x62,0x5D,0x63,0x61,0x68,0x61,0x55,0x62,0x66,0x5F,0x5B,0x55, - 0x62,0x67,0x5B,0x5F,0x67,0x67,0x65,0x62,0x6B,0x6F,0x65,0x6A,0x69,0x6F,0x6D,0x81, - 0x9C,0x91,0x9D,0xA7,0xAB,0xAA,0x8F,0x98,0xA9,0x98,0x9C,0xA1,0xA4,0xAD,0x96,0x8E, - 0x98,0x8F,0x89,0x88,0x92,0x9A,0x92,0x8D,0x88,0x7B,0x83,0xA0,0x98,0x8E,0xA0,0x98, - 0x92,0x7E,0x75,0x8F,0x88,0x84,0x91,0x95,0x9E,0x8F,0x7D,0x8E,0x8B,0x7E,0x82,0x86, - 0x92,0x86,0x7F,0x84,0x80,0x86,0x7B,0x8F,0xAD,0x94,0x91,0x9C,0x92,0x92,0x84,0x8B, - 0xA4,0x94,0x91,0x9B,0x99,0x98,0x86,0x83,0x94,0x8B,0x8A,0x93,0x90,0x8C,0x7E,0x74, - 0x76,0x6A,0x6F,0x8C,0x7E,0x7A,0x80,0x6F,0x6A,0x58,0x5A,0x6E,0x62,0x5E,0x69,0x66, - 0x60,0x50,0x50,0x5C,0x57,0x5B,0x65,0x6C,0x68,0x5C,0x59,0x5A,0x5C,0x62,0x59,0x73, - 0x7C,0x5D,0x67,0x66,0x5C,0x5F,0x5B,0x70,0x7C,0x6C,0x77,0x7E,0x75,0x7C,0x7D,0x90, - 0x9C,0x9B,0xAA,0xAF,0xA5,0xA0,0x97,0x9A,0x9C,0x8E,0xAA,0xB0,0x96,0xA1,0x99,0x8E, - 0x88,0x7C,0x93,0x97,0x84,0x93,0x93,0x89,0x82,0x7C,0x8C,0x8B,0x87,0x90,0x93,0x8E, - 0x84,0x80,0x84,0x80,0x8A,0x84,0x89,0xA1,0x84,0x80,0x8B,0x7A,0x7B,0x78,0x80,0x93, - 0x85,0x84,0x94,0x8A,0x84,0x87,0x8C,0x93,0x8F,0x97,0x9E,0x92,0x8F,0x8C,0x88,0x8F, - 0x83,0x93,0xA9,0x90,0x93,0x97,0x87,0x81,0x78,0x86,0x91,0x7B,0x83,0x8B,0x77,0x71, - 0x6D,0x71,0x75,0x6D,0x73,0x7A,0x6F,0x68,0x62,0x5E,0x58,0x5D,0x5B,0x5F,0x79,0x62, - 0x5D,0x69,0x58,0x55,0x54,0x5A,0x6B,0x62,0x61,0x71,0x63,0x5A,0x5C,0x5C,0x5E,0x5D, - 0x65,0x70,0x69,0x66,0x66,0x64,0x67,0x62,0x82,0x92,0x7E,0x94,0x9F,0x8E,0x8E,0x8E, - 0x9E,0xA6,0x9A,0xAC,0xAE,0x9B,0x99,0x97,0x94,0x90,0x8C,0x9B,0x9D,0x92,0x91,0x8C, - 0x85,0x7E,0x84,0x81,0x92,0x9F,0x89,0x95,0x92,0x7E,0x7E,0x7C,0x85,0x8B,0x85,0x92, - 0x93,0x85,0x88,0x84,0x82,0x83,0x83,0x8B,0x8A,0x84,0x8B,0x81,0x7D,0x7B,0x84,0xA3, - 0x89,0x8D,0xA8,0x90,0x84,0x87,0x89,0x8C,0x86,0x8D,0x9F,0x90,0x8B,0x93,0x8A,0x87, - 0x86,0x8C,0x96,0x8D,0x8D,0x91,0x84,0x7D,0x7E,0x7A,0x77,0x8D,0x87,0x79,0x89,0x78, - 0x6A,0x6C,0x66,0x6C,0x68,0x64,0x74,0x6B,0x5E,0x67,0x61,0x5C,0x5C,0x60,0x67,0x62, - 0x66,0x6B,0x5D,0x5C,0x59,0x5F,0x77,0x5F,0x64,0x7A,0x63,0x5C,0x65,0x63,0x62,0x62, - 0x6B,0x78,0x6D,0x71,0x7E,0x74,0x75,0x80,0x85,0x8A,0x90,0x98,0x9B,0x95,0x95,0x9A, - 0x93,0x96,0xB0,0xA1,0x9A,0xAE,0x97,0x8D,0x8C,0x86,0x8C,0x84,0x85,0x97,0x8B,0x81, - 0x8D,0x84,0x7F,0x81,0x84,0x88,0x84,0x86,0x89,0x7C,0x7C,0x7C,0x7A,0x97,0x88,0x82, - 0x9C,0x86,0x79,0x83,0x7D,0x7D,0x7D,0x80,0x90,0x89,0x82,0x90,0x89,0x80,0x89,0x8B, - 0x8B,0x8F,0x93,0x94,0x8D,0x88,0x8D,0x87,0x86,0xA3,0x96,0x8D,0xA4,0x8F,0x83,0x88, - 0x84,0x85,0x80,0x83,0x91,0x85,0x7D,0x88,0x7E,0x73,0x78,0x78,0x75,0x73,0x71,0x74, - 0x6B,0x61,0x66,0x5D,0x70,0x75,0x60,0x76,0x73,0x59,0x62,0x63,0x5D,0x5F,0x5D,0x6D, - 0x6D,0x5F,0x69,0x6A,0x5D,0x60,0x65,0x63,0x65,0x6A,0x6E,0x6A,0x67,0x6A,0x68,0x67, - 0x84,0x85,0x76,0x92,0x8E,0x7D,0x88,0x8B,0x8C,0x8D,0x91,0xA0,0x9E,0x96,0xA0,0x9C, - 0x93,0x95,0x95,0x92,0x92,0x94,0x93,0x8E,0x86,0x8A,0x7F,0x85,0x9B,0x86,0x89,0x98, - 0x82,0x7E,0x82,0x7D,0x80,0x7D,0x84,0x8D,0x82,0x82,0x88,0x7E,0x7B,0x80,0x7E,0x80, - 0x84,0x87,0x86,0x81,0x80,0x83,0x7C,0x8B,0x9B,0x87,0x92,0x9D,0x88,0x87,0x8C,0x88, - 0x8A,0x89,0x91,0x97,0x8D,0x92,0x94,0x8A,0x8A,0x8D,0x8C,0x8C,0x8E,0x8E,0x8C,0x85, - 0x83,0x7F,0x79,0x91,0x8F,0x7D,0x90,0x89,0x75,0x79,0x71,0x6E,0x70,0x6D,0x75,0x72, - 0x69,0x6F,0x6D,0x62,0x67,0x69,0x65,0x6A,0x6A,0x68,0x66,0x63,0x64,0x5D,0x5D,0x73, - 0x6A,0x63,0x78,0x69,0x5D,0x68,0x64,0x65,0x66,0x6A,0x78,0x72,0x6F,0x79,0x76,0x78, - 0x7B,0x89,0x91,0x8B,0x9D,0x88,0x82,0x95,0x8A,0x7A,0x8D,0xAA,0x9C,0xAB,0xB6,0x9E, - 0x94,0x9D,0xA4,0xA4,0x9F,0xA0,0xB1,0xA1,0x90,0x92,0x73,0x72,0x80,0x65,0x61,0x70, - 0x6B,0x5B,0x54,0x4D,0x51,0x5E,0x74,0x7C,0x5D,0x76,0x86,0x6C,0x74,0x82,0x8D,0x9B, - 0x95,0x94,0xB2,0xAE,0xC0,0xC1,0x97,0xC4,0xB8,0xA8,0xBD,0xA6,0xB9,0xB9,0x9A,0x94, - 0x8E,0x8E,0xA8,0x8A,0x7D,0x91,0x79,0x75,0x70,0x78,0x88,0x74,0x71,0x76,0x6F,0x74, - 0x67,0x4E,0x50,0x55,0x58,0x58,0x53,0x4D,0x4C,0x50,0x51,0x52,0x5D,0x6A,0x85,0x83, - 0x81,0x8A,0x73,0x6F,0x74,0x7D,0x91,0x99,0x9C,0x9C,0x8E,0x91,0x94,0x92,0x87,0x80, - 0x83,0x7E,0x80,0x70,0x73,0x6F,0x5C,0x64,0x60,0x7F,0x8B,0x65,0x68,0x65,0x4F,0x59, - 0x61,0x57,0x61,0x6B,0x6F,0x7E,0x79,0x8F,0x9C,0x8F,0x9B,0xA0,0x98,0xA1,0xA5,0x9B, - 0x95,0x84,0x80,0x82,0x84,0x98,0x9D,0x98,0xB1,0xB2,0xA9,0xB5,0xA1,0xA0,0xA2,0x89, - 0x9C,0x96,0x71,0x88,0x85,0x76,0x8A,0x80,0x74,0x71,0x6B,0x75,0x85,0x7E,0x7A,0x6B, - 0x6C,0x8B,0x73,0x66,0x6D,0x67,0x69,0x60,0x5C,0x5B,0x58,0x67,0x6F,0x71,0x6A,0x6F, - 0x82,0x85,0x81,0x8C,0x86,0x87,0x92,0x8E,0x9E,0x9D,0xA3,0xA5,0xAB,0xBA,0xAE,0xB7, - 0xBB,0xAC,0xB8,0xB4,0xB2,0xB5,0xA2,0x9F,0x9E,0x97,0x97,0x8D,0x81,0x6F,0x61,0x59, - 0x60,0x68,0x4F,0x57,0x64,0x5C,0x4D,0x32,0x31,0x36,0x38,0x4B,0x4C,0x36,0x2C,0x35, - 0x40,0x3D,0x3E,0x4B,0x4D,0x47,0x46,0x52,0x5C,0x66,0x6B,0x73,0x91,0x9A,0x96,0x8C, - 0x84,0x97,0x9F,0xAF,0xCD,0xC0,0xCB,0xDC,0xC2,0xB1,0xB2,0xB6,0xBE,0xCB,0xC7,0xBE, - 0xC0,0xBF,0xC3,0xC5,0xC1,0xC2,0xB5,0xB0,0xB0,0x9C,0x8B,0x76,0x65,0x6F,0x7D,0x84, - 0x78,0x5A,0x5D,0x65,0x5D,0x57,0x53,0x58,0x5C,0x63,0x52,0x51,0x44,0x3D,0x4D,0x49, - 0x58,0x57,0x53,0x60,0x6D,0x68,0x5A,0x5B,0x64,0x65,0x79,0x8D,0x78,0x83,0x8C,0x7F, - 0x8D,0x88,0x90,0x9F,0xA3,0xA8,0xAA,0xA6,0xA8,0xA9,0xA9,0xB6,0xB1,0xB2,0xB1,0xB6, - 0xB4,0xAB,0xA9,0x9C,0x9B,0x98,0x9B,0x9C,0x8C,0x87,0x87,0x7C,0x73,0x78,0x78,0x7B, - 0x7B,0x69,0x67,0x63,0x63,0x5D,0x53,0x5D,0x64,0x66,0x66,0x5C,0x59,0x5B,0x57,0x59, - 0x5B,0x55,0x60,0x5F,0x59,0x67,0x71,0x71,0x62,0x5C,0x68,0x72,0x76,0x6C,0x68,0x73, - 0x78,0x76,0x77,0x82,0x82,0x76,0x7B,0x79,0x81,0x86,0x82,0x88,0x7B,0x8B,0xA2,0x95, - 0x97,0x9D,0x95,0x91,0x89,0x91,0x9B,0xA3,0xAA,0xA1,0x9F,0xAB,0xAB,0x9B,0x9A,0x97, - 0x94,0xA4,0xA3,0xA1,0x9E,0x8F,0x94,0x97,0x98,0xA3,0x98,0x8B,0x97,0x9B,0x91,0x8E, - 0x92,0x94,0x9D,0x91,0x82,0x80,0x73,0x73,0x68,0x64,0x76,0x77,0x74,0x7C,0x7E,0x74, - 0x74,0x6A,0x66,0x6F,0x6F,0x78,0x6F,0x6A,0x6C,0x64,0x60,0x55,0x55,0x63,0x6A,0x6A, - 0x64,0x6B,0x71,0x69,0x70,0x73,0x78,0x80,0x7F,0x87,0x83,0x7A,0x72,0x67,0x6C,0x72, - 0x84,0x8E,0x7B,0x79,0x7B,0x71,0x70,0x60,0x6A,0x7B,0x6C,0x6D,0x67,0x6C,0x83,0x79, - 0x6F,0x7B,0x81,0x8A,0x97,0x8B,0x86,0x94,0x8C,0x98,0xA5,0x9F,0xAE,0xAD,0xA2,0xB3, - 0xB4,0xAD,0xA3,0x91,0x9C,0xA5,0x98,0x91,0x8D,0x8F,0x91,0x8F,0x88,0x88,0x89,0x7D, - 0x77,0x74,0x6F,0x70,0x70,0x63,0x58,0x67,0x6F,0x60,0x6D,0x76,0x6E,0x65,0x54,0x66, - 0x71,0x72,0x64,0x4B,0x4E,0x5B,0x6F,0x71,0x6C,0x78,0x7A,0x7B,0x84,0x83,0x85,0x8C, - 0x8D,0x92,0x97,0xAA,0xB3,0xAB,0x9D,0x9B,0xAB,0xA7,0x9D,0xA2,0xA8,0xA3,0x96,0x90, - 0x91,0x98,0xA0,0x97,0x89,0x98,0x9A,0x92,0x8F,0x8A,0x93,0x97,0x8F,0x8A,0x92,0x91, - 0x8B,0x87,0x7D,0x7B,0x76,0x6B,0x6E,0x7A,0x85,0x7E,0x72,0x6B,0x63,0x69,0x6F,0x61, - 0x58,0x5C,0x5E,0x5E,0x54,0x4B,0x4D,0x56,0x55,0x5A,0x67,0x71,0x76,0x6E,0x6B,0x63, - 0x62,0x6F,0x6E,0x74,0x73,0x70,0x76,0x7A,0x85,0x89,0x85,0x7F,0x86,0x8C,0x88,0x8B, - 0x7A,0x6B,0x76,0x79,0x80,0x93,0x94,0x8E,0x86,0x7D,0x81,0x7D,0x73,0x74,0x76,0x74, - 0x74,0x73,0x6A,0x64,0x6E,0x78,0x7B,0x7C,0x81,0x82,0x78,0x6F,0x6E,0x71,0x7A,0x84, - 0x8E,0x9A,0x9D,0x95,0x90,0x95,0x94,0x96,0x94,0x96,0xA0,0x9B,0x91,0x90,0x88,0x8E, - 0xA1,0xA2,0xA5,0xA3,0xA4,0xAE,0xA9,0xA7,0xA3,0x9F,0x9B,0x9C,0xAB,0xAB,0xA9,0xA9, - 0x98,0x92,0x98,0x99,0x98,0x91,0x89,0x84,0x7D,0x79,0x72,0x6E,0x70,0x72,0x78,0x7C, - 0x79,0x74,0x73,0x70,0x6D,0x65,0x5A,0x61,0x71,0x70,0x65,0x64,0x56,0x4C,0x51,0x56, - 0x60,0x63,0x5F,0x58,0x5B,0x5C,0x5C,0x60,0x55,0x58,0x63,0x66,0x6D,0x6E,0x67,0x6A, - 0x6E,0x74,0x7A,0x7A,0x7F,0x7B,0x78,0x78,0x72,0x6F,0x69,0x68,0x72,0x7A,0x73,0x77, - 0x76,0x74,0x83,0x83,0x78,0x71,0x75,0x77,0x7B,0x7E,0x7D,0x83,0x82,0x89,0x84,0x77, - 0x7D,0x7A,0x7D,0x82,0x7E,0x83,0x81,0x7F,0x8C,0x94,0x94,0x92,0x8F,0x92,0x9E,0x9D, - 0x93,0x97,0x96,0x9C,0xAA,0xA2,0x9E,0xA1,0xA6,0xAD,0xA9,0xA1,0xA2,0xA8,0xA5,0xAA, - 0xA2,0x99,0xA4,0xA1,0x9F,0xA0,0x9D,0x97,0x97,0x95,0x97,0x9D,0x94,0x94,0x94,0x8C, - 0x93,0x92,0x8A,0x8D,0x8E,0x8A,0x86,0x81,0x81,0x85,0x84,0x81,0x7F,0x7D,0x81,0x82, - 0x72,0x6F,0x71,0x68,0x6B,0x6C,0x6B,0x67,0x63,0x6B,0x62,0x65,0x6D,0x65,0x65,0x5F, - 0x60,0x5F,0x58,0x5A,0x52,0x5C,0x63,0x5C,0x5F,0x60,0x64,0x67,0x69,0x65,0x65,0x6B, - 0x6B,0x6E,0x6B,0x65,0x66,0x6E,0x6D,0x6F,0x6E,0x69,0x6F,0x75,0x79,0x7A,0x73,0x70, - 0x75,0x75,0x79,0x77,0x6E,0x72,0x79,0x7D,0x83,0x83,0x83,0x87,0x89,0x86,0x85,0x88, - 0x85,0x85,0x8A,0x87,0x87,0x86,0x85,0x8C,0x8D,0x8E,0x93,0x8E,0x8F,0x98,0x99,0x9A, - 0x9B,0x9C,0x9E,0xA2,0xA8,0xA3,0xA0,0xA0,0xA5,0xAB,0xA7,0xA3,0xA2,0x9E,0x9E,0xA3, - 0x9E,0x99,0x97,0x94,0x99,0x9C,0x97,0x9A,0x99,0x9B,0x9C,0x96,0x9C,0x98,0x98,0x9F, - 0x9B,0x98,0x97,0x93,0x92,0x91,0x89,0x88,0x85,0x80,0x82,0x7E,0x7B,0x79,0x74,0x77, - 0x74,0x72,0x76,0x72,0x74,0x70,0x6C,0x73,0x6B,0x6B,0x76,0x73,0x75,0x7A,0x73,0x74, - 0x79,0x73,0x74,0x72,0x6C,0x70,0x6A,0x62,0x63,0x60,0x67,0x68,0x60,0x5F,0x62,0x65, - 0x63,0x60,0x5D,0x5C,0x66,0x69,0x64,0x6D,0x65,0x5D,0x69,0x67,0x67,0x72,0x66,0x5F, - 0x6B,0x69,0x6B,0x6D,0x64,0x66,0x6C,0x70,0x6F,0x68,0x68,0x6C,0x72,0x77,0x77,0x76, - 0x7A,0x80,0x84,0x7E,0x7C,0x82,0x85,0x8F,0x94,0x8E,0x8F,0x8F,0x8A,0x92,0x92,0x8C, - 0x8E,0x8C,0x8A,0x90,0x8C,0x86,0x8A,0x8C,0x94,0x9A,0x97,0x98,0x9A,0x99,0x9F,0xA1, - 0xA0,0x9B,0x9D,0xA7,0xA3,0xA1,0x9D,0x94,0x99,0x9C,0x9C,0x9E,0x99,0x95,0x95,0x94, - 0x91,0x8B,0x89,0x89,0x8E,0x8F,0x89,0x89,0x87,0x87,0x8C,0x89,0x8D,0x8E,0x8C,0x8C, - 0x88,0x8D,0x8B,0x87,0x8D,0x8D,0x8C,0x8F,0x86,0x82,0x85,0x7F,0x7D,0x7D,0x79,0x7A, - 0x7A,0x75,0x75,0x76,0x77,0x77,0x77,0x78,0x7D,0x80,0x7E,0x80,0x7F,0x79,0x77,0x7C, - 0x7C,0x75,0x77,0x77,0x73,0x78,0x76,0x72,0x71,0x6E,0x74,0x74,0x6F,0x6C,0x6B,0x6E, - 0x73,0x77,0x73,0x6F,0x71,0x75,0x7A,0x7A,0x76,0x78,0x7A,0x7C,0x7C,0x79,0x7B,0x78, - 0x77,0x7D,0x79,0x78,0x7A,0x76,0x76,0x78,0x74,0x72,0x6E,0x6B,0x71,0x74,0x71,0x71, - 0x74,0x78,0x80,0x82,0x7D,0x7C,0x7C,0x82,0x87,0x83,0x7E,0x7C,0x81,0x84,0x82,0x7F, - 0x7F,0x7F,0x80,0x82,0x80,0x7F,0x7E,0x7E,0x80,0x7E,0x79,0x79,0x76,0x79,0x82,0x7D, - 0x7D,0x81,0x7D,0x80,0x85,0x86,0x88,0x85,0x83,0x80,0x82,0x85,0x80,0x85,0x85,0x85, - 0x8A,0x88,0x89,0x85,0x82,0x7F,0x7E,0x83,0x7D,0x81,0x85,0x7F,0x84,0x86,0x86,0x89, - 0x88,0x89,0x89,0x87,0x8A,0x8A,0x84,0x81,0x7B,0x81,0x91,0x89,0x82,0x85,0x81,0x89, - 0x8C,0x7D,0x7F,0x81,0x7E,0x85,0x7E,0x77,0x7D,0x7D,0x84,0x88,0x80,0x82,0x87,0x86, - 0x83,0x82,0x80,0x7F,0x81,0x80,0x7F,0x75,0x7E,0x92,0x89,0x88,0x86,0x7B,0x85,0x82, - 0x6F,0x76,0x77,0x76,0x81,0x77,0x75,0x86,0x87,0x87,0x83,0x7C,0x85,0x88,0x7D,0x7B, - 0x7E,0x81,0x85,0x81,0x7C,0x75,0x7A,0x91,0x92,0x88,0x88,0x83,0x85,0x89,0x76,0x70, - 0x79,0x7C,0x85,0x84,0x7B,0x82,0x8B,0x86,0x81,0x7C,0x7D,0x84,0x80,0x7C,0x88,0x8B, - 0x84,0x80,0x80,0x7E,0x74,0x83,0x95,0x8B,0x89,0x8A,0x82,0x87,0x7C,0x6B,0x78,0x7D, - 0x7B,0x81,0x7C,0x7D,0x88,0x82,0x78,0x77,0x76,0x79,0x7C,0x74,0x79,0x82,0x7C,0x79, - 0x76,0x72,0x6D,0x78,0x8F,0x8B,0x83,0x83,0x81,0x87,0x7D,0x6C,0x73,0x7D,0x7E,0x80, - 0x7C,0x7F,0x8C,0x8B,0x7E,0x7E,0x84,0x82,0x80,0x7B,0x7D,0x87,0x82,0x7C,0x7C,0x7B, - 0x75,0x70,0x86,0x8F,0x85,0x88,0x84,0x82,0x81,0x6F,0x6C,0x78,0x78,0x78,0x7B,0x79, - 0x85,0x8E,0x80,0x7C,0x80,0x7E,0x7B,0x79,0x79,0x82,0x82,0x7E,0x7F,0x7C,0x77,0x72, - 0x85,0x93,0x87,0x87,0x88,0x87,0x87,0x75,0x6B,0x78,0x7C,0x79,0x7C,0x7E,0x86,0x8E, - 0x82,0x7C,0x81,0x80,0x7D,0x79,0x78,0x85,0x86,0x7E,0x80,0x81,0x7E,0x76,0x80,0x97, - 0x8F,0x88,0x8B,0x87,0x8A,0x7E,0x6E,0x7A,0x81,0x7B,0x7C,0x7C,0x81,0x8C,0x84,0x7B, - 0x81,0x83,0x81,0x7B,0x77,0x80,0x85,0x7F,0x7F,0x83,0x83,0x78,0x7E,0x9A,0x92,0x88, - 0x8C,0x88,0x8F,0x86,0x71,0x7A,0x85,0x7E,0x7F,0x7E,0x80,0x8D,0x86,0x7D,0x84,0x88, - 0x85,0x7D,0x7A,0x82,0x85,0x7C,0x7C,0x81,0x80,0x78,0x75,0x8F,0x94,0x83,0x87,0x86, - 0x8B,0x89,0x74,0x76,0x81,0x7A,0x76,0x78,0x7B,0x88,0x86,0x79,0x80,0x89,0x88,0x82, - 0x7B,0x81,0x86,0x7A,0x7B,0x86,0x82,0x7D,0x74,0x83,0x94,0x81,0x82,0x87,0x87,0x8A, - 0x7A,0x74,0x81,0x7F,0x77,0x79,0x7B,0x81,0x85,0x7C,0x7F,0x87,0x85,0x84,0x80,0x84, - 0x89,0x7F,0x7E,0x83,0x84,0x85,0x7E,0x80,0x8E,0x87,0x81,0x87,0x84,0x85,0x82,0x7B, - 0x80,0x83,0x7D,0x7D,0x7E,0x7C,0x81,0x7E,0x79,0x7E,0x7F,0x7F,0x81,0x7D,0x81,0x83, - 0x7D,0x81,0x82,0x81,0x82,0x81,0x87,0x85,0x81,0x84,0x84,0x83,0x84,0x81,0x81,0x85, - 0x83,0x7F,0x80,0x7E,0x7F,0x81,0x7D,0x7E,0x7F,0x7C,0x7B,0x7E,0x7E,0x7E,0x7D,0x7D, - 0x80,0x80,0x7F,0x7D,0x7F,0x82,0x81,0x7E,0x80,0x81,0x7F,0x7F,0x7F,0x80,0x81,0x7F, - 0x80,0x80,0x7F,0x7F,0x7E,0x7C,0x7D,0x80,0x7F,0x7E,0x7F,0x81,0x82,0x81,0x80,0x81, - 0x82,0x81,0x80,0x82,0x82,0x81,0x80,0x82,0x82,0x81,0x82,0x80,0x80,0x82,0x81,0x80, - 0x7E,0x7C,0x7C,0x7D,0x7A,0x7B,0x7B,0x7B,0x7E,0x7D,0x7D,0x7D,0x7D,0x7F,0x7F,0x7E, - 0x80,0x7F,0x80,0x82,0x80,0x7E,0x80,0x80,0x81,0x82,0x81,0x81,0x81,0x7F,0x7E,0x7E, - 0x7D,0x7F,0x7E,0x7C,0x7D,0x7E,0x7B,0x7D,0x7D,0x7E,0x81,0x7F,0x80,0x80,0x80,0x83, - 0x82,0x81,0x84,0x84,0x82,0x85,0x83,0x82,0x83,0x80,0x81,0x83,0x80,0x81,0x81,0x7E, - 0x80,0x7F,0x7B,0x7C,0x7B,0x7C,0x7D,0x7A,0x7C,0x7F,0x7F,0x7E,0x7E,0x7D,0x81,0x83, - 0x80,0x81,0x80,0x80,0x81,0x80,0x80,0x81,0x81,0x83,0x8D,0x8C,0x8F,0x8F,0x7C,0x77, - 0x70,0x70,0x78,0x7F,0x75,0x76,0x64,0x61,0x8A,0x75,0x6F,0x7E,0x77,0x6E,0x6C,0x82, - 0x82,0x85,0x82,0x77,0x7B,0x80,0x85,0x83,0x89,0x93,0x94,0x90,0x8E,0x90,0x86,0x82, - 0x81,0x7B,0x84,0x8F,0x89,0x8C,0xA4,0x99,0x8D,0x93,0x7C,0x7D,0x96,0x8E,0x8F,0x8E, - 0x87,0x8F,0x90,0x88,0x7A,0x81,0x89,0x84,0x88,0x83,0x7F,0x7B,0x79,0x73,0x6C,0x72, - 0x74,0x75,0x74,0x6D,0x6D,0x6A,0x68,0x71,0x6B,0x65,0x67,0x62,0x64,0x6C,0x70,0x75, - 0x74,0x6B,0x6E,0x76,0x70,0x67,0x6B,0x72,0x7A,0x6C,0x61,0x6B,0x68,0x63,0x69,0x67, - 0x65,0x6E,0x6D,0x70,0x81,0x85,0x97,0xB7,0xAF,0x9B,0x96,0x8E,0x91,0x8B,0x8A,0x95, - 0x8B,0x85,0x8B,0x8F,0x8D,0x83,0x7B,0x90,0x92,0x7C,0x85,0x8B,0x87,0x86,0x84,0x8C, - 0x98,0x8F,0x89,0x8E,0x8F,0x98,0x98,0x92,0x9F,0x9C,0x94,0x93,0x8D,0xA0,0x9D,0x8A, - 0x98,0x97,0x92,0x95,0x86,0x97,0xA8,0x88,0x8A,0x95,0x86,0x89,0x84,0x8B,0x99,0x80, - 0x7E,0x97,0x92,0x8B,0x86,0x86,0x84,0x74,0x71,0x76,0x89,0x80,0x72,0x83,0x82,0x7A, - 0x6C,0x65,0x72,0x67,0x4E,0x57,0x61,0x5F,0x5E,0x59,0x6B,0x73,0x5D,0x64,0x6C,0x5F, - 0x5A,0x5A,0x61,0x67,0x5E,0x60,0x79,0x74,0x5A,0x66,0x6D,0x6A,0x61,0x57,0x6D,0x64, - 0x55,0x69,0x74,0x7B,0x7B,0x86,0xA3,0xA9,0x97,0x9C,0x9E,0x8D,0x89,0x89,0x8D,0x86, - 0x7A,0x87,0x9D,0x8E,0x83,0x91,0x8E,0x85,0x79,0x80,0x91,0x7B,0x7A,0x94,0x94,0x91, - 0x8E,0x97,0xA0,0x91,0x95,0xA5,0x9D,0x95,0x98,0xA0,0x98,0x8A,0x89,0x9D,0xA9,0x92, - 0x9B,0xA6,0x99,0x8D,0x88,0x98,0x8E,0x7B,0x91,0x9C,0x8D,0x8B,0x94,0x9A,0x8C,0x7E, - 0x8C,0x8D,0x81,0x83,0x8B,0x84,0x7D,0x79,0x7B,0x8F,0x7D,0x71,0x88,0x7F,0x70,0x69, - 0x6C,0x71,0x64,0x61,0x72,0x6D,0x64,0x6E,0x6F,0x6C,0x62,0x61,0x68,0x59,0x5D,0x66, - 0x67,0x65,0x68,0x62,0x68,0x77,0x61,0x6B,0x74,0x5B,0x5B,0x5C,0x5E,0x5C,0x54,0x64, - 0x73,0x6E,0x75,0x87,0x8C,0x8B,0x8D,0xA1,0x9E,0x8F,0x99,0x99,0x8F,0x8C,0x89,0x84, - 0x96,0x92,0x80,0x92,0x8A,0x75,0x7A,0x7B,0x7A,0x79,0x7C,0x8F,0x93,0x8A,0x94,0x96, - 0x91,0x8A,0x8C,0x9B,0x8F,0x96,0xA2,0x99,0x97,0x97,0x90,0x93,0xA9,0x9C,0x99,0xAA, - 0x96,0x8C,0x92,0x91,0x90,0x88,0x94,0xA0,0x94,0x95,0x9B,0x94,0x8E,0x8A,0x8A,0x8A, - 0x83,0x8C,0x90,0x85,0x82,0x80,0x76,0x87,0x90,0x7B,0x8B,0x8F,0x74,0x71,0x6F,0x67, - 0x68,0x61,0x6B,0x72,0x64,0x6E,0x6E,0x64,0x66,0x62,0x65,0x60,0x5A,0x63,0x63,0x5F, - 0x60,0x62,0x59,0x6D,0x70,0x5A,0x72,0x6A,0x53,0x5C,0x57,0x56,0x55,0x56,0x68,0x6A, - 0x66,0x75,0x7A,0x78,0x7F,0x89,0x90,0x93,0x9A,0xA2,0xA0,0x90,0x94,0x8C,0x83,0x9C, - 0x88,0x85,0x9A,0x82,0x79,0x7D,0x79,0x7F,0x78,0x7F,0x93,0x84,0x88,0x9D,0x8C,0x88, - 0x91,0x91,0x8F,0x93,0x9C,0x99,0x96,0x98,0x97,0x8D,0x9E,0xAC,0x93,0xA4,0xAB,0x94, - 0x98,0x92,0x8D,0x91,0x89,0x96,0xA0,0x8F,0x9C,0x9E,0x8E,0x91,0x8D,0x8B,0x87,0x86, - 0x8E,0x88,0x7D,0x85,0x7E,0x77,0x94,0x84,0x7B,0x97,0x7F,0x6F,0x7A,0x71,0x6C,0x66, - 0x68,0x78,0x68,0x65,0x79,0x67,0x5E,0x67,0x61,0x5F,0x5C,0x62,0x63,0x5C,0x5E,0x5F, - 0x53,0x65,0x72,0x57,0x6B,0x73,0x59,0x5A,0x5C,0x57,0x53,0x51,0x63,0x68,0x5E,0x6F, - 0x78,0x6E,0x78,0x7E,0x83,0x89,0x8E,0x9F,0x9B,0x91,0x99,0x8E,0x86,0xA5,0x90,0x84, - 0xA3,0x8B,0x78,0x85,0x7F,0x7B,0x78,0x79,0x87,0x80,0x7F,0x91,0x88,0x83,0x93,0x8B, - 0x8A,0x90,0x90,0x96,0x8E,0x8E,0x95,0x85,0x94,0xAA,0x90,0x9C,0xAF,0x95,0x96,0x9A, - 0x8E,0x91,0x8C,0x93,0x9B,0x8F,0x98,0x9B,0x8C,0x90,0x92,0x89,0x89,0x8C,0x8C,0x87, - 0x82,0x84,0x81,0x77,0x93,0x8E,0x79,0x97,0x89,0x70,0x7B,0x75,0x70,0x6C,0x66,0x71, - 0x72,0x6A,0x74,0x72,0x63,0x68,0x67,0x5E,0x5F,0x64,0x65,0x5E,0x5C,0x63,0x56,0x61, - 0x7E,0x61,0x64,0x7A,0x5B,0x55,0x5D,0x54,0x53,0x53,0x59,0x65,0x5D,0x64,0x71,0x69, - 0x6C,0x74,0x78,0x7B,0x82,0x8C,0x92,0x91,0x95,0x97,0x8A,0xA6,0xA8,0x8C,0xA4,0x9C, - 0x86,0x8B,0x82,0x7F,0x7F,0x79,0x8B,0x8B,0x7E,0x8E,0x90,0x86,0x8C,0x90,0x8E,0x8F, - 0x91,0x96,0x90,0x8A,0x93,0x86,0x8A,0xAF,0x9B,0x94,0xB5,0x9C,0x8F,0x99,0x8F,0x92, - 0x8C,0x8E,0xA2,0x94,0x90,0xA1,0x95,0x8F,0x92,0x90,0x90,0x8D,0x90,0x91,0x8A,0x86, - 0x88,0x7A,0x8C,0x9D,0x81,0x92,0x9B,0x7D,0x7F,0x7B,0x76,0x78,0x6A,0x77,0x7E,0x6E, - 0x75,0x78,0x6B,0x6B,0x69,0x68,0x67,0x64,0x66,0x65,0x61,0x5A,0x57,0x52,0x6D,0x6A, - 0x57,0x76,0x69,0x54,0x5B,0x52,0x53,0x50,0x4B,0x60,0x60,0x56,0x65,0x64,0x60,0x67, - 0x69,0x74,0x77,0x7D,0x8A,0x8D,0x92,0x92,0x8D,0x95,0xB0,0x9B,0x96,0xAD,0x9A,0x8A, - 0x87,0x86,0x86,0x7C,0x7E,0x93,0x89,0x83,0x8E,0x88,0x87,0x82,0x85,0x8F,0x8B,0x8B, - 0x93,0x90,0x8B,0x8B,0x80,0x92,0xAB,0x92,0x9B,0xB0,0x9C,0x91,0x8D,0x91,0x97,0x86, - 0x92,0xA3,0x96,0x96,0x93,0x92,0x94,0x8A,0x8E,0x94,0x91,0x91,0x8F,0x8E,0x86,0x80, - 0x7C,0x92,0xA1,0x84,0x92,0x9C,0x84,0x7D,0x74,0x80,0x85,0x6E,0x7B,0x84,0x79,0x74, - 0x6B,0x72,0x71,0x62,0x69,0x6F,0x6C,0x63,0x60,0x62,0x5B,0x51,0x4C,0x6A,0x75,0x59, - 0x67,0x6B,0x5B,0x52,0x46,0x5A,0x5C,0x4D,0x5B,0x63,0x60,0x5B,0x56,0x62,0x69,0x63, - 0x6D,0x79,0x80,0x7C,0x7F,0x86,0x87,0x85,0x8F,0xB2,0xAF,0x9D,0xA9,0xA1,0x94,0x84, - 0x7C,0x95,0x94,0x86,0x8D,0x91,0x90,0x84,0x7C,0x86,0x8A,0x88,0x88,0x8F,0x90,0x89, - 0x89,0x87,0x88,0x81,0x92,0xAD,0x9E,0x97,0x9E,0x95,0x91,0x84,0x89,0x9D,0x98,0x98, - 0x99,0x99,0x98,0x8A,0x86,0x90,0x94,0x92,0x90,0x96,0x91,0x8A,0x86,0x7E,0x80,0x82, - 0x98,0x9F,0x8E,0x92,0x8E,0x88,0x7B,0x6F,0x7E,0x89,0x80,0x7E,0x7D,0x7B,0x7A,0x6C, - 0x6C,0x71,0x72,0x71,0x6C,0x6D,0x69,0x62,0x5A,0x5B,0x56,0x5E,0x78,0x6D,0x66,0x67, - 0x5B,0x59,0x4D,0x4B,0x5D,0x60,0x5D,0x5A,0x5A,0x5F,0x5B,0x57,0x5C,0x67,0x6A,0x6A, - 0x70,0x74,0x7B,0x79,0x79,0x7F,0x83,0xA3,0xB1,0xA4,0xA2,0x96,0x97,0x92,0x83,0x8A, - 0x95,0x96,0x91,0x88,0x88,0x8E,0x86,0x80,0x82,0x8A,0x91,0x8A,0x84,0x87,0x8A,0x83, - 0x7F,0x7A,0x89,0xA5,0xA3,0x95,0x8F,0x8E,0x92,0x8B,0x83,0x8D,0x9A,0xA0,0x98,0x8B, - 0x91,0x95,0x91,0x89,0x88,0x96,0x99,0x90,0x8A,0x8A,0x89,0x86,0x7E,0x7C,0x97,0xA3, - 0x98,0x8E,0x81,0x85,0x89,0x7C,0x7A,0x80,0x8B,0x8D,0x81,0x78,0x79,0x7F,0x7C,0x73, - 0x71,0x79,0x7B,0x71,0x6B,0x6B,0x68,0x63,0x59,0x64,0x7C,0x7A,0x6E,0x5D,0x59,0x5D, - 0x5B,0x55,0x54,0x5D,0x64,0x64,0x5C,0x56,0x5A,0x64,0x62,0x5D,0x63,0x6A,0x6F,0x70, - 0x6E,0x70,0x75,0x72,0x7C,0x98,0xA5,0xA1,0x98,0x90,0x91,0x93,0x8D,0x8C,0x8E,0x94, - 0x96,0x90,0x8A,0x85,0x8A,0x8A,0x85,0x84,0x86,0x88,0x8B,0x86,0x80,0x7F,0x7B,0x7A, - 0x90,0xA1,0x9B,0x96,0x8B,0x89,0x8D,0x8A,0x87,0x89,0x8F,0x97,0x9B,0x95,0x90,0x90, - 0x91,0x92,0x91,0x8F,0x93,0x95,0x92,0x8F,0x88,0x85,0x7F,0x8E,0xA3,0xA3,0x9B,0x8E, - 0x86,0x89,0x88,0x85,0x83,0x83,0x89,0x8B,0x8B,0x88,0x81,0x7E,0x7E,0x7E,0x7C,0x7A, - 0x79,0x77,0x74,0x6D,0x6A,0x64,0x66,0x77,0x79,0x71,0x6A,0x60,0x60,0x62,0x5D,0x5D, - 0x5B,0x59,0x5B,0x5B,0x5C,0x5F,0x5E,0x5E,0x61,0x60,0x63,0x66,0x67,0x6B,0x70,0x73, - 0x76,0x77,0x7A,0x87,0x8E,0x8E,0x93,0x95,0x98,0x9F,0x9D,0x99,0x9C,0x93,0x95,0x96, - 0x8E,0x8F,0x8B,0x86,0x87,0x84,0x82,0x85,0x83,0x83,0x83,0x83,0x85,0x82,0x85,0x8B, - 0x89,0x89,0x8B,0x8A,0x91,0x8F,0x8E,0x92,0x8F,0x8E,0x91,0x90,0x8F,0x8E,0x8B,0x8B, - 0x8C,0x8D,0x8C,0x8F,0x8F,0x8E,0x8F,0x8D,0x8E,0x89,0x8F,0x94,0x8E,0x90,0x90,0x8D, - 0x92,0x91,0x8B,0x8D,0x88,0x87,0x89,0x86,0x84,0x81,0x7D,0x7C,0x7D,0x79,0x7A,0x7B, - 0x78,0x78,0x76,0x73,0x71,0x6C,0x6F,0x72,0x6B,0x6C,0x6B,0x66,0x6C,0x6A,0x65,0x66, - 0x62,0x5F,0x60,0x5C,0x5E,0x5C,0x5B,0x60,0x60,0x64,0x67,0x69,0x6C,0x71,0x75,0x77, - 0x7A,0x7C,0x82,0x8B,0x8C,0x8F,0x95,0x92,0x99,0x9C,0x96,0x9A,0x95,0x92,0x94,0x8C, - 0x8A,0x88,0x82,0x85,0x83,0x80,0x84,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81,0x86, - 0x87,0x85,0x89,0x88,0x89,0x8E,0x8B,0x8B,0x8D,0x88,0x8B,0x8A,0x87,0x8A,0x85,0x86, - 0x8B,0x88,0x8B,0x8C,0x8B,0x8D,0x8D,0x8E,0x8B,0x8D,0x8D,0x8D,0x90,0x90,0x8E,0x8F, - 0x8F,0x8B,0x8E,0x8B,0x8C,0x8A,0x86,0x89,0x84,0x80,0x82,0x7F,0x7B,0x7D,0x7A,0x79, - 0x79,0x75,0x75,0x75,0x74,0x72,0x6F,0x6F,0x6D,0x6C,0x6E,0x6A,0x69,0x69,0x64,0x65, - 0x65,0x60,0x63,0x63,0x61,0x64,0x64,0x64,0x66,0x66,0x69,0x6C,0x6D,0x72,0x74,0x75, - 0x7C,0x7D,0x82,0x87,0x86,0x8B,0x8E,0x8D,0x8F,0x8F,0x8D,0x8D,0x8B,0x8B,0x8C,0x89, - 0x89,0x8A,0x88,0x87,0x87,0x85,0x84,0x85,0x82,0x83,0x83,0x82,0x83,0x85,0x84,0x84, - 0x86,0x86,0x87,0x89,0x89,0x89,0x89,0x88,0x89,0x8B,0x89,0x88,0x88,0x88,0x86,0x87, - 0x87,0x85,0x84,0x85,0x84,0x82,0x83,0x82,0x81,0x81,0x81,0x80,0x80,0x82,0x82,0x83, - 0x85,0x82,0x82,0x84,0x84,0x87,0x85,0x81,0x84,0x83,0x83,0x82,0x7F,0x7F,0x7F,0x7D, - 0x7E,0x7C,0x78,0x79,0x77,0x77,0x75,0x75,0x73,0x73,0x73,0x73,0x74,0x72,0x72,0x73, - 0x73,0x73,0x75,0x74,0x76,0x78,0x78,0x79,0x77,0x7A,0x7C,0x7C,0x7D,0x7E,0x7E,0x7F, - 0x7F,0x80,0x80,0x81,0x82,0x82,0x83,0x82,0x81,0x81,0x81,0x80,0x81,0x82,0x81,0x80, - 0x80,0x81,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7E,0x80,0x80, - 0x80,0x7F,0x80,0x7F,0x7E,0x7F,0x7F,0x7E,0x7E,0x80,0x7F,0x7E,0x7F,0x80,0x80,0x81, - 0x80,0x80,0x82,0x81,0x82,0x82,0x83,0x83,0x83,0x84,0x83,0x85,0x86,0x86,0x87,0x86, - 0x85,0x85,0x86,0x85,0x85,0x83,0x85,0x85,0x83,0x84,0x84,0x82,0x82,0x82,0x80,0x81, - 0x80,0x80,0x7E,0x7E,0x7F,0x7E,0x7F,0x7E,0x7E,0x80,0x80,0x7E,0x7F,0x7F,0x7E,0x7F, - 0x7E,0x7E,0x80,0x80,0x7F,0x80,0x81,0x7F,0x7F,0x82,0x81,0x7F,0x80,0x80,0x81,0x80, - 0x81,0x81,0x83,0x84,0x82,0x84,0x84,0x82,0x82,0x84,0x84,0x83,0x82,0x83,0x82,0x84, - 0x84,0x82,0x83,0x83,0x83,0x80,0x80,0x80,0x7F,0x80,0x7F,0x7D,0x7F,0x7E,0x7F,0x80, - 0x7E,0x7D,0x7D,0x7D,0x7E,0x7D,0x7E,0x7E,0x7D,0x7E,0x7C,0x7D,0x7F,0x7F,0x81,0x81, - 0x7F,0x81,0x82,0x82,0x83,0x81,0x83,0x82,0x81,0x94,0x83,0x86,0x84,0x65,0x7F,0x81, - 0x6C,0x6A,0x78,0x80,0x87,0x8C,0x8F,0x8D,0x89,0x97,0xA0,0x9D,0x98,0x93,0x90,0x8B, - 0x89,0x86,0x81,0x78,0x6E,0x63,0x5E,0x5C,0x5A,0x56,0x54,0x5E,0x64,0x68,0x6E,0x70, - 0x76,0x7B,0x7E,0x82,0x85,0x87,0x8A,0x8A,0x8C,0x8F,0x9A,0xA2,0xAC,0xB6,0xB2,0xB3, - 0xB1,0xAB,0xA5,0xA0,0x9B,0x94,0x91,0x8C,0x87,0x82,0x7E,0x7B,0x76,0x77,0x76,0x72, - 0x71,0x72,0x6F,0x6C,0x68,0x5D,0x57,0x50,0x48,0x4C,0x49,0x4C,0x51,0x56,0x5D,0x5F, - 0x66,0x6D,0x70,0x76,0x7B,0x7D,0x85,0x85,0x86,0x8D,0x8E,0x8F,0x90,0x97,0xA0,0xA7, - 0xAC,0xAF,0xAF,0xB1,0xB2,0xAF,0xAC,0xA9,0xA1,0x9D,0x96,0x8F,0x8B,0x86,0x83,0x7F, - 0x7A,0x7A,0x76,0x71,0x6C,0x60,0x5B,0x53,0x4D,0x51,0x50,0x50,0x56,0x5A,0x61,0x6C, - 0x72,0x78,0x7D,0x80,0x85,0x88,0x8A,0x89,0x8A,0x8A,0x89,0x8B,0x83,0x87,0x90,0x9A, - 0xA6,0xA7,0xA6,0xA4,0xA4,0xA6,0x9F,0x97,0x92,0x90,0x8B,0x8A,0x8B,0x86,0x80,0x7F, - 0x7F,0x7B,0x79,0x78,0x78,0x7A,0x76,0x78,0x76,0x6D,0x6D,0x69,0x61,0x5C,0x56,0x52, - 0x4D,0x4D,0x4D,0x4E,0x54,0x57,0x5E,0x62,0x64,0x6E,0x70,0x72,0x77,0x7A,0x7F,0x85, - 0x87,0x8C,0x97,0x9C,0xA3,0xAB,0xAD,0xB1,0xB6,0xBB,0xBD,0xBE,0xBB,0xBE,0xBD,0xB4, - 0xB6,0xB4,0xAE,0xA8,0x9E,0x99,0x96,0x88,0x7F,0x7C,0x75,0x73,0x71,0x6B,0x68,0x63, - 0x5C,0x56,0x55,0x54,0x4F,0x4A,0x49,0x48,0x46,0x47,0x44,0x41,0x52,0x5F,0x57,0x57, - 0x5A,0x5F,0x67,0x60,0x62,0x6C,0x6E,0x77,0x7C,0x82,0x92,0x95,0x97,0x9F,0xA2,0xA5, - 0xA9,0xAE,0xB4,0xB8,0xB9,0xBC,0xBA,0xBC,0xCA,0xC8,0xC1,0xC5,0xC0,0xBC,0xB3,0xA8, - 0xAA,0xA5,0x9A,0x99,0x96,0x90,0x90,0x83,0x77,0x76,0x69,0x63,0x5F,0x55,0x59,0x56, - 0x53,0x50,0x48,0x55,0x58,0x4C,0x51,0x50,0x49,0x47,0x37,0x3D,0x4E,0x45,0x48,0x55, - 0x5D,0x69,0x65,0x64,0x6E,0x6B,0x67,0x68,0x6D,0x75,0x75,0x75,0x7B,0x7F,0x88,0x90, - 0x8F,0x95,0x9D,0x9E,0x9F,0x9B,0xA2,0xAD,0xA9,0xAB,0xB6,0xBA,0xBE,0xBB,0xB6,0xBF, - 0xBC,0xB3,0xB6,0xB5,0xB3,0xAB,0xA3,0xA6,0x9A,0x93,0xA2,0x98,0x8F,0x91,0x84,0x7F, - 0x71,0x63,0x68,0x62,0x56,0x5B,0x5D,0x61,0x62,0x52,0x56,0x58,0x4E,0x50,0x51,0x52, - 0x54,0x50,0x53,0x5A,0x55,0x65,0x70,0x62,0x6E,0x72,0x6F,0x70,0x62,0x6B,0x76,0x6B, - 0x72,0x7F,0x84,0x8D,0x88,0x88,0x96,0x8C,0x87,0x8E,0x8D,0x90,0x8E,0x8D,0x96,0x90, - 0x9B,0xB0,0xA4,0xA4,0xAB,0xA4,0xA2,0x98,0x97,0xA3,0x9A,0x92,0x9C,0x9B,0x9E,0x98, - 0x90,0x9A,0x91,0x85,0x88,0x87,0x84,0x7F,0x7C,0x7E,0x7D,0x75,0x7F,0x86,0x77,0x79, - 0x7A,0x77,0x74,0x60,0x6B,0x74,0x64,0x6A,0x75,0x78,0x78,0x71,0x75,0x7A,0x6D,0x6B, - 0x72,0x72,0x6F,0x6C,0x6C,0x70,0x65,0x67,0x80,0x71,0x69,0x76,0x70,0x6E,0x5F,0x60, - 0x75,0x66,0x5F,0x73,0x78,0x78,0x75,0x78,0x85,0x7B,0x76,0x7F,0x83,0x82,0x81,0x88, - 0x8B,0x8F,0x8D,0x97,0xAD,0x9D,0x9F,0xB1,0xA7,0xA1,0x98,0x9F,0xAA,0x97,0x97,0xA5, - 0xA2,0xA0,0x9E,0x9F,0xA0,0x93,0x8D,0x94,0x8E,0x88,0x8E,0x8C,0x89,0x83,0x7D,0x9A, - 0x8D,0x7A,0x91,0x89,0x7E,0x71,0x6C,0x80,0x6C,0x60,0x78,0x74,0x6D,0x6E,0x70,0x76, - 0x67,0x61,0x6A,0x61,0x5E,0x61,0x63,0x5F,0x5B,0x61,0x64,0x73,0x67,0x62,0x77,0x6C, - 0x64,0x65,0x67,0x6F,0x66,0x6B,0x80,0x7C,0x7A,0x8B,0x90,0x8D,0x89,0x8D,0x92,0x8D, - 0x8C,0x94,0x91,0x8F,0x91,0x85,0x9E,0xA4,0x87,0xA0,0xA5,0x91,0x8E,0x87,0x95,0x8A, - 0x79,0x95,0x95,0x87,0x94,0x98,0x9A,0x90,0x8D,0x99,0x8B,0x89,0x91,0x8D,0x8C,0x8B, - 0x8B,0x86,0x98,0x94,0x85,0x99,0x8F,0x81,0x82,0x7E,0x80,0x73,0x71,0x81,0x78,0x74, - 0x81,0x81,0x7B,0x76,0x78,0x76,0x6D,0x6F,0x71,0x6C,0x69,0x70,0x63,0x6F,0x87,0x67, - 0x76,0x85,0x6D,0x6E,0x67,0x6E,0x69,0x57,0x6F,0x71,0x60,0x6F,0x75,0x71,0x6C,0x6C, - 0x73,0x64,0x63,0x6B,0x65,0x62,0x66,0x6B,0x61,0x79,0x7D,0x68,0x83,0x7D,0x70,0x76, - 0x71,0x79,0x6E,0x6D,0x83,0x7B,0x7A,0x8D,0x90,0x8C,0x8D,0x94,0x92,0x8B,0x91,0x93, - 0x90,0x91,0x99,0x8D,0x94,0xB3,0x96,0x9D,0xB4,0x9D,0x9C,0x99,0x9B,0x98,0x84,0x96, - 0x9C,0x88,0x95,0xA1,0x9B,0x95,0x9A,0xA0,0x91,0x8F,0x97,0x8D,0x8A,0x8D,0x91,0x81, - 0x8E,0xA3,0x85,0x93,0xA2,0x8D,0x87,0x85,0x88,0x7D,0x70,0x81,0x7E,0x70,0x7D,0x82, - 0x77,0x71,0x79,0x77,0x66,0x6B,0x6D,0x65,0x62,0x66,0x64,0x58,0x73,0x6D,0x5B,0x77, - 0x6D,0x63,0x65,0x63,0x68,0x59,0x5E,0x6D,0x5D,0x5F,0x6F,0x6A,0x66,0x69,0x70,0x68, - 0x60,0x6D,0x66,0x61,0x66,0x68,0x62,0x64,0x81,0x6F,0x6E,0x87,0x76,0x74,0x74,0x77, - 0x76,0x6A,0x7A,0x80,0x72,0x80,0x8A,0x82,0x82,0x86,0x8D,0x81,0x83,0x91,0x86,0x87, - 0x8D,0x8D,0x84,0x8F,0xA6,0x8C,0x9C,0xAC,0x95,0x99,0x9A,0x9B,0x93,0x8D,0xA0,0x99, - 0x92,0xA4,0xA4,0x9C,0x9E,0xA4,0xA3,0x96,0x9D,0xA3,0x94,0x99,0x9A,0x95,0x8C,0x9D, - 0xAB,0x8D,0xA5,0xAC,0x94,0x98,0x98,0x96,0x88,0x86,0x96,0x8A,0x84,0x95,0x8F,0x86, - 0x88,0x8C,0x87,0x7A,0x84,0x84,0x76,0x7B,0x7A,0x72,0x69,0x82,0x82,0x6B,0x89,0x80, - 0x6D,0x74,0x71,0x6F,0x60,0x66,0x72,0x60,0x64,0x71,0x67,0x63,0x66,0x68,0x61,0x5A, - 0x64,0x5F,0x57,0x5D,0x5A,0x55,0x4F,0x6B,0x64,0x54,0x77,0x67,0x5A,0x64,0x62,0x5F, - 0x53,0x5F,0x68,0x5A,0x65,0x72,0x69,0x69,0x70,0x75,0x6E,0x6B,0x7A,0x72,0x6F,0x77, - 0x77,0x6F,0x6F,0x90,0x80,0x7A,0x9C,0x87,0x81,0x8A,0x89,0x85,0x7A,0x8A,0x8E,0x80, - 0x8F,0x97,0x8C,0x90,0x96,0x98,0x91,0x91,0xA0,0x96,0x95,0x9C,0x9B,0x93,0x95,0xB5, - 0x9E,0x9F,0xBD,0xA2,0xA0,0xA7,0xA4,0x9B,0x94,0xA4,0xA1,0x95,0xA3,0xA8,0x9D,0x9D, - 0xA4,0xA2,0x97,0x98,0xA1,0x95,0x92,0x97,0x94,0x87,0x8C,0xA9,0x8D,0x93,0xAB,0x8C, - 0x8E,0x92,0x8C,0x83,0x7D,0x8C,0x85,0x7C,0x8B,0x8A,0x7E,0x82,0x85,0x81,0x77,0x79, - 0x80,0x71,0x71,0x76,0x6F,0x63,0x6C,0x85,0x67,0x72,0x87,0x68,0x6C,0x70,0x6A,0x61, - 0x5E,0x6B,0x63,0x5D,0x6D,0x6B,0x61,0x68,0x6B,0x66,0x5F,0x64,0x69,0x5B,0x5E,0x61, - 0x5A,0x51,0x60,0x73,0x56,0x6B,0x78,0x5C,0x66,0x6A,0x63,0x5C,0x60,0x6B,0x63,0x62, - 0x73,0x71,0x6A,0x75,0x78,0x73,0x72,0x7A,0x7D,0x74,0x7A,0x7C,0x77,0x6F,0x85,0x92, - 0x76,0x94,0x9A,0x7F,0x8C,0x8D,0x84,0x7D,0x85,0x8C,0x83,0x86,0x94,0x8F,0x89,0x95, - 0x96,0x8F,0x8F,0x99,0x95,0x8D,0x95,0x93,0x8C,0x87,0xA2,0xA1,0x8D,0xB0,0xA9,0x93, - 0xA2,0x9F,0x93,0x8F,0x98,0x98,0x8E,0x95,0x9F,0x95,0x93,0x9B,0x97,0x91,0x93,0x97, - 0x8E,0x8C,0x8F,0x8A,0x81,0x80,0x99,0x8A,0x81,0xA4,0x8C,0x7E,0x91,0x86,0x78,0x7E, - 0x85,0x7E,0x7A,0x85,0x87,0x7D,0x83,0x8A,0x82,0x81,0x86,0x85,0x7D,0x7F,0x7F,0x7A, - 0x71,0x7A,0x8E,0x75,0x80,0x96,0x74,0x77,0x87,0x71,0x6A,0x75,0x71,0x6B,0x6E,0x75, - 0x72,0x6D,0x75,0x77,0x6E,0x72,0x75,0x70,0x6E,0x71,0x6F,0x6C,0x65,0x7A,0x80,0x6B, - 0x87,0x8A,0x6C,0x7F,0x85,0x6C,0x73,0x7C,0x72,0x74,0x7A,0x7C,0x79,0x79,0x80,0x7F, - 0x7A,0x7D,0x7E,0x78,0x78,0x78,0x76,0x71,0x6F,0x85,0x7C,0x74,0x91,0x81,0x71,0x88, - 0x7E,0x6B,0x7A,0x77,0x6F,0x77,0x79,0x79,0x7A,0x7E,0x81,0x80,0x7F,0x81,0x80,0x7D, - 0x7D,0x7C,0x7C,0x74,0x7C,0x8C,0x7B,0x86,0x95,0x7E,0x80,0x8F,0x78,0x77,0x85,0x76, - 0x76,0x81,0x7B,0x7B,0x82,0x81,0x84,0x86,0x83,0x85,0x85,0x82,0x7F,0x81,0x7E,0x79, - 0x88,0x8A,0x81,0x92,0x92,0x80,0x8D,0x8F,0x79,0x83,0x88,0x79,0x81,0x87,0x7F,0x83, - 0x87,0x84,0x87,0x89,0x85,0x87,0x87,0x81,0x81,0x82,0x7D,0x7D,0x87,0x85,0x83,0x8F, - 0x8B,0x80,0x8A,0x86,0x7A,0x84,0x82,0x79,0x81,0x82,0x7D,0x83,0x83,0x80,0x86,0x85, - 0x83,0x88,0x85,0x81,0x85,0x83,0x7D,0x81,0x87,0x86,0x85,0x8A,0x88,0x84,0x88,0x83, - 0x7F,0x85,0x7E,0x79,0x80,0x7C,0x79,0x7F,0x7C,0x7B,0x82,0x80,0x7D,0x82,0x81,0x7E, - 0x7F,0x7D,0x7B,0x7F,0x83,0x83,0x85,0x89,0x85,0x85,0x89,0x82,0x82,0x86,0x7E,0x7E, - 0x81,0x7B,0x7E,0x81,0x7C,0x80,0x84,0x81,0x82,0x84,0x80,0x80,0x7F,0x7C,0x7C,0x7E, - 0x83,0x82,0x83,0x87,0x82,0x82,0x85,0x7F,0x80,0x81,0x79,0x7B,0x7C,0x76,0x79,0x7C, - 0x77,0x7D,0x81,0x7D,0x81,0x81,0x7D,0x7E,0x7C,0x7A,0x7A,0x7C,0x81,0x80,0x82,0x86, - 0x81,0x82,0x84,0x7E,0x80,0x80,0x78,0x7B,0x7B,0x75,0x7B,0x7B,0x78,0x7F,0x80,0x7E, - 0x82,0x82,0x7F,0x80,0x7D,0x7C,0x7C,0x7E,0x84,0x81,0x83,0x88,0x81,0x83,0x85,0x7E, - 0x80,0x80,0x77,0x7B,0x7B,0x75,0x7B,0x7B,0x77,0x7F,0x80,0x7D,0x82,0x81,0x7F,0x80, - 0x7E,0x7D,0x7C,0x7F,0x85,0x82,0x84,0x8A,0x84,0x85,0x88,0x81,0x83,0x82,0x7A,0x7D, - 0x7D,0x77,0x7C,0x7C,0x78,0x7F,0x80,0x7D,0x83,0x81,0x7E,0x80,0x7D,0x7B,0x7B,0x7D, - 0x84,0x80,0x81,0x89,0x83,0x82,0x87,0x80,0x80,0x82,0x79,0x7B,0x7E,0x77,0x7C,0x7E, - 0x7A,0x81,0x84,0x80,0x86,0x86,0x82,0x85,0x82,0x7F,0x80,0x81,0x86,0x84,0x84,0x8C, - 0x87,0x84,0x8A,0x84,0x81,0x84,0x7D,0x7B,0x7F,0x78,0x79,0x7E,0x79,0x7E,0x82,0x7E, - 0x83,0x85,0x81,0x84,0x82,0x7F,0x80,0x80,0x85,0x85,0x85,0x8B,0x8A,0x85,0x8A,0x87, - 0x82,0x86,0x81,0x7C,0x81,0x7C,0x7A,0x80,0x7B,0x7C,0x82,0x7E,0x80,0x83,0x7E,0x80, - 0x80,0x7B,0x7C,0x7D,0x7F,0x82,0x81,0x85,0x86,0x82,0x86,0x86,0x7F,0x84,0x81,0x7A, - 0x80,0x7D,0x78,0x80,0x7D,0x7C,0x83,0x80,0x80,0x85,0x81,0x81,0x83,0x7F,0x7F,0x7F, - 0x7F,0x83,0x82,0x84,0x87,0x82,0x85,0x86,0x7E,0x82,0x82,0x7A,0x7E,0x7D,0x78,0x7E, - 0x7D,0x7A,0x81,0x81,0x80,0x84,0x83,0x82,0x84,0x81,0x80,0x82,0x81,0x85,0x84,0x84, - 0x88,0x85,0x85,0x87,0x81,0x82,0x83,0x7B,0x7B,0x7C,0x76,0x79,0x7B,0x77,0x7B,0x7E, - 0x7B,0x7F,0x80,0x7E,0x81,0x7F,0x7E,0x80,0x7F,0x83,0x84,0x82,0x87,0x85,0x84,0x87, - 0x82,0x81,0x84,0x7E,0x7C,0x7F,0x7A,0x7A,0x7C,0x79,0x7B,0x7F,0x7D,0x7E,0x81,0x7F, - 0x7F,0x7F,0x7D,0x7E,0x7E,0x80,0x81,0x7F,0x82,0x83,0x81,0x83,0x82,0x7F,0x81,0x7F, - 0x7B,0x7E,0x7C,0x79,0x7D,0x7D,0x7B,0x80,0x80,0x7F,0x84,0x84,0x82,0x84,0x83,0x83, - 0x83,0x83,0x85,0x83,0x83,0x85,0x82,0x81,0x83,0x81,0x80,0x80,0x7D,0x7C,0x7C,0x78, - 0x78,0x7B,0x78,0x79,0x7B,0x79,0x7C,0x7E,0x7D,0x7E,0x7F,0x7F,0x80,0x81,0x82,0x83, - 0x82,0x82,0x83,0x81,0x82,0x83,0x80,0x81,0x81,0x7E,0x7E,0x7D,0x7B,0x7B,0x7B,0x79, - 0x7C,0x7C,0x7C,0x7F,0x7F,0x7F,0x81,0x80,0x81,0x82,0x81,0x83,0x83,0x81,0x82,0x82, - 0x81,0x83,0x82,0x81,0x83,0x81,0x7F,0x7F,0x7F,0x7D,0x7C,0x7D,0x7C,0x7C,0x7D,0x7E, - 0x7E,0x80,0x7F,0x81,0x82,0x81,0x83,0x81,0x81,0x82,0x81,0x82,0x83,0x80,0x80,0x80, - 0x81,0x82,0x8C,0x88,0x66,0x6F,0x86,0x88,0x71,0x78,0x8E,0x6E,0x71,0x81,0x7E,0x7A, - 0x83,0x94,0x83,0x7C,0x87,0x8B,0x80,0x7A,0x8B,0x82,0x75,0x73,0x7B,0x83,0x7F,0x81, - 0x86,0x7F,0x70,0x7B,0x7D,0x7F,0x84,0x7E,0x82,0x79,0x75,0x71,0x6D,0x81,0x8A,0x93, - 0x8D,0x80,0x8B,0x71,0x71,0x93,0x7F,0x75,0x8C,0x80,0x81,0x7B,0x76,0x8A,0x80,0x79, - 0x80,0x7A,0x7C,0x7C,0x7C,0x76,0x6B,0x6F,0x7C,0x86,0x84,0x75,0x73,0x86,0x89,0x88, - 0x8C,0x89,0x8B,0x8F,0x90,0x87,0x86,0x97,0x98,0x8F,0x92,0x8A,0x82,0x92,0x9C,0x8E, - 0x8B,0x94,0x8F,0x8B,0x8C,0x86,0x7A,0x78,0x83,0x89,0x88,0x88,0x7F,0x71,0x6D,0x6C, - 0x61,0x5E,0x70,0x7B,0x75,0x77,0x71,0x69,0x73,0x71,0x66,0x6C,0x68,0x63,0x6C,0x6F, - 0x6D,0x73,0x75,0x77,0x7B,0x72,0x72,0x76,0x74,0x7A,0x81,0x77,0x69,0x72,0x8E,0x9B, - 0x92,0x8D,0x88,0x7C,0x7C,0x78,0x6A,0x6F,0x72,0x73,0x7F,0x84,0x89,0x8E,0x98,0xA2, - 0xB2,0xB1,0x9D,0x93,0x92,0x96,0x90,0x8B,0x85,0x8B,0x9D,0xA1,0x97,0x8E,0x85,0x7D, - 0x83,0x7E,0x7C,0x7C,0x76,0x7E,0x88,0x82,0x7C,0x80,0x84,0x86,0x89,0x85,0x7E,0x83, - 0x88,0x86,0x8C,0x88,0x77,0x79,0x88,0x91,0x8F,0x8D,0x84,0x82,0x8D,0x8B,0x85,0x83, - 0x80,0x80,0x86,0x86,0x86,0x88,0x83,0x8C,0x8D,0x85,0x85,0x82,0x86,0x8D,0x8B,0x87, - 0x80,0x7D,0x89,0x96,0x92,0x91,0x85,0x75,0x7A,0x76,0x71,0x6C,0x65,0x66,0x67,0x68, - 0x69,0x64,0x5B,0x5F,0x5F,0x5E,0x60,0x5E,0x5B,0x5C,0x5F,0x61,0x56,0x56,0x6C,0x75, - 0x77,0x7A,0x6F,0x66,0x6E,0x74,0x71,0x75,0x72,0x70,0x7C,0x80,0x7C,0x7C,0x72,0x69, - 0x70,0x76,0x78,0x7B,0x7A,0x78,0x7A,0x77,0x76,0x80,0x93,0xA8,0xAE,0xB3,0xA8,0x97, - 0x98,0x96,0x92,0x96,0x9D,0x9B,0x9E,0xA1,0x9B,0x97,0x89,0x7E,0x85,0x8C,0x88,0x88, - 0x8A,0x84,0x80,0x85,0x81,0x81,0x8F,0x9C,0x9E,0x9A,0x91,0x81,0x80,0x86,0x82,0x8B, - 0x8E,0x86,0x92,0x97,0x91,0x90,0x8B,0x86,0x8F,0x96,0x95,0x96,0x95,0x8D,0x86,0x88, - 0x80,0x84,0x99,0xA4,0xA4,0xA0,0x99,0x8B,0x86,0x86,0x87,0x8D,0x8E,0x88,0x8C,0x8C, - 0x87,0x8B,0x7F,0x76,0x7C,0x81,0x82,0x7F,0x74,0x64,0x5A,0x56,0x55,0x58,0x6B,0x75, - 0x76,0x74,0x65,0x53,0x4A,0x49,0x52,0x60,0x65,0x62,0x63,0x62,0x60,0x65,0x5D,0x5B, - 0x68,0x6F,0x76,0x76,0x75,0x6E,0x68,0x69,0x63,0x6C,0x79,0x85,0x85,0x83,0x7A,0x69, - 0x6B,0x6C,0x6F,0x79,0x7E,0x81,0x87,0x89,0x8B,0x92,0x92,0x93,0x9D,0xA4,0xA8,0xAB, - 0xA3,0x99,0x91,0x90,0x8F,0x91,0x98,0xA0,0xA2,0x97,0x8C,0x76,0x71,0x74,0x77,0x85, - 0x86,0x89,0x8B,0x89,0x88,0x87,0x80,0x81,0x86,0x8A,0x8E,0x96,0x96,0x8D,0x85,0x82, - 0x85,0x86,0x93,0xA3,0xA6,0xA1,0x99,0x86,0x7D,0x7F,0x84,0x90,0x95,0x98,0x94,0x8D, - 0x8F,0x90,0x8A,0x89,0x8E,0x8F,0x95,0x9A,0x95,0x8E,0x84,0x80,0x7E,0x7D,0x8D,0x9B, - 0x9A,0x92,0x85,0x73,0x66,0x64,0x66,0x6F,0x72,0x72,0x6A,0x62,0x61,0x60,0x5E,0x5B, - 0x5C,0x5D,0x60,0x64,0x63,0x60,0x57,0x51,0x51,0x59,0x68,0x76,0x81,0x7E,0x6E,0x60, - 0x5B,0x57,0x64,0x76,0x77,0x79,0x75,0x72,0x6F,0x6E,0x6E,0x6C,0x6D,0x6D,0x75,0x7A, - 0x7D,0x78,0x76,0x76,0x74,0x7B,0x90,0xA1,0xA6,0xAA,0xA0,0x94,0x8C,0x8F,0x9A,0xA0, - 0xA4,0xA2,0x9B,0x91,0x8F,0x8D,0x88,0x84,0x84,0x82,0x81,0x86,0x88,0x85,0x82,0x7D, - 0x78,0x80,0x91,0x9B,0xA1,0x9E,0x8B,0x7D,0x78,0x7D,0x87,0x91,0x9B,0x98,0x91,0x8C, - 0x8B,0x8E,0x90,0x90,0x8F,0x8F,0x90,0x95,0x95,0x94,0x8F,0x89,0x86,0x8B,0x9B,0xA8, - 0xAA,0x9F,0x91,0x82,0x7A,0x7E,0x86,0x91,0x95,0x90,0x89,0x82,0x82,0x86,0x83,0x80, - 0x79,0x74,0x74,0x71,0x72,0x6E,0x66,0x5C,0x58,0x60,0x6B,0x75,0x75,0x6B,0x5B,0x4E, - 0x4A,0x4E,0x57,0x64,0x6B,0x65,0x61,0x5F,0x62,0x66,0x67,0x67,0x67,0x68,0x6B,0x70, - 0x73,0x70,0x6C,0x68,0x69,0x6E,0x79,0x86,0x87,0x7D,0x71,0x64,0x62,0x6A,0x76,0x82, - 0x86,0x85,0x83,0x81,0x85,0x8B,0x90,0x99,0x9A,0x9A,0x9C,0xA0,0xA0,0x98,0x97,0x8D, - 0x87,0x91,0x9E,0xA1,0x9A,0x8F,0x82,0x74,0x70,0x7B,0x81,0x8C,0x90,0x87,0x84,0x7E, - 0x82,0x87,0x89,0x8A,0x83,0x88,0x8C,0x8B,0x8D,0x89,0x88,0x83,0x87,0x96,0x9E,0xA8, - 0xA4,0x98,0x8A,0x7C,0x7D,0x8A,0x94,0x9A,0x9D,0x94,0x8B,0x8C,0x90,0x91,0x93,0x95, - 0x90,0x8B,0x8E,0x8E,0x89,0x8B,0x89,0x80,0x86,0x8E,0x94,0x97,0x8B,0x7C,0x6D,0x63, - 0x67,0x70,0x78,0x78,0x73,0x6C,0x5E,0x5B,0x5D,0x62,0x67,0x62,0x61,0x5F,0x5F,0x5F, - 0x5D,0x60,0x5B,0x58,0x66,0x6D,0x74,0x7A,0x72,0x68,0x5C,0x59,0x62,0x6F,0x78,0x7B, - 0x77,0x6E,0x68,0x6A,0x72,0x76,0x7B,0x78,0x72,0x74,0x76,0x75,0x76,0x76,0x72,0x75, - 0x86,0x95,0x9F,0xA5,0x9B,0x8F,0x87,0x87,0x93,0xA1,0xA7,0xA5,0x9E,0x91,0x8A,0x89, - 0x8C,0x8F,0x8D,0x8A,0x84,0x82,0x83,0x80,0x82,0x81,0x7A,0x81,0x8B,0x94,0x98,0x97, - 0x8E,0x7C,0x75,0x74,0x83,0x91,0x97,0x99,0x90,0x89,0x85,0x89,0x92,0x96,0x96,0x94, - 0x90,0x8E,0x8E,0x8F,0x93,0x8C,0x88,0x91,0x9C,0xA2,0xA8,0xA4,0x91,0x83,0x7C,0x7E, - 0x8B,0x98,0x9D,0x96,0x8C,0x7F,0x7E,0x7F,0x83,0x85,0x80,0x7B,0x75,0x72,0x70,0x6E, - 0x69,0x62,0x60,0x69,0x72,0x77,0x7A,0x6E,0x5C,0x4E,0x48,0x53,0x64,0x6F,0x75,0x71, - 0x65,0x5E,0x62,0x64,0x67,0x6F,0x6C,0x68,0x69,0x6B,0x6B,0x6B,0x6B,0x66,0x6A,0x78, - 0x81,0x87,0x86,0x76,0x66,0x5E,0x5D,0x68,0x77,0x7F,0x83,0x7B,0x73,0x77,0x7E,0x87, - 0x8F,0x97,0x93,0x91,0x9A,0x98,0x97,0x9A,0x95,0x91,0x94,0x9F,0xA7,0xAA,0xA3,0x90, - 0x7F,0x75,0x74,0x82,0x8C,0x91,0x8F,0x85,0x7D,0x7D,0x81,0x87,0x8D,0x8B,0x88,0x84, - 0x85,0x85,0x85,0x85,0x80,0x80,0x8A,0x96,0xA0,0xA5,0x9B,0x8B,0x7E,0x78,0x82,0x8F, - 0x99,0x9E,0x98,0x8D,0x8A,0x8D,0x90,0x96,0x98,0x93,0x8D,0x8D,0x8E,0x8F,0x8F,0x8C, - 0x84,0x81,0x8C,0x92,0x9B,0x9C,0x8C,0x78,0x69,0x64,0x69,0x77,0x7D,0x7A,0x72,0x67, - 0x60,0x64,0x69,0x6A,0x69,0x65,0x62,0x63,0x68,0x68,0x66,0x63,0x5B,0x5A,0x6A,0x77, - 0x7F,0x81,0x73,0x62,0x58,0x5C,0x64,0x73,0x7B,0x78,0x72,0x6C,0x69,0x6E,0x73,0x74, - 0x74,0x6E,0x6F,0x74,0x74,0x78,0x78,0x76,0x6F,0x76,0x86,0x91,0x9A,0x9C,0x8E,0x7E, - 0x76,0x7A,0x8A,0x99,0x9D,0x98,0x91,0x89,0x8B,0x91,0x94,0x93,0x8D,0x87,0x88,0x8E, - 0x8C,0x8B,0x86,0x80,0x79,0x80,0x90,0x97,0x9C,0x97,0x86,0x75,0x71,0x75,0x83,0x8D, - 0x8C,0x86,0x80,0x7E,0x83,0x87,0x8A,0x88,0x83,0x84,0x88,0x8E,0x8C,0x8A,0x87,0x82, - 0x81,0x8A,0x97,0x9F,0xA1,0x96,0x87,0x79,0x76,0x7D,0x8A,0x90,0x8C,0x85,0x7E,0x7F, - 0x84,0x85,0x86,0x80,0x77,0x78,0x79,0x7C,0x7C,0x77,0x75,0x71,0x6D,0x77,0x82,0x88, - 0x89,0x7D,0x6E,0x64,0x66,0x6D,0x79,0x7E,0x78,0x74,0x70,0x71,0x78,0x7A,0x78,0x76, - 0x70,0x71,0x74,0x77,0x79,0x75,0x71,0x6E,0x68,0x77,0x84,0x88,0x8E,0x80,0x74,0x69, - 0x69,0x72,0x7C,0x82,0x7E,0x7D,0x7B,0x7C,0x83,0x86,0x84,0x81,0x7E,0x80,0x85,0x88, - 0x8A,0x88,0x81,0x7C,0x78,0x82,0x94,0x94,0x99,0x8D,0x7C,0x77,0x70,0x79,0x7F,0x84, - 0x81,0x7B,0x7B,0x7A,0x7E,0x82,0x7F,0x7A,0x78,0x78,0x7C,0x80,0x81,0x7E,0x7B,0x77, - 0x73,0x7E,0x8E,0x93,0x98,0x8E,0x7D,0x7A,0x76,0x7B,0x85,0x8A,0x89,0x84,0x83,0x84, - 0x8A,0x8F,0x8D,0x88,0x84,0x83,0x85,0x88,0x8B,0x89,0x84,0x83,0x7C,0x82,0x93,0x95, - 0x98,0x8F,0x84,0x7D,0x77,0x7F,0x86,0x82,0x83,0x82,0x7B,0x7B,0x82,0x87,0x85,0x85, - 0x81,0x7E,0x7D,0x7F,0x81,0x7E,0x7E,0x7B,0x73,0x78,0x87,0x8B,0x91,0x8C,0x7F,0x7A, - 0x70,0x73,0x7B,0x7C,0x7E,0x7A,0x76,0x78,0x7B,0x80,0x84,0x87,0x82,0x7D,0x7D,0x7D, - 0x80,0x7E,0x81,0x80,0x76,0x7C,0x88,0x90,0x98,0x95,0x87,0x81,0x79,0x79,0x7F,0x81, - 0x85,0x80,0x7B,0x7B,0x7E,0x82,0x85,0x86,0x83,0x7E,0x7C,0x7C,0x7C,0x7A,0x79,0x7A, - 0x72,0x78,0x82,0x86,0x8F,0x8C,0x80,0x7B,0x74,0x76,0x7A,0x7C,0x7E,0x7A,0x78,0x77, - 0x7A,0x80,0x83,0x84,0x83,0x81,0x80,0x81,0x81,0x7F,0x7F,0x7E,0x7A,0x7D,0x87,0x8B, - 0x92,0x91,0x88,0x83,0x7D,0x7C,0x82,0x81,0x81,0x7F,0x7D,0x7B,0x7A,0x81,0x81,0x84, - 0x86,0x82,0x82,0x83,0x80,0x7F,0x7F,0x7E,0x7C,0x7B,0x85,0x87,0x88,0x88,0x81,0x80, - 0x7C,0x7C,0x80,0x81,0x80,0x7D,0x79,0x78,0x78,0x79,0x79,0x7A,0x7C,0x7B,0x7B,0x7B, - 0x7B,0x7E,0x7E,0x7E,0x7D,0x7D,0x84,0x83,0x85,0x86,0x7F,0x80,0x81,0x80,0x85,0x86, - 0x86,0x85,0x81,0x80,0x7D,0x7E,0x7F,0x7F,0x81,0x80,0x7F,0x80,0x80,0x83,0x83,0x83, - 0x82,0x7F,0x86,0x85,0x85,0x87,0x7F,0x7E,0x7E,0x7D,0x83,0x81,0x80,0x7F,0x7A,0x79, - 0x77,0x77,0x76,0x7A,0x7A,0x79,0x7A,0x7B,0x7C,0x7F,0x80,0x80,0x81,0x7D,0x84,0x86, - 0x86,0x89,0x84,0x82,0x84,0x81,0x85,0x87,0x83,0x83,0x80,0x7E,0x7D,0x7C,0x7C,0x7E, - 0x7F,0x7F,0x7F,0x7E,0x7E,0x80,0x82,0x83,0x83,0x80,0x84,0x88,0x84,0x89,0x87,0x82, - 0x85,0x82,0x84,0x87,0x83,0x82,0x81,0x7C,0x7C,0x79,0x7A,0x7B,0x7B,0x7C,0x7B,0x7B, - 0x7C,0x7D,0x7F,0x81,0x80,0x7F,0x80,0x85,0x83,0x85,0x85,0x7F,0x82,0x82,0x80,0x85, - 0x82,0x80,0x80,0x7A,0x7C,0x7B,0x7A,0x7E,0x7C,0x7D,0x7D,0x7B,0x7E,0x7F,0x80,0x83, - 0x82,0x82,0x82,0x85,0x85,0x86,0x87,0x82,0x83,0x84,0x81,0x85,0x84,0x80,0x81,0x7C, - 0x7C,0x7C,0x79,0x7D,0x7B,0x7B,0x7B,0x78,0x7B,0x7D,0x7C,0x7E,0x7F,0x7E,0x7F,0x82, - 0x82,0x82,0x84,0x81,0x80,0x81,0x80,0x83,0x82,0x80,0x80,0x7C,0x7C,0x7D,0x7A,0x7D, - 0x7D,0x7A,0x7C,0x7B,0x7B,0x7E,0x7F,0x81,0x81,0x81,0x81,0x83,0x85,0x86,0x87,0x86, - 0x84,0x86,0x84,0x85,0x86,0x82,0x82,0x80,0x7E,0x80,0x7E,0x7E,0x7E,0x7B,0x7C,0x7C, - 0x7C,0x7E,0x7E,0x80,0x80,0x81,0x81,0x81,0x83,0x84,0x85,0x85,0x82,0x82,0x83,0x82, - 0x83,0x81,0x80,0x7F,0x7D,0x7E,0x7D,0x7C,0x7E,0x7C,0x7A,0x7C,0x7A,0x7C,0x7F,0x7E, - 0x7F,0x80,0x81,0x80,0x82,0x84,0x83,0x85,0x85,0x83,0x84,0x83,0x84,0x84,0x82,0x83, - 0x80,0x7F,0x81,0x7E,0x7D,0x7E,0x7B,0x7B,0x7C,0x7D,0x7E,0x7D,0x7E,0x7F,0x80,0x81, - 0x80,0x82,0x83,0x83,0x86,0x84,0x82,0x83,0x82,0x83,0x83,0x81,0x81,0x7F,0x7F,0x7F, - 0x7C,0x7C,0x7C,0x79,0x7B,0x7C,0x7B,0x7B,0x7C,0x7D,0x7D,0x7F,0x7F,0x7D,0x81,0x84, - 0x84,0x86,0x84,0x82,0x83,0x83,0x85,0x85,0x83,0x83,0x81,0x80,0x80,0x7E,0x7F,0x7D, - 0x7C,0x7F,0x7D,0x7E,0x80,0x7F,0x7E,0x80,0x81,0x80,0x80,0x83,0x83,0x84,0x85,0x82, - 0x81,0x82,0x82,0x85,0x85,0x83,0x82,0x80,0x7F,0x7F,0x7E,0x7E,0x7E,0x7C,0x7E,0x7D, - 0x7D,0x7F,0x7E,0x7C,0x7D,0x7F,0x80,0x82,0x81,0x82,0x82,0x82,0x84,0x82,0x84,0x84, - 0x84,0x86,0x83,0x81,0x80,0x80,0x80,0x80,0x7E,0x7E,0x7E,0x7E,0x7C,0x7D,0x7E,0x7C, - 0x8D,0x80,0x83,0x82,0x65,0x7F,0x7F,0x6B,0x6B,0x7B,0x83,0x89,0x8E,0x8E,0x8F,0x8A, - 0x97,0xA3,0x9E,0xA8,0xA3,0x91,0x88,0x76,0x82,0x8C,0x69,0x62,0x71,0x63,0x51,0x52, - 0x49,0x52,0x6D,0x6A,0x5D,0x50,0x63,0x73,0x6B,0x71,0x7B,0x99,0x8E,0x8A,0xA7,0x91, - 0x9C,0xA6,0x9B,0x9F,0xA7,0xAB,0x95,0xAA,0xAF,0x9C,0xA6,0xA3,0x85,0x88,0x8F,0x7E, - 0x7D,0x5B,0x6E,0x8E,0x77,0x76,0x6D,0x77,0x79,0x72,0x78,0x78,0x79,0x65,0x55,0x5D, - 0x51,0x59,0x6A,0x60,0x67,0x6F,0x65,0x64,0x7A,0x78,0x77,0x80,0x93,0x99,0x96,0xA5, - 0x9F,0xA4,0xA2,0x9B,0xA9,0xAC,0xA9,0x99,0x91,0xA2,0x9D,0x9D,0x9F,0x94,0x9A,0x95, - 0x92,0x91,0x7E,0x7C,0x74,0x76,0x73,0x6F,0x5F,0x45,0x47,0x4A,0x5A,0x5F,0x4C,0x37, - 0x40,0x45,0x34,0x38,0x3F,0x4B,0x58,0x61,0x6B,0x6C,0x7D,0x8E,0xA4,0xAE,0x99,0x8C, - 0x9A,0xA1,0x9A,0xA3,0xA0,0xA9,0xBF,0xCB,0xD1,0xC1,0xBA,0xAC,0xAE,0xA7,0x90,0x80, - 0x74,0x82,0x82,0x83,0x89,0x6F,0x69,0x6D,0x64,0x76,0x78,0x5B,0x57,0x5C,0x68,0x6D, - 0x5B,0x5C,0x65,0x6F,0x75,0x6E,0x69,0x68,0x7E,0x86,0x7C,0x7B,0x7C,0x93,0x9D,0x91, - 0x91,0x99,0x9A,0x9F,0x97,0x96,0xA7,0x9E,0x9D,0xA5,0x97,0xA4,0xA9,0x8D,0xA4,0xAF, - 0xA8,0xAE,0x98,0x94,0x93,0x89,0x8C,0x88,0x7E,0x79,0x69,0x57,0x5B,0x61,0x60,0x60, - 0x5B,0x66,0x6B,0x56,0x4A,0x38,0x3A,0x52,0x56,0x59,0x5B,0x59,0x62,0x57,0x47,0x57, - 0x55,0x50,0x4A,0x46,0x5A,0x61,0x75,0x79,0x7E,0xA2,0xB2,0xB5,0x9F,0x92,0xA3,0xA1, - 0xA4,0xA7,0xA6,0xB8,0xA3,0x91,0x99,0x9A,0xA1,0x96,0x97,0x98,0x88,0x97,0xA1,0xA2, - 0xA9,0xAC,0xB0,0xAD,0xA1,0x98,0x8D,0x74,0x66,0x63,0x71,0x85,0x72,0x63,0x5C,0x51, - 0x5B,0x64,0x62,0x67,0x69,0x6C,0x6F,0x63,0x5B,0x56,0x5F,0x71,0x74,0x83,0x8A,0x80, - 0x8B,0x91,0x83,0x79,0x83,0x8D,0x8E,0x9A,0x98,0x86,0x91,0x8E,0x7B,0x97,0xAB,0x9C, - 0xA4,0x9F,0x90,0x97,0x85,0x88,0x92,0x8E,0xA2,0x9E,0x97,0x9B,0x94,0x8C,0x8A,0x8D, - 0x85,0x8A,0x95,0x8E,0x83,0x79,0x7D,0x80,0x77,0x81,0x97,0x8C,0x83,0x73,0x5A,0x59, - 0x59,0x61,0x5D,0x55,0x65,0x66,0x60,0x5A,0x4D,0x59,0x66,0x64,0x68,0x6A,0x60,0x54, - 0x50,0x51,0x61,0x74,0x6B,0x62,0x6A,0x70,0x74,0x6B,0x5A,0x5C,0x6E,0x79,0x75,0x77, - 0x83,0x81,0x79,0x73,0x77,0x84,0x8E,0x96,0x95,0x95,0x97,0x99,0x99,0x9F,0xAC,0xAC, - 0xA1,0xA0,0xAD,0xBC,0xC3,0xC3,0xB6,0xBA,0xD2,0xD1,0xCA,0xC8,0xC1,0xCA,0xCD,0xC2, - 0xBC,0xBF,0xBA,0xB9,0xBF,0xB8,0xAB,0x96,0x97,0xA1,0x9F,0x9B,0x8D,0x86,0x85,0x81, - 0x77,0x5D,0x4C,0x40,0x43,0x3D,0x3D,0x47,0x43,0x4C,0x4E,0x41,0x40,0x49,0x4D,0x50, - 0x50,0x49,0x46,0x43,0x44,0x4F,0x4A,0x48,0x45,0x2D,0x4D,0x65,0x55,0x55,0x4A,0x51, - 0x5D,0x62,0x64,0x68,0x73,0x7E,0x84,0x79,0x7C,0x87,0x8B,0x9F,0xA6,0xA7,0xA9,0x9F, - 0x9F,0xA5,0xA8,0x9E,0x9C,0x9B,0x90,0xA4,0xA9,0x95,0x95,0x97,0x9A,0x9D,0x99,0x99, - 0xAC,0xB2,0xA3,0x8E,0x87,0x95,0xA5,0xAC,0x9B,0x8D,0x94,0x96,0x9C,0x9B,0x93,0x8E, - 0x85,0x80,0x80,0x83,0x90,0x92,0x82,0x7F,0x89,0x92,0x90,0x8C,0x8E,0x98,0x99,0x84, - 0x82,0x86,0x8B,0x8B,0x80,0x81,0x84,0x9B,0x94,0x84,0x87,0x7D,0x85,0x85,0x6B,0x5C, - 0x62,0x61,0x65,0x63,0x57,0x5B,0x5D,0x56,0x53,0x62,0x5F,0x4D,0x45,0x45,0x59,0x5B, - 0x58,0x61,0x62,0x5F,0x5E,0x62,0x63,0x6C,0x71,0x66,0x5A,0x53,0x60,0x7B,0x7B,0x71, - 0x66,0x65,0x7B,0x7A,0x77,0x8A,0x9A,0xA0,0xA2,0x98,0x9E,0xAF,0xA9,0xAB,0xAF,0xAD, - 0xA6,0x93,0x85,0x97,0xAB,0xA9,0x9B,0x8E,0x88,0x95,0xA7,0x97,0x7D,0x75,0x7F,0x88, - 0x81,0x7B,0x82,0x83,0x85,0x7D,0x6B,0x7B,0x92,0x98,0x99,0x94,0x85,0x7F,0x7A,0x79, - 0x82,0x7B,0x78,0x7B,0x79,0x85,0x92,0x8D,0x81,0x7C,0x80,0x89,0x86,0x78,0x7A,0x88, - 0x8F,0x88,0x78,0x7A,0x8B,0x8F,0x93,0x93,0x84,0x7E,0x74,0x6A,0x72,0x77,0x73,0x66, - 0x60,0x61,0x6F,0x7F,0x7B,0x71,0x65,0x5B,0x5C,0x5A,0x5C,0x75,0x81,0x71,0x62,0x5F, - 0x64,0x77,0x83,0x7A,0x74,0x75,0x75,0x6D,0x60,0x62,0x6E,0x6A,0x6C,0x71,0x6A,0x7E, - 0x8F,0x86,0x85,0x81,0x82,0x8F,0x8D,0x94,0xAB,0xA8,0x9E,0x9E,0x99,0xA0,0xAC,0xAC, - 0xA7,0xA7,0xA0,0x8C,0x7D,0x78,0x80,0x88,0x7C,0x76,0x77,0x71,0x8A,0x9A,0x89,0x83, - 0x7C,0x77,0x7E,0x78,0x7E,0x8F,0x87,0x7A,0x78,0x70,0x76,0x85,0x86,0x8F,0x91,0x85, - 0x7C,0x77,0x7B,0x8E,0x8B,0x7B,0x7C,0x76,0x77,0x99,0x9D,0x85,0x80,0x7C,0x87,0x8E, - 0x7F,0x82,0x8C,0x84,0x7C,0x71,0x63,0x6B,0x79,0x7D,0x7C,0x7B,0x76,0x68,0x6B,0x78, - 0x7A,0x71,0x67,0x67,0x64,0x6A,0x84,0x89,0x76,0x73,0x6D,0x69,0x6B,0x64,0x6D,0x7D, - 0x71,0x69,0x5D,0x53,0x69,0x7A,0x78,0x77,0x72,0x6C,0x6D,0x6B,0x6D,0x75,0x75,0x71, - 0x78,0x75,0x75,0x90,0x9A,0x91,0x8F,0x8F,0x93,0xA0,0xA5,0xAE,0xBA,0xAE,0x9F,0x9C, - 0x9C,0xA5,0xAC,0xA2,0x9F,0xA0,0x99,0x99,0x93,0x96,0x9C,0x95,0x91,0x93,0x8C,0x88, - 0xA3,0xA7,0x91,0x88,0x80,0x85,0x92,0x8E,0x8E,0x96,0x95,0x8D,0x7F,0x79,0x86,0x8D, - 0x88,0x8C,0x8E,0x86,0x7F,0x83,0x88,0x89,0x90,0x87,0x7E,0x7A,0x73,0x8C,0x8E,0x79, - 0x6D,0x65,0x72,0x76,0x6F,0x73,0x7D,0x78,0x71,0x64,0x47,0x5E,0x7E,0x78,0x63,0x63, - 0x6E,0x4E,0x4F,0x63,0x61,0x5B,0x5B,0x6A,0x5C,0x51,0x68,0x73,0x63,0x54,0x56,0x4E, - 0x48,0x46,0x54,0x68,0x68,0x5F,0x5B,0x55,0x55,0x6A,0x66,0x5B,0x63,0x66,0x66,0x65, - 0x6B,0x72,0x76,0x7B,0x84,0x87,0x83,0x96,0xAF,0xB3,0xAD,0x9F,0x9D,0xA9,0xAA,0xA8, - 0xBE,0xBF,0xA4,0xA0,0x9E,0xA7,0xB6,0xAA,0x9F,0xA0,0xA2,0x9D,0x93,0x95,0x9C,0xA2, - 0xA0,0x94,0x95,0x95,0x97,0xB0,0xBA,0xAC,0x9C,0x95,0x9F,0xAB,0xA9,0xAF,0xB4,0xAA, - 0xA2,0x9A,0x9C,0xA9,0xAD,0xA2,0x9B,0xA3,0x9F,0x94,0x91,0x96,0x9A,0x92,0x90,0x8E, - 0x89,0x81,0x83,0x96,0x8B,0x77,0x72,0x71,0x81,0x86,0x7E,0x7F,0x7B,0x70,0x65,0x60, - 0x6A,0x6F,0x64,0x5C,0x5B,0x5A,0x57,0x55,0x50,0x53,0x50,0x4A,0x47,0x42,0x3B,0x37, - 0x4D,0x59,0x48,0x40,0x36,0x38,0x44,0x40,0x3D,0x49,0x46,0x35,0x33,0x3A,0x48,0x50, - 0x4B,0x52,0x5B,0x5F,0x62,0x62,0x6C,0x7E,0x83,0x83,0x87,0x88,0x83,0x8A,0xA7,0xA8, - 0x91,0x88,0x89,0x98,0xA0,0x93,0x98,0xA1,0x93,0x8F,0x8B,0x8B,0x94,0x8E,0x90,0x99, - 0x97,0x8D,0x89,0x8D,0x9B,0xA0,0x9A,0x9E,0xA0,0x9F,0x96,0x9F,0xC0,0xBA,0xA3,0xA7, - 0xA8,0xB0,0xB0,0xA3,0xB0,0xBB,0xB2,0xAA,0xA3,0xA9,0xB4,0xAF,0xAA,0xA8,0xA2,0xA2, - 0x9E,0x9F,0xA4,0x9E,0x9C,0x98,0x95,0x96,0x8B,0x98,0xAD,0x9A,0x85,0x82,0x80,0x86, - 0x82,0x7C,0x83,0x7F,0x6E,0x65,0x60,0x67,0x69,0x60,0x5E,0x5D,0x5C,0x54,0x4D,0x55, - 0x5A,0x58,0x55,0x52,0x55,0x56,0x4E,0x5A,0x72,0x64,0x53,0x54,0x54,0x59,0x59,0x59, - 0x68,0x6E,0x68,0x63,0x65,0x75,0x81,0x80,0x82,0x87,0x89,0x86,0x83,0x89,0x8A,0x84, - 0x83,0x82,0x85,0x80,0x71,0x7C,0x94,0x8D,0x7C,0x76,0x75,0x7C,0x7B,0x77,0x80,0x80, - 0x7B,0x74,0x72,0x7C,0x80,0x7E,0x7D,0x82,0x89,0x86,0x82,0x85,0x8C,0x8D,0x8F,0x90, - 0x8C,0x8B,0x84,0x8D,0xA9,0xA6,0x8F,0x88,0x8B,0x94,0x91,0x89,0x92,0x9A,0x91,0x84, - 0x82,0x89,0x92,0x91,0x8E,0x8E,0x90,0x8C,0x7E,0x85,0x8F,0x8C,0x85,0x7E,0x7B,0x7F, - 0x7D,0x72,0x83,0x90,0x7B,0x6C,0x67,0x66,0x67,0x62,0x65,0x6D,0x69,0x5A,0x55,0x58, - 0x60,0x5D,0x59,0x5A,0x60,0x65,0x5A,0x5B,0x63,0x64,0x66,0x66,0x69,0x6B,0x6D,0x65, - 0x73,0x94,0x8D,0x79,0x7E,0x8A,0x91,0x90,0x8A,0x9A,0xA7,0x98,0x8E,0x91,0x96,0x98, - 0x93,0x91,0x93,0x92,0x8A,0x84,0x88,0x8A,0x86,0x82,0x82,0x89,0x89,0x7F,0x78,0x8F, - 0x9F,0x8A,0x7F,0x81,0x87,0x8B,0x86,0x8E,0x9A,0x95,0x89,0x85,0x8F,0x99,0x98,0x95, - 0x98,0x9F,0x9D,0x96,0x96,0x99,0x9A,0x9A,0x98,0x94,0x90,0x8E,0x86,0x8A,0xA8,0xA4, - 0x88,0x85,0x87,0x88,0x84,0x80,0x8C,0x93,0x86,0x78,0x7B,0x82,0x80,0x7E,0x7F,0x7E, - 0x80,0x78,0x6E,0x72,0x75,0x74,0x6E,0x6A,0x6F,0x70,0x6A,0x5B,0x62,0x81,0x78,0x5E, - 0x5D,0x60,0x63,0x60,0x5D,0x6C,0x74,0x66,0x60,0x65,0x6F,0x71,0x6E,0x74,0x7C,0x7E, - 0x79,0x77,0x7C,0x7F,0x82,0x83,0x83,0x88,0x86,0x81,0x78,0x83,0x9E,0x92,0x7C,0x80, - 0x82,0x7E,0x78,0x7B,0x8B,0x8F,0x7F,0x76,0x7A,0x82,0x83,0x7D,0x7D,0x85,0x85,0x80, - 0x7C,0x81,0x87,0x84,0x83,0x85,0x8A,0x86,0x82,0x7C,0x82,0x9F,0x98,0x7F,0x82,0x87, - 0x89,0x86,0x83,0x8F,0x97,0x8B,0x7F,0x82,0x8A,0x8A,0x85,0x87,0x8D,0x8C,0x84,0x82, - 0x85,0x86,0x83,0x83,0x83,0x86,0x88,0x83,0x7A,0x79,0x96,0x99,0x7F,0x7B,0x7F,0x7E, - 0x80,0x7D,0x82,0x8C,0x83,0x75,0x76,0x7D,0x7C,0x77,0x79,0x7F,0x7F,0x77,0x71,0x74, - 0x76,0x75,0x76,0x77,0x7B,0x7A,0x75,0x72,0x6F,0x84,0x93,0x7E,0x78,0x7F,0x7C,0x7C, - 0x7B,0x82,0x8E,0x8C,0x80,0x7E,0x86,0x87,0x82,0x83,0x88,0x8B,0x86,0x7F,0x80,0x85, - 0x83,0x81,0x82,0x85,0x83,0x7D,0x7B,0x76,0x7D,0x95,0x89,0x75,0x7C,0x7B,0x75,0x73, - 0x74,0x83,0x89,0x7A,0x72,0x79,0x7A,0x78,0x79,0x7F,0x84,0x84,0x7F,0x7D,0x84,0x83, - 0x7E,0x82,0x85,0x86,0x83,0x7E,0x7F,0x79,0x8A,0x9F,0x86,0x7C,0x88,0x81,0x7C,0x7A, - 0x7E,0x8A,0x87,0x78,0x7A,0x80,0x7B,0x7A,0x7E,0x83,0x85,0x82,0x7D,0x7E,0x81,0x7D, - 0x7E,0x83,0x83,0x83,0x7F,0x7E,0x7B,0x75,0x8E,0x96,0x7D,0x7D,0x82,0x77,0x76,0x78, - 0x7D,0x86,0x7D,0x75,0x7C,0x7F,0x7A,0x79,0x7C,0x81,0x83,0x7E,0x7B,0x7F,0x7E,0x7B, - 0x7F,0x85,0x86,0x83,0x80,0x83,0x7E,0x7A,0x95,0x96,0x7B,0x83,0x86,0x7A,0x7B,0x7C, - 0x84,0x8E,0x81,0x78,0x80,0x80,0x7B,0x7B,0x7E,0x84,0x82,0x7C,0x7C,0x7F,0x7D,0x7B, - 0x7C,0x7E,0x7E,0x7D,0x7C,0x7B,0x75,0x74,0x90,0x90,0x75,0x7E,0x84,0x7A,0x76,0x7C, - 0x86,0x8B,0x84,0x72,0x7D,0x87,0x7C,0x7F,0x87,0x8A,0x88,0x89,0x87,0x8A,0x86,0x7C, - 0x84,0x86,0x84,0x84,0x80,0x83,0x7D,0x73,0x8F,0x94,0x79,0x80,0x86,0x78,0x72,0x73, - 0x7F,0x89,0x81,0x7C,0x84,0x82,0x79,0x79,0x7F,0x84,0x80,0x7D,0x7F,0x84,0x80,0x79, - 0x7D,0x80,0x7F,0x80,0x7D,0x7E,0x7B,0x6F,0x89,0x96,0x77,0x7C,0x8B,0x79,0x76,0x7A, - 0x7E,0x8C,0x85,0x78,0x83,0x88,0x7A,0x78,0x84,0x89,0x83,0x82,0x85,0x86,0x82,0x7B, - 0x85,0x83,0x7C,0x7F,0x82,0x81,0x7C,0x73,0x7F,0x9B,0x81,0x73,0x8F,0x82,0x72,0x76, - 0x80,0x89,0x84,0x77,0x7D,0x88,0x74,0x6E,0x7C,0x78,0x73,0x77,0x79,0x7E,0x80,0x75, - 0x7F,0x8C,0x81,0x86,0x8E,0x88,0x8B,0x80,0x80,0x9C,0x88,0x6A,0x84,0x80,0x69,0x73, - 0x79,0x80,0x88,0x73,0x77,0x98,0x8B,0x72,0x80,0x91,0x84,0x77,0x71,0x7C,0x8F,0x7C, - 0x70,0x8A,0x95,0x83,0x74,0x79,0x89,0x7A,0x65,0x8C,0x9B,0x82,0x85,0x81,0x68,0x70, - 0x83,0x7A,0x7A,0x77,0x7B,0x7D,0x6F,0x77,0x8B,0x88,0x74,0x7D,0x94,0x9D,0x8D,0x74, - 0x77,0x90,0x8B,0x77,0x82,0x83,0x7D,0x82,0x6D,0x7A,0xA2,0x7B,0x64,0x96,0x91,0x6A, - 0x68,0x7B,0x93,0x83,0x68,0x84,0xA4,0x83,0x6B,0x8A,0x8C,0x6E,0x6B,0x87,0x8D,0x75, - 0x6E,0x7E,0x88,0x7F,0x83,0x87,0x77,0x72,0x6F,0x79,0x98,0x8D,0x77,0x8B,0x82,0x70, - 0x82,0x84,0x7E,0x79,0x76,0x81,0x78,0x6F,0x7D,0x90,0x8D,0x8F,0x8F,0x76,0x68,0x76, - 0x7C,0x87,0x9B,0x80,0x82,0x99,0x88,0x7C,0x97,0x84,0x62,0x8E,0x75,0x6A,0x91,0x74, - 0x69,0x76,0x72,0x6F,0x66,0x77,0x88,0x91,0xAC,0xA5,0xAA,0xAF,0x96,0x6C,0x6F,0x80, - 0x5E,0x5C,0x6F,0x73,0x6B,0x7E,0x93,0x99,0x9D,0x95,0x92,0x7F,0x5B,0x49,0x5A,0x81, - 0x91,0x80,0x76,0x77,0x81,0x7D,0x85,0x93,0x92,0x96,0x8F,0x84,0x93,0x98,0x8A,0x9F, - 0xA8,0x9C,0x8D,0x6D,0x68,0x70,0x7C,0x76,0x5A,0x5B,0x6F,0x69,0x6F,0x8C,0x7D,0x5C, - 0x77,0x87,0x73,0x7E,0x78,0x7A,0x99,0xA2,0x96,0x90,0x82,0x6E,0x8B,0xAE,0x9C,0x80, - 0x79,0x83,0x82,0x72,0x8B,0x95,0x71,0x6E,0x72,0x76,0x71,0x6A,0x7C,0x7E,0x89,0x93, - 0x77,0x6F,0x72,0x69,0x75,0x86,0x7D,0x70,0x6B,0x73,0x8B,0x9C,0xA3,0xA1,0x98,0x99, - 0x88,0x76,0x6E,0x80,0x92,0x89,0x95,0x95,0x7A,0x64,0x77,0x84,0x78,0x76,0x60,0x6C, - 0x88,0x70,0x6F,0x89,0x74,0x6E,0x7E,0x65,0x76,0x98,0x84,0x7F,0x8C,0x7D,0x7D,0x93, - 0x8E,0x9C,0xAF,0x9A,0x90,0x99,0x8A,0x7B,0x7C,0x7C,0x72,0x70,0x7C,0x73,0x67,0x69, - 0x7B,0x88,0x9F,0xA1,0x88,0x94,0x8E,0x67,0x6A,0x7C,0x7B,0x74,0x5F,0x68,0x78,0x66, - 0x6D,0x8F,0x82,0x76,0x8F,0x88,0x8E,0x92,0x7E,0x92,0x88,0x79,0x93,0x81,0x62,0x6F, - 0x95,0x9F,0x89,0x80,0x75,0x71,0x81,0x85,0xA2,0xA6,0x84,0x92,0x90,0x73,0x6A,0x6B, - 0x6B,0x68,0x71,0x72,0x76,0x6A,0x65,0x83,0x91,0x89,0x82,0x8D,0x88,0x86,0x90,0x94, - 0x89,0x7D,0x88,0x87,0x80,0x6E,0x6E,0x89,0x80,0x78,0x96,0x92,0x6F,0x72,0x7A,0x8D, - 0xA0,0x89,0x82,0x7D,0x71,0x75,0x8B,0x9D,0x84,0x91,0xAF,0x97,0x8E,0x82,0x7E,0x94, - 0x8B,0x81,0x81,0x66,0x54,0x64,0x6E,0x68,0x5E,0x65,0x67,0x69,0x71,0x71,0x87,0x87, - 0x85,0x93,0x85,0x7E,0x7D,0x7D,0x92,0x87,0x83,0x94,0x82,0x79,0x8A,0x99,0x99,0x8D, - 0x82,0x92,0x91,0x82,0x94,0x9D,0x87,0x6A,0x75,0x74,0x5A,0x6E,0x7A,0x7D,0x87,0x88, - 0x90,0x7A,0x63,0x74,0x87,0x80,0x71,0x7F,0x82,0x79,0x7D,0x7A,0x86,0x8F,0x8A,0x8C, - 0x94,0x85,0x78,0x96,0xA4,0x96,0x94,0x93,0x83,0x6E,0x6D,0x80,0x8D,0x8C,0x7F,0x74, - 0x6B,0x5D,0x69,0x81,0x77,0x6F,0x76,0x6E,0x75,0x76,0x86,0xA2,0x9D,0x99,0x9A,0x8B, - 0x61,0x59,0x78,0x84,0x74,0x75,0x86,0x7B,0x69,0x75,0x8F,0x88,0x7E,0x87,0x88,0x78, - 0x62,0x6B,0x7A,0x83,0x7B,0x84,0x90,0x77,0x74,0x73,0x7C,0x86,0x8F,0x98,0xA0,0x93, - 0x88,0x9B,0x91,0x7C,0x80,0x8E,0x82,0x7A,0x7C,0x88,0xA5,0xA4,0x92,0x94,0x83,0x6E, - 0x7E,0x7F,0x68,0x6F,0x6B,0x5E,0x6B,0x5D,0x67,0x7F,0x69,0x7A,0x82,0x6B,0x69,0x75, - 0x90,0x8F,0x8A,0x8E,0x88,0x7D,0x75,0x7C,0x87,0x96,0x8A,0x80,0x7E,0x74,0x89,0x90, - 0x88,0x7D,0x7F,0x92,0x86,0x75,0x79,0x75,0x7C,0x7D,0x76,0x7F,0x6D,0x56,0x67,0x88, - 0x8D,0x7A,0x80,0x81,0x7D,0x7D,0x76,0x84,0x99,0xA8,0xAF,0x9F,0x7F,0x67,0x6E,0x75, - 0x6F,0x7A,0x91,0x7F,0x75,0x86,0x80,0x86,0x7D,0x7F,0x8E,0x8A,0x79,0x74,0x77,0x62, - 0x64,0x75,0x77,0x6C,0x76,0x7C,0x80,0xA1,0x9C,0xA1,0x9A,0x73,0x87,0x94,0x8B,0x81, - 0x80,0x78,0x70,0x6F,0x6A,0x71,0x73,0x82,0x9A,0xA4,0x8D,0x7E,0x8B,0x97,0x9F,0x87, - 0x7E,0x7F,0x63,0x55,0x5A,0x73,0x7E,0x72,0x6A,0x69,0x6C,0x73,0x87,0x8E,0x82,0x89, - 0x98,0x8E,0x8C,0x85,0x7B,0x97,0x8C,0x7E,0x89,0x6E,0x60,0x77,0x8A,0x7C,0x75,0x75, - 0x70,0x7D,0x6F,0x6F,0x80,0x84,0x94,0x92,0x82,0x7C,0x78,0x76,0x87,0x97,0x96,0x85, - 0x77,0x69,0x6D,0x7B,0x88,0x99,0x90,0x94,0x9C,0x84,0x81,0x7D,0x62,0x6C,0x7E,0x7E, - 0x78,0x75,0x74,0x81,0x95,0xA6,0x9D,0x81,0x79,0x6F,0x75,0x76,0x71,0x74,0x74,0x82, - 0x6B,0x68,0x7D,0x75,0x84,0x9A,0x91,0x82,0x7C,0x7F,0x94,0xA3,0x93,0x88,0x7E,0x73, - 0x72,0x63,0x72,0x96,0x93,0x8B,0x95,0x99,0x9A,0x9A,0x7E,0x7D,0x9B,0x86,0x75,0x77, - 0x67,0x6F,0x78,0x82,0x80,0x6F,0x76,0x5D,0x65,0x7F,0x71,0x7F,0x7A,0x78,0x7E,0x72, - 0x83,0x85,0x85,0xA0,0x8B,0x6E,0x83,0x70,0x71,0x8C,0x87,0x8C,0x7F,0x76,0x78,0x79, - 0x86,0x97,0xA0,0x8C,0x82,0x7B,0x71,0x89,0x80,0x71,0x7F,0x84,0x88,0x83,0x72,0x76, - 0x88,0x94,0xA9,0x98,0x8A,0x86,0x6A,0x73,0x71,0x6D,0x74,0x6D,0x75,0x69,0x68,0x7C, - 0x7F,0x98,0xA8,0x92,0x81,0x79,0x80,0x92,0x9C,0x9E,0x94,0x78,0x70,0x67,0x57,0x73, - 0x8F,0x85,0x74,0x83,0x88,0x81,0x86,0x7A,0x83,0x9A,0x8B,0x85,0x86,0x73,0x70,0x7E, - 0x95,0x99,0x81,0x88,0x8D,0x94,0x98,0x8F,0x92,0x7F,0x86,0x7B,0x6D,0x76,0x6D,0x87, - 0x8C,0x78,0x7D,0x55,0x43,0x78,0x8E,0x7A,0x77,0x86,0x73,0x6F,0x7F,0x85,0x99,0xA4, - 0xA7,0x92,0x68,0x72,0x86,0x6E,0x60,0x74,0x77,0x72,0x6F,0x67,0x78,0x8E,0xA4,0xA9, - 0x88,0x7A,0x85,0x75,0x79,0x89,0x89,0x88,0x7F,0x82,0x75,0x79,0x78,0x7E,0xA1,0x9C, - 0x8A,0x87,0x79,0x81,0x9E,0x96,0x90,0x7E,0x5F,0x6D,0x70,0x62,0x87,0xA6,0x81,0x84, - 0x98,0x78,0x75,0x72,0x63,0x7C,0x88,0x76,0x7A,0x7C,0x65,0x5E,0x75,0x8E,0x89,0x77, - 0x79,0x82,0x82,0x8E,0x94,0x84,0x97,0x9E,0x83,0x74,0x70,0x7D,0x88,0x88,0x82,0x7E, - 0x75,0x71,0x8D,0xA3,0xA8,0x9D,0x81,0x7F,0x85,0x73,0x74,0x86,0x76,0x6C,0x76,0x6B, - 0x65,0x62,0x5E,0x5F,0x70,0x6C,0x64,0x76,0x7A,0x80,0x97,0xAA,0xA4,0x8D,0x8A,0x8B, - 0x7E,0x77,0x79,0x7C,0x7C,0x80,0x79,0x73,0x7A,0x7A,0x6F,0x87,0x96,0x76,0x71,0x6E, - 0x87,0xA4,0x8F,0x94,0x8A,0x6E,0x76,0x73,0x76,0x99,0x9F,0x82,0x89,0x99,0x82,0x6F, - 0x6F,0x75,0x79,0x7C,0x76,0x76,0x75,0x71,0x74,0x90,0x9F,0x8B,0x81,0x82,0x81,0x7A, - 0x87,0x86,0x83,0x94,0x87,0x78,0x62,0x62,0x78,0x7C,0x7E,0x79,0x76,0x62,0x59,0x76, - 0x8E,0x98,0x99,0x87,0x89,0x96,0x81,0x82,0x8F,0x83,0x81,0x87,0x86,0x81,0x85,0x83, - 0x7E,0x96,0x99,0x89,0x89,0x75,0x73,0x85,0x93,0x91,0x7F,0x79,0x77,0x6A,0x5D,0x6A, - 0x6A,0x6E,0x7A,0x77,0x79,0x73,0x72,0x7B,0x8B,0x90,0x8B,0x85,0x70,0x86,0x91,0x7B, - 0x85,0x72,0x6A,0x79,0x67,0x6E,0x92,0x8D,0x84,0xA0,0x9F,0x89,0x7C,0x74,0x7D,0x82, - 0x89,0x8A,0x8D,0x88,0x73,0x79,0x8D,0x99,0x8A,0x7F,0x79,0x7A,0x80,0x7E,0x87,0x7E, - 0x80,0x82,0x6B,0x5D,0x70,0x73,0x73,0x87,0x8F,0x8B,0x76,0x6C,0x7D,0x8D,0x94,0x99, - 0x88,0x8A,0x94,0x7C,0x80,0x82,0x74,0x7C,0x7A,0x71,0x6F,0x68,0x60,0x68,0x81,0x90, - 0xA0,0x8D,0x70,0x81,0x8A,0x8D,0x96,0x8F,0x83,0x82,0x79,0x73,0x83,0x84,0x8E,0xA3, - 0xA0,0x92,0x89,0x86,0x7E,0x8B,0x91,0x83,0x6C,0x5D,0x75,0x74,0x6E,0x73,0x69,0x70, - 0x74,0x65,0x71,0x93,0x7E,0x77,0x9D,0xA0,0x8B,0x7E,0x76,0x6E,0x69,0x6E,0x79,0x81, - 0x71,0x67,0x73,0x7A,0x81,0x95,0x8D,0x78,0x88,0x8A,0x8B,0x98,0x84,0x97,0xA1,0x79, - 0x71,0x7C,0x80,0x70,0x71,0x85,0x82,0x67,0x69,0x83,0x7D,0x8D,0x8F,0x83,0x8F,0x7B, - 0x72,0x8B,0x82,0x6F,0x91,0x9F,0x8A,0x93,0x80,0x6F,0x72,0x6A,0x7A,0x98,0x81,0x68, - 0x80,0x83,0x86,0x93,0x97,0x86,0x6F,0x62,0x64,0x74,0x69,0x70,0x91,0x97,0x94,0x90, - 0x95,0x96,0x84,0x8E,0x95,0x7B,0x69,0x6E,0x73,0x79,0x82,0x8A,0x8E,0x8D,0x8B,0x92, - 0xA7,0x90,0x81,0x9A,0x9B,0x8C,0x7A,0x6A,0x5E,0x52,0x58,0x73,0x85,0x71,0x63,0x6E, - 0x6A,0x70,0x88,0x93,0x89,0x7F,0x7F,0x91,0x95,0x74,0x7E,0x8C,0x70,0x69,0x76,0x81, - 0x6B,0x6C,0x93,0x97,0x81,0x74,0x8A,0x90,0x85,0x92,0x9A,0x9E,0x8D,0x77,0x7D,0x85, - 0x69,0x6F,0x97,0x8B,0x82,0x89,0x77,0x6B,0x69,0x7C,0x94,0x89,0x72,0x78,0x7C,0x71, - 0x85,0xA0,0x9E,0x7C,0x6F,0x82,0x86,0x80,0x70,0x7F,0x8A,0x7D,0x82,0x8B,0x8A,0x81, - 0x91,0x97,0x8B,0x77,0x60,0x67,0x6E,0x67,0x7E,0x8E,0x7A,0x80,0x83,0x88,0x8D,0x85, - 0x90,0x9D,0x91,0x7C,0x80,0x6F,0x54,0x5A,0x77,0x90,0x95,0x80,0x87,0x90,0x81,0x92, - 0xAA,0xA5,0x90,0x84,0x86,0x89,0x80,0x6E,0x75,0x6F,0x64,0x74,0x66,0x63,0x64,0x6D, - 0x8B,0x80,0x73,0x7B,0x85,0x80,0x86,0x97,0x90,0x7F,0x6D,0x70,0x6C,0x66,0x77,0x7E, - 0x8A,0x97,0x95,0x8D,0x7D,0x6C,0x75,0x83,0x87,0x92,0x8D,0x78,0x6B,0x71,0x90,0x9A, - 0x8A,0x78,0x72,0x84,0x88,0x7B,0x85,0x8E,0x78,0x80,0x88,0x7B,0x81,0x75,0x75,0x8D, - 0x8F,0x7F,0x75,0x7B,0x84,0x90,0x88,0x81,0x74,0x68,0x78,0x7A,0x80,0x8D,0x95,0x96, - 0x8C,0x7D,0x80,0x73,0x5C,0x65,0x77,0x85,0x87,0x7B,0x78,0x82,0x87,0x93,0xA0,0x99, - 0x85,0x6C,0x72,0x80,0x72,0x6C,0x78,0x84,0x8E,0x83,0x85,0x9B,0x90,0x8B,0x9F,0xA2, - 0x8A,0x7A,0x84,0x7F,0x7A,0x77,0x76,0x7B,0x69,0x5E,0x6F,0x74,0x68,0x76,0x8B,0x8C, - 0x7E,0x79,0x8A,0x8C,0x74,0x70,0x8B,0x89,0x6A,0x6B,0x7A,0x7E,0x87,0x93,0x92,0x7F, - 0x72,0x80,0x8A,0x7F,0x78,0x83,0x94,0x93,0x7C,0x7C,0x89,0x71,0x6C,0x88,0x8C,0x75, - 0x70,0x84,0x84,0x7F,0x7C,0x8C,0x97,0x7D,0x76,0x87,0x8D,0x87,0x86,0x8C,0x8A,0x7D, - 0x7A,0x84,0x80,0x6F,0x77,0x84,0x79,0x70,0x6F,0x77,0x84,0x92,0x9D,0xA2,0x89,0x73, - 0x7D,0x7A,0x65,0x60,0x71,0x82,0x7C,0x6F,0x7E,0x90,0x89,0x8F,0xA1,0x9B,0x78,0x6F, - 0x81,0x7A,0x72,0x76,0x85,0x88,0x77,0x75,0x88,0x93,0x8A,0x94,0xA1,0x95,0x8A,0x91, - 0x95,0x89,0x73,0x74,0x7D,0x70,0x62,0x60,0x69,0x6D,0x76,0x86,0x84,0x71,0x70,0x7F, - 0x84,0x7E,0x80,0x8B,0x8A,0x7C,0x73,0x75,0x76,0x77,0x88,0x98,0x89,0x75,0x7B,0x89, - 0x7F,0x72,0x7E,0x88,0x81,0x72,0x70,0x7F,0x81,0x79,0x8A,0x95,0x83,0x7E,0x8A,0x92, - 0x89,0x80,0x89,0x8E,0x7E,0x70,0x76,0x7F,0x7D,0x7E,0x94,0x93,0x77,0x73,0x80,0x7D, - 0x77,0x79,0x78,0x73,0x68,0x68,0x79,0x84,0x85,0x91,0xA2,0x9C,0x8C,0x87,0x82,0x75, - 0x73,0x80,0x7E,0x76,0x70,0x78,0x83,0x7E,0x7B,0x85,0x8B,0x81,0x7C,0x7A,0x79,0x89, - 0x8E,0x80,0x82,0x7D,0x75,0x7D,0x74,0x6A,0x82,0x99,0x95,0x91,0x8E,0x96,0xA3,0x9B, - 0x89,0x7C,0x83,0x78,0x6C,0x72,0x6D,0x7C,0x62,0x5D,0x73,0x70,0x7A,0x75,0x73,0x7B, - 0x8A,0x89,0x7F,0x6D,0x70,0x9C,0xA1,0x91,0x9B,0xA1,0x9E,0x9B,0x87,0x7B,0x7E,0x6E, - 0x59,0x5B,0x60,0x5F,0x66,0x5B,0x51,0x79,0x90,0x77,0x70,0x79,0x78,0x7F,0x76,0x6B, - 0x8B,0x8A,0x7C,0x8B,0x88,0x94,0xB5,0xBC,0x9E,0xA9,0xCA,0xB0,0x9B,0x97,0x88,0x8B, - 0x87,0x71,0x7F,0x8D,0x73,0x68,0x7E,0x83,0x74,0x6F,0x69,0x77,0x84,0x73,0x6D,0x72, - 0x72,0x59,0x41,0x42,0x42,0x4F,0x58,0x54,0x59,0x64,0x6B,0x6A,0x6B,0x78,0x8F,0x8D, - 0x80,0x92,0x9C,0x8F,0x86,0x90,0xAC,0xB6,0xAF,0xBB,0xD4,0xDC,0xDA,0xD5,0xD6,0xD9, - 0xCC,0xB6,0xB4,0xB5,0xA7,0x98,0x94,0x84,0x75,0x79,0x6D,0x62,0x65,0x57,0x41,0x38, - 0x2F,0x2F,0x3A,0x33,0x31,0x38,0x38,0x3C,0x40,0x42,0x4E,0x5C,0x60,0x69,0x75,0x7A, - 0x7D,0x81,0x86,0x89,0x91,0x93,0x91,0x9B,0x9F,0x9E,0xA6,0xAB,0xA8,0xA9,0xA5,0xAB, - 0xB6,0xB1,0x9F,0x90,0x8B,0x85,0x80,0x7A,0x7C,0x7C,0x6F,0x5F,0x5B,0x57,0x52,0x64, - 0x70,0x6E,0x6A,0x69,0x66,0x67,0x5C,0x53,0x59,0x5C,0x5E,0x5D,0x5E,0x5D,0x62,0x68, - 0x71,0x77,0x7A,0x88,0x8E,0x90,0x91,0x92,0x91,0x90,0xA0,0xAF,0xAA,0xA8,0xAF,0xAE, - 0xAF,0xB2,0xB4,0xBF,0xC3,0xBE,0xC0,0xC3,0xB9,0xAD,0xAB,0xAB,0xAD,0xAA,0xA3,0xA5, - 0x9B,0x85,0x7E,0x81,0x80,0x73,0x6F,0x7B,0x7B,0x66,0x5C,0x5A,0x4F,0x4D,0x54,0x59, - 0x5A,0x54,0x4D,0x53,0x54,0x49,0x4D,0x59,0x5D,0x62,0x69,0x71,0x71,0x70,0x78,0x80, - 0x82,0x86,0x8E,0x91,0x8B,0x8C,0x89,0x89,0x8F,0x8E,0x95,0xA1,0xA1,0x9D,0xA1,0xA0, - 0x9A,0x9A,0x9C,0xA0,0xA4,0xA7,0xA8,0xA6,0x9C,0x93,0x94,0x93,0x93,0x8A,0x86,0x8F, - 0x7E,0x6A,0x6B,0x69,0x5A,0x57,0x59,0x56,0x58,0x4C,0x46,0x4E,0x48,0x45,0x52,0x55, - 0x4F,0x56,0x52,0x4A,0x48,0x43,0x47,0x4F,0x52,0x56,0x68,0x6A,0x5D,0x65,0x67,0x60, - 0x64,0x6C,0x78,0x85,0x85,0x87,0x95,0x96,0x92,0xA8,0xB7,0xB9,0xC6,0xCE,0xCC,0xC9, - 0xBE,0xBF,0xC6,0xBE,0xC0,0xB9,0xB3,0xC2,0xB4,0xA1,0xA6,0x9F,0x8F,0x97,0x9C,0x96, - 0x95,0x8B,0x88,0x88,0x78,0x79,0x86,0x7E,0x7B,0x81,0x7C,0x78,0x74,0x70,0x75,0x70, - 0x73,0x78,0x76,0x81,0x74,0x65,0x72,0x72,0x6B,0x77,0x81,0x83,0x86,0x7F,0x80,0x87, - 0x7F,0x82,0x8E,0x8E,0x8E,0x94,0x94,0x8E,0x8D,0x8A,0x8A,0x8B,0x92,0x91,0x91,0xA4, - 0x97,0x87,0x95,0x8B,0x7A,0x84,0x8B,0x8C,0x8B,0x83,0x86,0x87,0x76,0x78,0x89,0x84, - 0x7E,0x85,0x84,0x7E,0x76,0x71,0x73,0x73,0x76,0x7D,0x7B,0x89,0x85,0x6A,0x6E,0x6F, - 0x60,0x62,0x68,0x67,0x6A,0x61,0x59,0x60,0x53,0x48,0x56,0x5A,0x56,0x5C,0x5C,0x5B, - 0x58,0x55,0x5A,0x5A,0x5B,0x5A,0x58,0x6F,0x6A,0x51,0x61,0x64,0x51,0x57,0x62,0x66, - 0x6C,0x68,0x6A,0x73,0x69,0x68,0x79,0x7C,0x7B,0x86,0x8D,0x8F,0x8C,0x8D,0x97,0x9A, - 0xA1,0xA8,0xAA,0xC0,0xC0,0xAB,0xB6,0xB6,0xA0,0xA3,0xB0,0xB0,0xB0,0xA9,0xA8,0xB0, - 0xA3,0x9B,0xA9,0xA4,0x9C,0xA2,0xA6,0xA5,0x9C,0x94,0x97,0x94,0x92,0x90,0x92,0xA4, - 0x9A,0x86,0x93,0x8E,0x79,0x7E,0x89,0x8D,0x90,0x8E,0x90,0x93,0x84,0x86,0x94,0x8A, - 0x82,0x85,0x83,0x81,0x78,0x6F,0x6D,0x67,0x67,0x67,0x6A,0x7C,0x70,0x60,0x73,0x6F, - 0x59,0x60,0x6A,0x6B,0x6F,0x70,0x73,0x73,0x66,0x68,0x76,0x72,0x73,0x7D,0x7F,0x80, - 0x7E,0x7C,0x7D,0x79,0x79,0x76,0x83,0x95,0x80,0x78,0x86,0x76,0x6A,0x76,0x79,0x7A, - 0x79,0x76,0x7E,0x7B,0x69,0x6D,0x75,0x6E,0x75,0x7A,0x77,0x78,0x71,0x73,0x74,0x71, - 0x73,0x71,0x83,0x91,0x7C,0x80,0x8F,0x7E,0x77,0x85,0x8B,0x8B,0x8A,0x89,0x90,0x88, - 0x7C,0x85,0x84,0x7A,0x81,0x87,0x83,0x80,0x7A,0x76,0x75,0x76,0x72,0x74,0x8C,0x86, - 0x74,0x85,0x86,0x72,0x76,0x82,0x87,0x8C,0x89,0x88,0x89,0x7D,0x7A,0x80,0x77,0x72, - 0x77,0x74,0x71,0x6E,0x67,0x64,0x65,0x64,0x60,0x72,0x7E,0x68,0x69,0x79,0x6C,0x64, - 0x70,0x75,0x79,0x7D,0x7E,0x85,0x81,0x76,0x7E,0x85,0x7E,0x85,0x8E,0x8D,0x91,0x95, - 0x95,0x92,0x92,0x8E,0x95,0xB0,0xA8,0x98,0xAA,0xA5,0x90,0x95,0x9C,0x9B,0x9D,0x9D, - 0xA2,0xA7,0x9A,0x96,0xA2,0x9D,0x9B,0xA7,0xA6,0xA3,0xA3,0x9F,0x9C,0x9C,0x98,0x92, - 0xA6,0xAE,0x96,0x99,0xA0,0x8A,0x7E,0x87,0x8A,0x87,0x85,0x83,0x86,0x79,0x6C,0x73, - 0x6F,0x62,0x66,0x6D,0x69,0x65,0x62,0x5C,0x56,0x55,0x4D,0x55,0x6B,0x59,0x4D,0x5F, - 0x53,0x3F,0x45,0x4E,0x52,0x51,0x51,0x59,0x59,0x4D,0x53,0x5D,0x55,0x57,0x60,0x5F, - 0x5F,0x5F,0x5C,0x5A,0x57,0x53,0x54,0x6F,0x73,0x5B,0x65,0x6D,0x58,0x55,0x60,0x65, - 0x68,0x69,0x71,0x7E,0x77,0x71,0x80,0x86,0x86,0x91,0x98,0x9B,0x9E,0x9D,0x9D,0x9C, - 0x9D,0x97,0xA9,0xC1,0xA9,0x9D,0xAF,0xA0,0x8D,0x95,0x9B,0x9D,0x9B,0x95,0x9B,0x9C, - 0x8D,0x8E,0x96,0x91,0x93,0x9C,0x9C,0x9D,0x9C,0x99,0x96,0x98,0x97,0x99,0xB4,0xB4, - 0xA0,0xB0,0xB3,0x9F,0x9D,0xA7,0xAE,0xAE,0xA8,0xAC,0xB2,0xA3,0x99,0xA2,0xA1,0x9B, - 0x9F,0xA2,0xA2,0x9D,0x94,0x91,0x90,0x90,0x89,0x98,0xAF,0x98,0x8C,0x9A,0x8B,0x78, - 0x7A,0x7F,0x80,0x7C,0x74,0x7A,0x7B,0x6A,0x69,0x70,0x6B,0x69,0x6C,0x6A,0x68,0x63, - 0x5E,0x5C,0x5B,0x53,0x50,0x69,0x6B,0x51,0x58,0x5D,0x48,0x41,0x47,0x4E,0x53,0x4D, - 0x4D,0x56,0x4D,0x3F,0x44,0x47,0x44,0x48,0x4C,0x50,0x52,0x4C,0x4D,0x51,0x53,0x50, - 0x5A,0x78,0x72,0x5F,0x6F,0x6F,0x61,0x64,0x6C,0x74,0x78,0x6F,0x71,0x7B,0x73,0x70, - 0x79,0x7B,0x7D,0x82,0x82,0x88,0x8C,0x87,0x8A,0x90,0x95,0x92,0xA6,0xC3,0xB6,0xB0, - 0xC0,0xB9,0xAE,0xB1,0xB5,0xC1,0xC2,0xB7,0xBC,0xC0,0xB4,0xAE,0xAD,0xAC,0xAE,0xAA, - 0xA6,0xAA,0xA3,0x9A,0x97,0x9A,0x9B,0x92,0xA6,0xB4,0x9A,0x97,0xA1,0x94,0x8F,0x91, - 0x95,0xA0,0x9D,0x94,0x9C,0xA1,0x99,0x96,0x99,0x9C,0x9F,0x9C,0x9C,0xA2,0x9D,0x94, - 0x90,0x93,0x8C,0x88,0xA2,0xA2,0x8B,0x8F,0x8C,0x7F,0x7C,0x76,0x7E,0x89,0x7E,0x75, - 0x7B,0x77,0x6D,0x6A,0x6C,0x71,0x70,0x68,0x69,0x6B,0x65,0x60,0x5F,0x68,0x5E,0x5D, - 0x7C,0x76,0x5E,0x62,0x61,0x58,0x54,0x4F,0x59,0x63,0x57,0x51,0x59,0x58,0x4F,0x4B, - 0x4B,0x4F,0x52,0x4E,0x4E,0x52,0x4F,0x4A,0x47,0x4F,0x48,0x4B,0x6C,0x66,0x54,0x5C, - 0x5D,0x59,0x5B,0x5C,0x6A,0x76,0x6C,0x68,0x70,0x73,0x73,0x72,0x73,0x7C,0x82,0x7E, - 0x7D,0x82,0x82,0x7F,0x7C,0x82,0x80,0x81,0x9D,0x9F,0x8F,0x95,0x95,0x94,0x97,0x94, - 0xA0,0xAF,0xAC,0xA6,0xAC,0xB1,0xB1,0xAC,0xA9,0xB2,0xB9,0xB5,0xAE,0xAE,0xAF,0xAB, - 0xA2,0xA5,0xA4,0x9D,0xB1,0xB5,0x9C,0x98,0x95,0x8E,0x91,0x8C,0x8C,0x99,0x96,0x89, - 0x87,0x88,0x87,0x85,0x7F,0x81,0x8D,0x8E,0x86,0x89,0x8E,0x8E,0x8A,0x88,0x8A,0x86, - 0x98,0xAA,0x97,0x8D,0x8E,0x8A,0x8A,0x81,0x7F,0x8F,0x93,0x87,0x7E,0x7F,0x82,0x80, - 0x7C,0x7C,0x85,0x87,0x7D,0x76,0x76,0x78,0x75,0x73,0x75,0x6C,0x78,0x92,0x83,0x70, - 0x72,0x72,0x72,0x6B,0x64,0x70,0x7A,0x74,0x6C,0x6B,0x6B,0x6D,0x69,0x62,0x64,0x6B, - 0x6B,0x66,0x60,0x61,0x63,0x5D,0x59,0x54,0x59,0x77,0x78,0x61,0x5C,0x5A,0x5B,0x61, - 0x5C,0x5B,0x65,0x6A,0x66,0x5F,0x5A,0x62,0x6C,0x69,0x62,0x67,0x72,0x71,0x69,0x64, - 0x6A,0x6D,0x68,0x65,0x5F,0x71,0x89,0x81,0x73,0x6D,0x6C,0x76,0x79,0x70,0x74,0x85, - 0x8E,0x8A,0x80,0x7E,0x88,0x90,0x8F,0x91,0x9C,0xA2,0xA3,0x9F,0x99,0x9A,0x9E,0xA0, - 0x9A,0x96,0xA8,0xB2,0xA6,0x96,0x88,0x8A,0x93,0x8E,0x85,0x86,0x89,0x8A,0x87,0x7D, - 0x74,0x75,0x7A,0x79,0x79,0x7A,0x80,0x85,0x81,0x7D,0x7C,0x80,0x81,0x7E,0x8E,0xA3, - 0xA1,0x99,0x8F,0x85,0x89,0x91,0x95,0x99,0x9A,0x9A,0x9D,0x9A,0x92,0x8E,0x8F,0x92, - 0x93,0x92,0x8F,0x8F,0x90,0x8D,0x8A,0x8A,0x8A,0x84,0x86,0x98,0x9D,0x97,0x93,0x85, - 0x7C,0x83,0x83,0x81,0x83,0x82,0x86,0x8B,0x87,0x7E,0x7A,0x78,0x78,0x7D,0x7D,0x7A, - 0x79,0x75,0x72,0x6F,0x6E,0x71,0x6E,0x74,0x7E,0x7A,0x74,0x70,0x67,0x68,0x6F,0x6B, - 0x67,0x65,0x62,0x64,0x66,0x68,0x6C,0x6A,0x69,0x6C,0x6E,0x6D,0x6C,0x6D,0x6F,0x6E, - 0x6E,0x6E,0x6E,0x70,0x76,0x7D,0x79,0x75,0x75,0x71,0x74,0x79,0x75,0x78,0x79,0x75, - 0x76,0x78,0x76,0x79,0x7F,0x81,0x84,0x86,0x86,0x89,0x8E,0x90,0x96,0x9B,0x99,0x98, - 0x99,0x9E,0xA1,0x9C,0x9D,0x9F,0x9B,0x9D,0x9C,0x94,0x93,0x90,0x8A,0x89,0x84,0x7E, - 0x7C,0x78,0x75,0x76,0x77,0x77,0x75,0x72,0x73,0x75,0x75,0x75,0x78,0x78,0x7B,0x7F, - 0x7B,0x7D,0x81,0x83,0x8D,0x90,0x89,0x8A,0x8B,0x89,0x8B,0x8E,0x8D,0x8D,0x8A,0x88, - 0x8A,0x8C,0x8B,0x8F,0x92,0x91,0x90,0x90,0x90,0x8F,0x8B,0x8D,0x95,0x8E,0x88,0x8D, - 0x88,0x88,0x8D,0x8B,0x8D,0x8C,0x84,0x86,0x87,0x82,0x82,0x81,0x7D,0x7C,0x7B,0x7C, - 0x7E,0x7E,0x80,0x82,0x85,0x82,0x7E,0x7E,0x7B,0x7F,0x82,0x7B,0x7B,0x77,0x6F,0x77, - 0x76,0x6D,0x70,0x71,0x6B,0x6C,0x69,0x66,0x67,0x63,0x62,0x66,0x67,0x67,0x68,0x69, - 0x69,0x6D,0x73,0x75,0x76,0x75,0x76,0x81,0x7F,0x78,0x7E,0x7C,0x7A,0x7F,0x7C,0x7C, - 0x7F,0x7A,0x7D,0x83,0x7D,0x7C,0x7E,0x7C,0x7D,0x7F,0x80,0x84,0x84,0x83,0x88,0x8D, - 0x8C,0x8D,0x90,0x8E,0x8E,0x95,0x91,0x90,0x92,0x8C,0x8F,0x95,0x8C,0x8A,0x8A,0x84, - 0x86,0x87,0x85,0x84,0x7F,0x7D,0x7F,0x7E,0x7D,0x7C,0x7D,0x7D,0x7D,0x7E,0x7E,0x7D, - 0x7C,0x7C,0x83,0x87,0x80,0x80,0x82,0x7E,0x84,0x88,0x83,0x84,0x83,0x83,0x89,0x87, - 0x85,0x88,0x85,0x83,0x82,0x84,0x88,0x88,0x87,0x89,0x8A,0x89,0x86,0x86,0x86,0x83, - 0x8A,0x91,0x89,0x87,0x89,0x83,0x87,0x88,0x82,0x85,0x83,0x7E,0x80,0x7E,0x7C,0x7C, - 0x7D,0x7F,0x80,0x81,0x81,0x83,0x84,0x83,0x83,0x85,0x84,0x83,0x85,0x83,0x86,0x8A, - 0x84,0x83,0x84,0x7C,0x81,0x85,0x7D,0x7D,0x7E,0x78,0x78,0x76,0x74,0x75,0x72,0x71, - 0x75,0x76,0x76,0x76,0x77,0x78,0x78,0x7B,0x7D,0x7D,0x7C,0x77,0x78,0x7F,0x7A,0x79, - 0x81,0x7C,0x7A,0x84,0x80,0x7D,0x7E,0x78,0x78,0x7B,0x77,0x79,0x7B,0x77,0x78,0x7B, - 0x7D,0x7E,0x7F,0x80,0x84,0x86,0x83,0x84,0x85,0x81,0x7D,0x84,0x88,0x83,0x84,0x85, - 0x83,0x87,0x86,0x81,0x82,0x7E,0x78,0x7D,0x7C,0x79,0x79,0x75,0x74,0x75,0x77,0x7B, - 0x7C,0x79,0x79,0x7D,0x7D,0x7B,0x79,0x79,0x78,0x78,0x81,0x81,0x7C,0x7E,0x7A,0x7C, - 0x82,0x7C,0x7B,0x80,0x7A,0x78,0x7D,0x7A,0x7A,0x7A,0x78,0x7B,0x7E,0x7E,0x7E,0x7F, - 0x7E,0x7F,0x83,0x84,0x84,0x85,0x87,0x86,0x8B,0x8F,0x88,0x88,0x88,0x83,0x8A,0x8C, - 0x85,0x86,0x84,0x80,0x82,0x83,0x7E,0x82,0x81,0x84,0x85,0x63,0x6A,0x86,0x8B,0x78, - 0x7D,0x97,0x78,0x77,0x88,0x84,0x86,0x90,0x9D,0x88,0x83,0x8A,0x8A,0x8A,0x82,0x8B, - 0x85,0x76,0x74,0x7A,0x7E,0x7E,0x80,0x81,0x7B,0x6E,0x74,0x77,0x75,0x77,0x7C,0x7F, - 0x7A,0x83,0x80,0x7C,0x82,0x89,0x8F,0x87,0x88,0x8D,0x83,0x88,0x8E,0x84,0x88,0x86, - 0x78,0x80,0x86,0x79,0x79,0x7B,0x70,0x78,0x7D,0x78,0x7E,0x7B,0x77,0x77,0x7C,0x7F, - 0x83,0x90,0x7B,0x6A,0x86,0x9A,0x95,0x90,0x8B,0x80,0x86,0x87,0x83,0x84,0x72,0x70, - 0x7F,0x81,0x7F,0x7A,0x74,0x7A,0x82,0x7D,0x7A,0x7B,0x74,0x72,0x80,0x7F,0x74,0x78, - 0x79,0x70,0x6E,0x83,0x8C,0x85,0x87,0x7A,0x6F,0x7C,0x7E,0x77,0x7A,0x74,0x75,0x87, - 0x86,0x84,0x8A,0x7A,0x80,0x88,0x84,0x7D,0x7E,0x86,0x84,0x85,0x7F,0x7C,0x7D,0x7A, - 0x7B,0x7C,0x8A,0x90,0x8E,0x8F,0x7D,0x78,0x81,0x7B,0x77,0x76,0x7B,0x88,0x8A,0x84, - 0x83,0x83,0x80,0x83,0x7E,0x78,0x7B,0x80,0x87,0x8F,0x87,0x82,0x82,0x7D,0x78,0x72, - 0x86,0x98,0x97,0x92,0x84,0x75,0x7E,0x85,0x72,0x73,0x7F,0x7A,0x87,0x87,0x7E,0x7C, - 0x7B,0x7E,0x7A,0x79,0x77,0x7C,0x84,0x86,0x86,0x7D,0x7E,0x81,0x79,0x77,0x77,0x8C, - 0x99,0x90,0x8A,0x80,0x7A,0x86,0x84,0x7C,0x7F,0x7F,0x7F,0x87,0x84,0x7E,0x85,0x82, - 0x82,0x81,0x7C,0x81,0x85,0x87,0x88,0x86,0x82,0x81,0x84,0x7F,0x76,0x7E,0x93,0x92, - 0x84,0x8A,0x7E,0x7C,0x8C,0x78,0x6C,0x7A,0x74,0x7C,0x86,0x79,0x7D,0x81,0x79,0x82, - 0x80,0x79,0x7F,0x80,0x82,0x7E,0x7C,0x7D,0x80,0x7A,0x77,0x74,0x7D,0x9A,0x8F,0x83, - 0x88,0x7B,0x83,0x8B,0x71,0x6F,0x75,0x75,0x88,0x80,0x76,0x85,0x87,0x8A,0x8F,0x79, - 0x78,0x88,0x82,0x7A,0x7E,0x84,0x83,0x84,0x81,0x77,0x76,0x94,0x9E,0x84,0x8B,0x87, - 0x7A,0x93,0x83,0x70,0x84,0x81,0x84,0x8C,0x79,0x7A,0x8C,0x87,0x88,0x85,0x79,0x89, - 0x88,0x7A,0x80,0x7E,0x7E,0x80,0x79,0x78,0x74,0x82,0x99,0x8A,0x81,0x8C,0x81,0x87, - 0x8A,0x6B,0x6E,0x7E,0x79,0x88,0x7E,0x6F,0x8A,0x89,0x81,0x86,0x79,0x82,0x90,0x7E, - 0x7C,0x7D,0x7A,0x83,0x7B,0x76,0x78,0x77,0x93,0x96,0x7E,0x8B,0x86,0x7E,0x8F,0x71, - 0x69,0x82,0x77,0x80,0x84,0x6F,0x85,0x91,0x84,0x89,0x81,0x82,0x8F,0x7D,0x76,0x81, - 0x83,0x86,0x80,0x77,0x7B,0x7B,0x8F,0x9B,0x81,0x8A,0x8E,0x7E,0x8D,0x7D,0x6D,0x83, - 0x75,0x74,0x81,0x6A,0x77,0x8A,0x7C,0x82,0x7F,0x78,0x87,0x80,0x76,0x7C,0x80,0x80, - 0x7B,0x74,0x74,0x73,0x80,0x97,0x85,0x82,0x8E,0x80,0x8A,0x83,0x65,0x76,0x78,0x6C, - 0x7B,0x6D,0x73,0x8F,0x84,0x7F,0x83,0x78,0x8B,0x8C,0x77,0x80,0x80,0x81,0x81,0x74, - 0x7A,0x7B,0x7D,0x98,0x93,0x82,0x8C,0x85,0x8A,0x8C,0x70,0x7A,0x82,0x75,0x83,0x7A, - 0x73,0x8D,0x86,0x7E,0x84,0x7C,0x83,0x8E,0x7E,0x79,0x82,0x79,0x79,0x74,0x77,0x7A, - 0x77,0x90,0x8F,0x7F,0x87,0x83,0x83,0x8C,0x75,0x76,0x82,0x72,0x79,0x75,0x6D,0x80, - 0x84,0x7F,0x82,0x81,0x84,0x89,0x80,0x78,0x7E,0x7F,0x7C,0x7C,0x7A,0x7A,0x77,0x89, - 0x8E,0x82,0x85,0x82,0x84,0x89,0x7C,0x75,0x80,0x77,0x78,0x7E,0x70,0x7A,0x86,0x80, - 0x85,0x85,0x7F,0x89,0x84,0x7B,0x82,0x85,0x80,0x7E,0x7D,0x79,0x76,0x7D,0x89,0x80, - 0x82,0x89,0x82,0x8B,0x85,0x76,0x7E,0x7D,0x77,0x7C,0x73,0x73,0x7E,0x7B,0x7E,0x81, - 0x7D,0x84,0x83,0x7A,0x83,0x7F,0x7B,0x7C,0x79,0x7A,0x73,0x7B,0x88,0x81,0x82,0x88, - 0x83,0x8A,0x85,0x75,0x7F,0x82,0x7B,0x7D,0x76,0x73,0x80,0x7C,0x78,0x80,0x83,0x85, - 0x89,0x82,0x7D,0x87,0x80,0x7C,0x7C,0x7A,0x7B,0x7D,0x8D,0x83,0x7F,0x89,0x87,0x8A, - 0x86,0x7F,0x83,0x83,0x7C,0x7C,0x75,0x79,0x7F,0x7B,0x7D,0x82,0x80,0x84,0x8C,0x84, - 0x83,0x85,0x80,0x80,0x80,0x7C,0x7C,0x81,0x88,0x84,0x7D,0x83,0x84,0x86,0x87,0x80, - 0x7E,0x7F,0x7B,0x7C,0x7C,0x77,0x80,0x80,0x7C,0x7E,0x7B,0x7F,0x87,0x84,0x80,0x86, - 0x84,0x82,0x7D,0x7D,0x7B,0x7E,0x87,0x81,0x80,0x84,0x83,0x88,0x86,0x7E,0x82,0x7F, - 0x7E,0x82,0x7A,0x7B,0x7E,0x80,0x7E,0x7E,0x7E,0x80,0x87,0x84,0x80,0x86,0x83,0x7D, - 0x80,0x7B,0x7A,0x84,0x85,0x7F,0x83,0x84,0x7F,0x86,0x81,0x7C,0x83,0x83,0x81,0x80, - 0x79,0x7B,0x7F,0x7B,0x7C,0x7F,0x81,0x82,0x82,0x81,0x84,0x85,0x81,0x80,0x7E,0x79, - 0x7A,0x86,0x83,0x7D,0x84,0x83,0x83,0x84,0x7F,0x81,0x87,0x82,0x7E,0x7D,0x79,0x7C, - 0x7F,0x7D,0x7F,0x7E,0x7F,0x86,0x82,0x80,0x86,0x84,0x82,0x82,0x7E,0x80,0x87,0x86, - 0x84,0x83,0x87,0x83,0x87,0x86,0x7B,0x82,0x83,0x7E,0x7C,0x77,0x7E,0x80,0x79,0x7A, - 0x7D,0x7C,0x84,0x84,0x80,0x83,0x83,0x7E,0x7F,0x7E,0x7C,0x81,0x87,0x86,0x81,0x84, - 0x84,0x88,0x86,0x7E,0x83,0x83,0x7E,0x7E,0x7F,0x7E,0x81,0x81,0x81,0x7E,0x7C,0x80, - 0x82,0x81,0x80,0x83,0x81,0x7F,0x7E,0x7E,0x7F,0x87,0x88,0x81,0x87,0x82,0x83,0x89, - 0x7F,0x7F,0x84,0x84,0x82,0x7B,0x77,0x80,0x85,0x7B,0x7B,0x7F,0x7F,0x84,0x7F,0x7D, - 0x83,0x80,0x80,0x7C,0x78,0x7C,0x8C,0x88,0x7C,0x86,0x84,0x87,0x8B,0x7A,0x79,0x84, - 0x80,0x7C,0x79,0x75,0x81,0x82,0x79,0x7A,0x7E,0x85,0x8C,0x7D,0x77,0x85,0x80,0x77, - 0x7A,0x74,0x7A,0x9B,0x8B,0x78,0x8A,0x87,0x8C,0x87,0x6E,0x7B,0x86,0x78,0x7B,0x76, - 0x78,0x8D,0x82,0x76,0x81,0x85,0x86,0x82,0x76,0x81,0x8D,0x7A,0x75,0x79,0x72,0x8D, - 0xA0,0x82,0x89,0x8F,0x84,0x88,0x71,0x6B,0x86,0x81,0x77,0x81,0x7E,0x8B,0x8E,0x72, - 0x77,0x86,0x81,0x7A,0x75,0x7F,0x8E,0x7F,0x72,0x79,0x73,0x8B,0x9C,0x7F,0x8B,0x9E, - 0x8F,0x89,0x7B,0x6D,0x88,0x7D,0x6A,0x80,0x79,0x88,0x7F,0x64,0x75,0x6B,0x72,0x82, - 0x69,0x7A,0x8A,0x6C,0x65,0x66,0x6B,0x88,0x95,0x87,0x86,0x8A,0x7D,0x79,0x70,0x6F, - 0x88,0x86,0x82,0x8E,0x87,0x86,0x86,0x76,0x7F,0x8C,0x7C,0x7D,0x8F,0x94,0x8B,0x7B, - 0x88,0x97,0x89,0xA0,0xB8,0x94,0x9B,0xAC,0x91,0x8D,0x8F,0x8C,0x98,0x99,0x92,0x90, - 0x7E,0x7C,0x7E,0x6E,0x81,0x91,0x7C,0x78,0x7C,0x78,0x70,0x54,0x53,0x68,0x61,0x73, - 0x88,0x71,0x6A,0x67,0x53,0x52,0x4D,0x50,0x6A,0x6E,0x64,0x69,0x68,0x66,0x65,0x5C, - 0x6A,0x76,0x71,0x76,0x82,0x7B,0x71,0x6D,0x75,0x78,0x69,0x82,0x95,0x7E,0x7D,0x78, - 0x6A,0x6A,0x65,0x71,0x8B,0x8A,0x88,0x94,0x98,0xA1,0xA6,0x9B,0xA2,0xA8,0x9A,0x99, - 0xA0,0x96,0x8D,0x86,0x86,0x86,0x83,0xA1,0xA8,0x8A,0x89,0x85,0x7C,0x7A,0x75,0x84, - 0x98,0x8E,0x86,0x90,0x8B,0x83,0x7F,0x7F,0x8D,0x91,0x8A,0x92,0x97,0x8B,0x83,0x83, - 0x86,0x80,0x85,0xA2,0x9A,0x8B,0x94,0x8D,0x82,0x7A,0x7D,0x93,0x9C,0x91,0x97,0xA0, - 0x9A,0x92,0x89,0x90,0x9C,0x97,0x94,0x9B,0x93,0x83,0x7E,0x81,0x7D,0x71,0x85,0x9A, - 0x86,0x7E,0x80,0x75,0x6A,0x5D,0x62,0x75,0x6F,0x61,0x66,0x68,0x5B,0x51,0x4E,0x56, - 0x58,0x4F,0x53,0x5F,0x59,0x4F,0x51,0x56,0x50,0x4E,0x6E,0x77,0x63,0x6A,0x70,0x63, - 0x5C,0x5D,0x70,0x7F,0x72,0x71,0x7B,0x73,0x63,0x5F,0x66,0x6B,0x6B,0x67,0x70,0x77, - 0x71,0x6F,0x7B,0x83,0x7B,0x90,0xB5,0xAE,0xA5,0xAF,0xA7,0x99,0x8F,0x92,0xA7,0xA3, - 0x93,0x9B,0x9E,0x8F,0x86,0x85,0x88,0x86,0x81,0x88,0x92,0x8D,0x83,0x83,0x88,0x82, - 0x79,0x99,0xA8,0x8E,0x94,0x9A,0x8C,0x82,0x80,0x8F,0x9D,0x8F,0x90,0xA1,0x95,0x86, - 0x88,0x8C,0x93,0x92,0x8F,0x9C,0x9C,0x90,0x8C,0x8F,0x95,0x8B,0x8E,0xB2,0xAC,0x94, - 0xA3,0xA2,0x92,0x8B,0x8B,0x98,0x99,0x87,0x8A,0x94,0x83,0x7B,0x7F,0x81,0x82,0x79, - 0x7A,0x81,0x77,0x6B,0x68,0x68,0x62,0x53,0x66,0x7C,0x60,0x57,0x66,0x54,0x46,0x49, - 0x54,0x64,0x5D,0x55,0x67,0x65,0x54,0x57,0x60,0x65,0x65,0x64,0x71,0x76,0x68,0x69, - 0x70,0x70,0x69,0x64,0x7F,0x83,0x64,0x6B,0x78,0x64,0x5D,0x66,0x75,0x80,0x75,0x7C, - 0x94,0x8D,0x83,0x93,0x9D,0xA0,0xA4,0xA6,0xB2,0xAD,0x9D,0x9F,0x9E,0x97,0x8D,0x92, - 0xB0,0xA4,0x8B,0x9A,0x97,0x7D,0x7A,0x82,0x8D,0x8E,0x80,0x8D,0x9A,0x83,0x7C,0x8B, - 0x8C,0x88,0x89,0x8F,0x97,0x8E,0x87,0x8B,0x8A,0x85,0x7E,0x8A,0xAB,0x99,0x87,0xA3, - 0x9D,0x83,0x84,0x8D,0x93,0x92,0x89,0x99,0xA3,0x8C,0x89,0x98,0x92,0x8E,0x93,0x98, - 0x9C,0x92,0x89,0x8D,0x85,0x80,0x7A,0x80,0x9F,0x8C,0x73,0x8C,0x82,0x63,0x69,0x72, - 0x71,0x6D,0x63,0x6B,0x73,0x5C,0x54,0x60,0x58,0x52,0x57,0x5D,0x62,0x5A,0x57,0x5E, - 0x55,0x55,0x55,0x56,0x7A,0x72,0x58,0x73,0x74,0x54,0x56,0x64,0x68,0x6B,0x65,0x6D, - 0x79,0x64,0x5B,0x6A,0x67,0x62,0x6A,0x6F,0x76,0x74,0x70,0x79,0x7A,0x7B,0x7C,0x81, - 0xA8,0xA9,0x92,0xAD,0xB4,0x97,0x97,0xA1,0xA1,0xA4,0x9A,0x9E,0xAD,0x99,0x89,0x98, - 0x93,0x86,0x8A,0x8E,0x8F,0x8A,0x82,0x86,0x82,0x7A,0x7F,0x7C,0x92,0xA0,0x86,0x8E, - 0x9E,0x83,0x76,0x86,0x8B,0x8D,0x89,0x88,0x97,0x90,0x7E,0x8A,0x91,0x88,0x89,0x90, - 0x90,0x90,0x90,0x92,0x8F,0x8B,0x8D,0x84,0x97,0xB0,0x94,0x91,0xA7,0x93,0x7E,0x88, - 0x8A,0x89,0x86,0x82,0x8D,0x8A,0x76,0x78,0x7E,0x74,0x72,0x75,0x78,0x77,0x71,0x6F, - 0x6C,0x65,0x64,0x5C,0x61,0x7D,0x6D,0x59,0x71,0x6A,0x4E,0x56,0x63,0x62,0x62,0x5F, - 0x66,0x71,0x63,0x5C,0x67,0x65,0x61,0x65,0x6D,0x72,0x6E,0x6D,0x70,0x6B,0x67,0x65, - 0x63,0x7C,0x83,0x69,0x76,0x84,0x6B,0x64,0x76,0x7B,0x7E,0x80,0x88,0x99,0x94,0x8A, - 0x97,0xA2,0x9D,0x9C,0xA3,0xA7,0xA1,0x9D,0x9D,0x9A,0x94,0x94,0x8B,0x95,0xAB,0x94, - 0x8D,0xA1,0x8E,0x78,0x80,0x86,0x85,0x83,0x82,0x8D,0x8D,0x7F,0x7F,0x88,0x85,0x83, - 0x89,0x8E,0x8D,0x88,0x85,0x87,0x83,0x82,0x81,0x86,0xA2,0x9D,0x89,0x98,0x9A,0x84, - 0x80,0x8A,0x90,0x90,0x8A,0x8E,0x98,0x8E,0x84,0x8D,0x8F,0x87,0x85,0x8A,0x8D,0x8A, - 0x84,0x85,0x82,0x7B,0x77,0x71,0x85,0x92,0x78,0x78,0x87,0x73,0x63,0x67,0x6F,0x71, - 0x6A,0x68,0x72,0x6D,0x5D,0x60,0x68,0x66,0x65,0x68,0x6C,0x6C,0x66,0x66,0x68,0x65, - 0x63,0x5F,0x6E,0x84,0x70,0x67,0x7B,0x72,0x60,0x64,0x6C,0x70,0x6C,0x69,0x74,0x77, - 0x6C,0x6B,0x72,0x72,0x71,0x74,0x7C,0x83,0x82,0x81,0x87,0x8B,0x8C,0x88,0x95,0xB4, - 0xAB,0x98,0xA9,0xA7,0x93,0x91,0x97,0x9E,0x9E,0x92,0x93,0x9B,0x8E,0x85,0x8B,0x8C, - 0x89,0x83,0x83,0x89,0x86,0x7E,0x7E,0x83,0x82,0x7A,0x7C,0x97,0x92,0x7D,0x8D,0x91, - 0x7E,0x79,0x80,0x88,0x8B,0x82,0x85,0x92,0x8D,0x83,0x83,0x8B,0x8C,0x88,0x89,0x90, - 0x92,0x8A,0x88,0x89,0x8A,0x85,0x84,0x9E,0xA2,0x87,0x8C,0x94,0x81,0x7A,0x7D,0x83, - 0x89,0x80,0x7A,0x82,0x80,0x73,0x72,0x77,0x77,0x74,0x72,0x72,0x74,0x71,0x69,0x65, - 0x69,0x66,0x60,0x76,0x81,0x68,0x6E,0x76,0x64,0x5F,0x61,0x76,0x74,0x72,0x6C,0x56, - 0x6C,0x68,0x51,0x52,0x63,0x6D,0x70,0x76,0x7B,0x7B,0x73,0x7B,0x88,0x86,0x7D,0x9A, - 0xA9,0x85,0x81,0x7C,0x6E,0x7B,0x6C,0x62,0x7B,0x7D,0x69,0x6A,0x6E,0x69,0x7B,0x85, - 0x89,0x7F,0x7F,0x90,0x90,0x91,0x94,0x98,0xA9,0xAC,0x97,0xB3,0xC7,0xB6,0xC7,0xA4, - 0xA9,0xB5,0x95,0xAF,0xA8,0xA4,0xAD,0x9D,0x94,0x87,0x82,0x8E,0x83,0x75,0x7B,0x68, - 0x70,0x7D,0x6D,0x80,0x7D,0x68,0x71,0x7D,0x84,0x77,0x5C,0x5B,0x61,0x59,0x5A,0x66, - 0x6B,0x65,0x5F,0x6B,0x78,0x75,0x82,0x80,0x8F,0xA0,0x95,0x8D,0x91,0x91,0x8C,0x94, - 0xA1,0xA5,0xAC,0xB2,0xAD,0xA7,0xA1,0xA2,0x91,0x8A,0x87,0x87,0x8D,0x79,0x77,0x75, - 0x6B,0x65,0x63,0x6F,0x6B,0x5E,0x4D,0x40,0x47,0x4F,0x47,0x36,0x3D,0x43,0x42,0x56, - 0x54,0x5A,0x62,0x5B,0x62,0x62,0x66,0x7D,0x87,0x78,0x76,0x74,0x7E,0x89,0x82,0x8A, - 0x8E,0x91,0xA0,0x9A,0xAD,0xBA,0xAC,0xBA,0xBD,0xA8,0xB9,0xB8,0x91,0xA3,0xA1,0x90, - 0xA1,0x92,0x8C,0x94,0x86,0x7F,0x8C,0x88,0x7C,0x75,0x66,0x74,0x73,0x66,0x65,0x66, - 0x74,0x69,0x61,0x59,0x50,0x67,0x6E,0x6B,0x62,0x5A,0x6F,0x74,0x66,0x73,0x72,0x76, - 0x87,0x78,0x85,0x90,0x8E,0x96,0x92,0x9F,0xA9,0xB1,0xB2,0xAB,0xC4,0xC7,0xBD,0xC9, - 0xC0,0xBC,0xC5,0xC2,0xBD,0xB5,0xAE,0x9C,0x8B,0x85,0x80,0x8E,0x7E,0x6F,0x82,0x81, - 0x78,0x63,0x47,0x46,0x54,0x5D,0x5D,0x54,0x4A,0x47,0x48,0x40,0x3C,0x51,0x58,0x4A, - 0x41,0x44,0x4A,0x4E,0x55,0x4E,0x63,0x7B,0x74,0x68,0x58,0x5C,0x6D,0x70,0x79,0x83, - 0x8C,0x9B,0x92,0x7D,0x80,0x8B,0x8B,0x94,0xA5,0xA5,0xA7,0xA9,0xAB,0xB5,0xB8,0xB9, - 0xBE,0xBC,0xC0,0xC3,0xB2,0xA2,0x92,0x95,0xAA,0xB3,0xA6,0x95,0x8B,0x8A,0x84,0x81, - 0x7E,0x78,0x71,0x6C,0x77,0x71,0x69,0x4E,0x4B,0x59,0x56,0x5D,0x53,0x4D,0x59,0x5D, - 0x51,0x42,0x45,0x4D,0x4C,0x58,0x5A,0x4B,0x5A,0x5D,0x57,0x66,0x6A,0x74,0x7D,0x81, - 0x8E,0x9C,0x9E,0x9F,0xA3,0xAC,0xBC,0xB6,0xB8,0xC1,0xCB,0xCD,0xC7,0xC4,0xBB,0xC0, - 0xC5,0xBD,0xAF,0xAC,0xAB,0xA7,0xA3,0x9A,0x9F,0xA1,0x91,0x91,0x95,0x93,0x8A,0x83, - 0x79,0x6B,0x6D,0x69,0x67,0x65,0x5F,0x5D,0x57,0x4F,0x4B,0x58,0x56,0x49,0x48,0x4F, - 0x5B,0x63,0x66,0x58,0x4F,0x56,0x56,0x5E,0x65,0x60,0x63,0x63,0x5E,0x5A,0x61,0x67, - 0x56,0x5B,0x63,0x64,0x6E,0x67,0x68,0x6A,0x6C,0x76,0x78,0x82,0x8B,0x88,0x88,0x86, - 0x8C,0x96,0x96,0xAB,0xBC,0xB9,0xBA,0xBC,0xB3,0xAA,0xAA,0xA1,0xAC,0xBC,0xB8,0xB9, - 0xA8,0x9D,0xA0,0xA7,0xA5,0x8F,0x87,0x91,0x97,0x90,0x86,0x88,0x8A,0x87,0x82,0x7B, - 0x8A,0x83,0x6F,0x6A,0x5E,0x69,0x74,0x71,0x75,0x84,0x83,0x7B,0x7B,0x6C,0x71,0x7C, - 0x74,0x71,0x6F,0x72,0x6F,0x69,0x60,0x5A,0x5E,0x61,0x64,0x72,0x81,0x86,0x75,0x66, - 0x6E,0x71,0x77,0x78,0x7C,0x8D,0x8A,0x84,0x7B,0x76,0x84,0x8D,0x92,0x98,0x92,0x97, - 0x99,0x8E,0x8D,0x85,0x90,0x8D,0x7E,0x97,0x9B,0x9A,0xA0,0x86,0x7E,0x88,0x85,0x8B, - 0x93,0x84,0x7D,0x82,0x76,0x7C,0x83,0x71,0x6E,0x6E,0x6F,0x7F,0x7A,0x71,0x68,0x59, - 0x65,0x63,0x5F,0x75,0x80,0x7C,0x74,0x6F,0x70,0x7A,0x79,0x72,0x7C,0x7F,0x81,0x89, - 0x8B,0x84,0x7C,0x77,0x79,0x7D,0x92,0x9B,0x8D,0x83,0x75,0x82,0x85,0x78,0x76,0x6F, - 0x74,0x78,0x7E,0x77,0x72,0x7D,0x79,0x77,0x85,0x83,0x7D,0x85,0x86,0x90,0x8E,0x89, - 0x93,0x97,0x92,0x8F,0x97,0x96,0x93,0x94,0x92,0x8A,0x84,0x8B,0x88,0x88,0x91,0x8B, - 0x80,0x91,0x90,0x87,0x94,0x90,0x94,0x9C,0x97,0x97,0x93,0x87,0x85,0x8A,0x8F,0x8F, - 0x86,0x7C,0x7E,0x88,0x94,0x8E,0x85,0x8C,0x85,0x7F,0x87,0x7C,0x6E,0x7A,0x7B,0x79, - 0x7B,0x72,0x6D,0x75,0x78,0x75,0x6E,0x6D,0x79,0x7C,0x7B,0x71,0x63,0x67,0x64,0x5E, - 0x5D,0x52,0x57,0x63,0x67,0x66,0x64,0x5C,0x5B,0x6A,0x64,0x65,0x67,0x54,0x55,0x61, - 0x66,0x6D,0x6B,0x6A,0x6D,0x72,0x7F,0x81,0x75,0x73,0x78,0x79,0x7A,0x7C,0x7D,0x80, - 0x87,0x89,0x8F,0x8D,0x8D,0x99,0x95,0x8A,0x86,0x84,0x89,0x9A,0x9F,0x95,0x94,0x92, - 0x8F,0x9C,0xA3,0x9D,0x97,0x92,0x97,0x98,0x8D,0x82,0x80,0x85,0x91,0x94,0x93,0x90, - 0x88,0x97,0x9F,0x97,0x99,0x91,0x8F,0x93,0x94,0x8E,0x86,0x8D,0x91,0x8F,0x93,0x94, - 0x96,0x95,0x8E,0x8A,0x84,0x7B,0x79,0x7D,0x7F,0x7D,0x7E,0x81,0x81,0x85,0x8A,0x87, - 0x84,0x82,0x76,0x77,0x7B,0x79,0x73,0x6C,0x72,0x6F,0x6C,0x6C,0x6B,0x71,0x72,0x6D, - 0x62,0x5E,0x5C,0x62,0x6A,0x5B,0x5C,0x60,0x59,0x61,0x69,0x64,0x66,0x68,0x6C,0x74, - 0x6F,0x6A,0x65,0x64,0x64,0x68,0x69,0x61,0x62,0x6C,0x74,0x74,0x77,0x77,0x75,0x82, - 0x8B,0x82,0x7A,0x82,0x82,0x86,0x92,0x91,0x93,0x94,0x99,0x97,0x8D,0x8C,0x87,0x8C, - 0x8D,0x89,0x91,0x87,0x83,0x91,0x98,0x9C,0x9B,0x95,0x95,0x9B,0x9F,0x9A,0x96,0x96, - 0x98,0xA1,0x9F,0x9B,0x99,0x9C,0xA1,0x9D,0x98,0x92,0x95,0x96,0x97,0x93,0x8A,0x90, - 0x92,0x92,0x92,0x94,0x91,0x8E,0x8D,0x8A,0x96,0x95,0x92,0x90,0x88,0x8A,0x8E,0x8A, - 0x89,0x8B,0x89,0x83,0x82,0x83,0x80,0x81,0x82,0x7C,0x7D,0x81,0x82,0x7C,0x73,0x75, - 0x72,0x72,0x75,0x72,0x6D,0x6B,0x78,0x71,0x6B,0x76,0x6C,0x6B,0x6B,0x66,0x66,0x5C, - 0x5D,0x5A,0x56,0x5C,0x59,0x57,0x54,0x5A,0x5C,0x5C,0x60,0x5C,0x64,0x69,0x68,0x69, - 0x64,0x62,0x70,0x75,0x6F,0x6F,0x65,0x67,0x73,0x76,0x77,0x73,0x6C,0x6F,0x74,0x73, - 0x71,0x6D,0x69,0x6E,0x78,0x7D,0x80,0x83,0x85,0x8C,0x91,0x8D,0x8F,0x8F,0x8E,0x98, - 0x9A,0x95,0x94,0x8F,0x93,0x9A,0x96,0x97,0x98,0x8F,0x93,0x9D,0x97,0x92,0x95,0x96, - 0x98,0xA2,0xA0,0x98,0x9C,0x9E,0xA4,0xA8,0xA1,0x9B,0x98,0x9C,0xA8,0xA6,0x9E,0x98, - 0x90,0x93,0x9A,0x98,0x95,0x91,0x8A,0x91,0x90,0x8F,0x93,0x8D,0x93,0x98,0x99,0x9B, - 0x97,0x90,0x8E,0x8E,0x8A,0x88,0x81,0x7D,0x8B,0x94,0x96,0x93,0x86,0x7D,0x7C,0x7E, - 0x78,0x6F,0x68,0x5D,0x68,0x6F,0x6C,0x72,0x6F,0x71,0x79,0x7B,0x73,0x6C,0x6D,0x6E, - 0x6F,0x6A,0x68,0x64,0x66,0x74,0x7B,0x7E,0x7D,0x6B,0x65,0x68,0x64,0x62,0x5A,0x50, - 0x54,0x60,0x6A,0x6C,0x69,0x68,0x65,0x68,0x64,0x64,0x65,0x64,0x63,0x5F,0x65,0x61, - 0x64,0x75,0x7D,0x80,0x81,0x7B,0x72,0x73,0x6F,0x6B,0x6E,0x6B,0x6E,0x7C,0x81,0x86, - 0x88,0x83,0x89,0x8A,0x89,0x92,0x8E,0x8C,0x90,0x87,0x8B,0x8C,0x83,0x91,0x9B,0x99, - 0x9B,0x94,0x86,0x89,0x89,0x87,0x8D,0x87,0x87,0x93,0x92,0x94,0x9A,0x97,0x9F,0x9E, - 0x9A,0x9C,0x97,0x95,0x93,0x8B,0x8F,0x92,0x8D,0x94,0xA1,0xA6,0xA5,0xA1,0x92,0x8F, - 0x91,0x88,0x87,0x83,0x7C,0x85,0x86,0x84,0x8B,0x84,0x8D,0x93,0x8C,0x88,0x82,0x81, - 0x83,0x82,0x84,0x8A,0x81,0x7B,0x89,0x8F,0x93,0x93,0x81,0x7D,0x87,0x7D,0x79,0x72, - 0x68,0x73,0x7C,0x78,0x7C,0x79,0x7B,0x8A,0x85,0x7F,0x7D,0x75,0x74,0x77,0x72,0x73, - 0x73,0x66,0x6B,0x7C,0x7E,0x82,0x7A,0x6A,0x74,0x73,0x6B,0x68,0x5C,0x61,0x70,0x75, - 0x73,0x70,0x6E,0x79,0x80,0x7C,0x78,0x74,0x74,0x7A,0x7D,0x7D,0x7F,0x7A,0x72,0x7A, - 0x86,0x88,0x8B,0x82,0x76,0x7A,0x7B,0x74,0x6C,0x66,0x6E,0x78,0x79,0x73,0x72,0x76, - 0x81,0x86,0x81,0x7B,0x75,0x7B,0x80,0x79,0x7A,0x7A,0x7D,0x7A,0x74,0x80,0x84,0x87, - 0x83,0x79,0x7B,0x80,0x7C,0x7B,0x79,0x78,0x7F,0x7F,0x7A,0x7B,0x80,0x81,0x86,0x86, - 0x81,0x81,0x84,0x84,0x85,0x7F,0x81,0x85,0x82,0x7F,0x79,0x81,0x85,0x88,0x87,0x81, - 0x83,0x84,0x80,0x7D,0x79,0x7C,0x7F,0x81,0x85,0x84,0x84,0x8A,0x8B,0x89,0x8B,0x8A, - 0x89,0x8A,0x89,0x8B,0x88,0x85,0x85,0x82,0x84,0x86,0x85,0x83,0x85,0x83,0x84,0x82, - 0x7D,0x7D,0x7D,0x7D,0x7A,0x7D,0x80,0x80,0x85,0x84,0x83,0x84,0x82,0x88,0x8A,0x88, - 0x8A,0x86,0x84,0x89,0x85,0x81,0x83,0x82,0x83,0x86,0x83,0x81,0x7F,0x80,0x7F,0x7D, - 0x81,0x7E,0x7D,0x7E,0x7C,0x80,0x84,0x81,0x80,0x83,0x84,0x86,0x82,0x82,0x83,0x81, - 0x84,0x82,0x7F,0x7F,0x82,0x83,0x80,0x80,0x81,0x81,0x81,0x80,0x7F,0x81,0x81,0x7F, - 0x7F,0x80,0x7A,0x7B,0x7C,0x7B,0x80,0x7E,0x7E,0x7F,0x7E,0x80,0x82,0x83,0x80,0x7E, - 0x83,0x84,0x82,0x81,0x80,0x80,0x81,0x82,0x81,0x80,0x82,0x80,0x81,0x81,0x7C,0x80, - 0x82,0x81,0x80,0x7F,0x82,0x81,0x80,0x7E,0x80,0x7F,0x7D,0x7D,0x7F,0x80,0x7E,0x7D, - 0x7D,0x7D,0x7D,0x7F,0x7C,0x7B,0x7E,0x7E,0x7F,0x7C,0x7B,0x7D,0x7D,0x7E,0x7D,0x7F, - 0x7F,0x7F,0x80,0x7F,0x81,0x80,0x81,0x81,0x7F,0x80,0x81,0x81,0x7F,0x7E,0x80,0x7E, - 0x7D,0x7E,0x7F,0x81,0x80,0x80,0x7F,0x7F,0x81,0x82,0x83,0x80,0x81,0x81,0x81,0x82, - 0x80,0x7F,0x81,0x82,0x80,0x81,0x81,0x80,0x7F,0x81,0x83,0x81,0x81,0x82,0x82,0x7F, - 0x7D,0x80,0x80,0x80,0x82,0x82,0x7E,0x80,0x81,0x7E,0x7F,0x80,0x7E,0x7D,0x7F,0x7C, - 0x7C,0x7C,0x7B,0x7C,0x7C,0x7F,0x7E,0x7C,0x7C,0x7E,0x7F,0x7E,0x7F,0x7F,0x7F,0x81, - 0x82,0x85,0x85,0x83,0x85,0x85,0x85,0x84,0x83,0x85,0x85,0x82,0x82,0x81,0x80,0x81, - 0x81,0x81,0x80,0x81,0x82,0x7F,0x7F,0x80,0x81,0x7F,0x80,0x84,0x7F,0x7F,0x81,0x80, - 0x81,0x82,0x83,0x82,0x81,0x81,0x82,0x82,0x82,0x82,0x80,0x81,0x83,0x82,0x82,0x84, - 0x83,0x83,0x83,0x83,0x84,0x80,0x80,0x81,0x83,0x82,0x82,0x84,0x82,0x7F,0x7F,0x82, - 0x81,0x81,0x80,0x7D,0x80,0x7C,0x80,0x81,0x7E,0x7F,0x7E,0x81,0x81,0x82,0x7F,0x7E, - 0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x81,0x81,0x81,0x80,0x80,0x80,0x7F,0x80,0x80, - 0x7D,0x7F,0x80,0x7F,0x7E,0x7D,0x7F,0x7F,0x81,0x80,0x7D,0x7F,0x7E,0x7F,0x80,0x80, - 0x80,0x80,0x80,0x82,0x81,0x80,0x82,0x82,0x82,0x84,0x82,0x81,0x81,0x7F,0x82,0x83, - 0x83,0x82,0x80,0x81,0x80,0x80,0x81,0x80,0x81,0x81,0x80,0x81,0x80,0x7F,0x7F,0x7F, - 0x80,0x81,0x80,0x80,0x80,0x80,0x7F,0x7F,0x81,0x7D,0x7E,0x81,0x7F,0x7F,0x81,0x80, - 0x80,0x7F,0x81,0x7F,0x7F,0x82,0x7E,0x80,0x7F,0x7E,0x80,0x7D,0x7F,0x7E,0x7F,0x82, - 0x80,0x7F,0x7E,0x7C,0x80,0x80,0x7E,0x81,0x7E,0x80,0x80,0x7D,0x7F,0x7E,0x80,0x80, - 0x81,0x81,0x7D,0x80,0x7F,0x80,0x82,0x80,0x81,0x80,0x81,0x82,0x81,0x80,0x81,0x82, - 0x83,0x80,0x81,0x81,0x80,0x81,0x81,0x82,0x7F,0x80,0x7F,0x7F,0x81,0x7F,0x7E,0x80, - 0x80,0x7E,0x7D,0x7E,0x7C,0x7E,0x7F,0x80,0x80,0x7B,0x7E,0x7F, -}; diff --git a/boop/trunk/betty.cfg b/boop/trunk/betty.cfg deleted file mode 100644 index 77e37d7..0000000 --- a/boop/trunk/betty.cfg +++ /dev/null @@ -1,110 +0,0 @@ -# OpenOCD config file for Betty remote control -# http://bettyhacks.com/forum/index.php?topic=160.0 - -if { [info exists CHIPNAME] } { - set _CHIPNAME $CHIPNAME -} else { - set _CHIPNAME lpc2220 -} - -if { [info exists ENDIAN] } { - set _ENDIAN $ENDIAN -} else { - set _ENDIAN little -} - -if { [info exists CPUTAPID ] } { - set _CPUTAPID $CPUTAPID -} else { - set _CPUTAPID 0x4f1f0f0f -} - -#coonfigure reset options -jtag_nsrst_delay 50 -jtag_ntrst_delay 50 - -#use combined on interfaces or targets that can't set TRST/SRST separately -reset_config trst_and_srst srst_pulls_trst trst_push_pull srst_push_pull - -jtag_khz 1000 - -#jtag scan chain -jtag newtap $_CHIPNAME cpu -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_CPUTAPID - -set _TARGETNAME $_CHIPNAME.cpu -target create $_TARGETNAME arm7tdmi -endian $_ENDIAN -chain-position $_TARGETNAME -variant arm7tdmi - -# Event handlers -$_TARGETNAME configure -event reset-start {jtag_khz 1000} -$_TARGETNAME configure -event reset-init {betty_init} - -arm7_9 dcc_downloads enable - -$_TARGETNAME configure -work-area-phys 0x40000000 -work-area-size 0x10000 -work-area-backup 0 - -#flash bank [ ] -set _FLASHNAME $_CHIPNAME.flash -flash bank $_FLASHNAME cfi 0x80000000 0x00100000 2 2 $_TARGETNAME -flash bank $_FLASHNAME cfi 0x82000000 0x00100000 2 2 $_TARGETNAME - -arm7_9 fast_memory_access enable - -proc betty_init { } { - # setup PLL - # PLLCON: Enable PLL, connect PLL - mww 0xe01fc080 0x03 - # VBPDIV: no division - mww 0xe01fc100 0x02 - # PLLCFG: 0x42 = psel = 10 (4) = msel= 00010 (3) = 240 mhz Fcco*/ - mww 0xe01fc084 0x42 - # Activate PLL settings - #mww 0xe01fc08c 0xaa - #mww 0xe01fc08c 0x55 - #sleep 100 - - # Memory Bank Configuration - # BCFG0: 16bit, rble, 2wst - 30 mhz : Betty: FLASH 0 @ 0x80000000 - mww 0xffe00000 0x10000420 - # BCFG2: 16bit, rble, 2wst - 30 mhz : Betty: FLASH 1 @ 0x82000000 - mww 0xffe00008 0x10000420 - - # BCFG1: 8 bit, 3 sram wst, rble, 5 wst 3 idcy : Betty: LCD @ 0x81000000 - #mww 0xffe00004 0x00000400 - - # GPIO Pin COnfiguration for Flash access - # PINSEL0: - mww 0xe002c000 0x00008005 - # PINSEL1: - mww 0xe002c004 0x00000000 - # PINSEL2: - mww 0xe002c014 0x0de049d4 - - # IO2SET: Set Outputs - mww 0xe0028024 0x1FC0000 - # IO2DIR: Set Direction - mww 0xe0028028 0x1FC0000 - - # IO0DIR: - mww 0xe0028008 0x002018D0 - - # disable watchdog - #mww 0xfffffd44 0x00008000 - # enable user reset - #mww 0xfffffd08 0xa5000001 -} - -proc flash_boop {IMAGE} { - reset init - flash erase_sector 0 0 last - flash write_bank 0 $IMAGE 0 - reset run -} - -proc start_debug {} { - reset halt - mwb 0xE000C01C 0x01 - resume -} - -# For more information about the configuration files, take a look at: -# openocd.texi diff --git a/boop/trunk/boop_rom.bin b/boop/trunk/boop_rom.bin deleted file mode 100644 index 07d71ad..0000000 Binary files a/boop/trunk/boop_rom.bin and /dev/null differ diff --git a/boop/trunk/buffer.c b/boop/trunk/buffer.c deleted file mode 100644 index 9d13bb2..0000000 --- a/boop/trunk/buffer.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - buffer.c - functions for buffers - Copyright (C) 2008 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "buffer.h" -#include "global.h" -#include "irq.h" - -void cBufferInit(struct cBuffer_ *buffer, unsigned char *start, unsigned short size) { - - unsigned cpsr; - cpsr = disableIRQ(); - - buffer->data = start; - buffer->size = size; - buffer->len = 0; - buffer->index = 0; - - restoreIRQ(cpsr); -} - -void cBufferFlush(struct cBuffer_ *buffer) { - - unsigned cpsr; - cpsr = disableIRQ(); - - buffer->len = 0; - buffer->index = 0; - - restoreIRQ(cpsr); -} - -unsigned char cBufferAdd(struct cBuffer_ *buffer, unsigned char data) { - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->size > buffer->len) { - buffer->data[(buffer->index + buffer->len++) % buffer->size] = data; - restoreIRQ(cpsr); - return 1; - } - restoreIRQ(cpsr); - return 0; - -} - -unsigned short cBufferAddBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len) { - - unsigned short lenw; - unsigned short start; - unsigned short end; - - unsigned cpsr; - cpsr = disableIRQ(); - - lenw = 0; - - if(buffer->size > buffer->len) { - start = (buffer->index + buffer->len) % buffer->size; - if(buffer->index) - end = buffer->index; - else - end = buffer->size; - - if(end <= start) { - if(buffer->size - start < len) { - lenw = buffer->size - start; - memcpy(&buffer->data[start],data,lenw); - } - else { - memcpy(&buffer->data[start],data,len); - buffer->len += len; - restoreIRQ(cpsr); - return len; - } - start = 0; - } - - if(end - start < len - lenw) { - memcpy(&buffer->data[start],&data[lenw],end - start); - buffer->len = buffer->size; - restoreIRQ(cpsr); - return lenw + end - start; - } - else { - memcpy(&buffer->data[start],&data[lenw],len-lenw); - buffer->len += len; - restoreIRQ(cpsr); - return len; - } - } - restoreIRQ(cpsr); - return 0; - -} - -unsigned char cBufferGet(struct cBuffer_ *buffer) { - - unsigned char data = 0; - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->len) { - data = buffer->data[buffer->index++]; - buffer->index %= buffer->size; - buffer->len--; - } - restoreIRQ(cpsr); - return data; -} - -unsigned short cBufferGetBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len) { - - unsigned cpsr; - cpsr = disableIRQ(); - - if(buffer->len) { - if(len > buffer->len) - len = buffer->len; - - if(buffer->index + len <= buffer->size) { - memcpy(data,&buffer->data[buffer->index],len); - } - else { - memcpy(data,&buffer->data[buffer->index],buffer->size - buffer->index); - memcpy(&data[buffer->size - buffer->index],buffer->data,len - (buffer->size - buffer->index)); - } - buffer->index = (buffer->index + len) % buffer->size; - buffer->len -= len; - restoreIRQ(cpsr); - return len; - - } - restoreIRQ(cpsr); - return 0; - -} diff --git a/boop/trunk/buffer.h b/boop/trunk/buffer.h deleted file mode 100644 index da19c07..0000000 --- a/boop/trunk/buffer.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - buffer.h - functions for buffers - Copyright (C) 2008 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef BUFFER_H -#define BUFFER_H - -struct cBuffer_ { - unsigned char* data; - unsigned short size; - unsigned short len; - unsigned short index; -}; - -void cBufferInit(struct cBuffer_ *buffer, unsigned char *start, unsigned short size); -void cBufferFlush(struct cBuffer_ *buffer); -unsigned char cBufferAdd(struct cBuffer_ *buffer, unsigned char data); -unsigned short cBufferAddBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len); -unsigned char cBufferGet(struct cBuffer_ *buffer); -unsigned short cBufferGetBuffer(struct cBuffer_ *buffer, unsigned char* data, unsigned short len); -#endif diff --git a/boop/trunk/cc1100/Make.conf b/boop/trunk/cc1100/Make.conf deleted file mode 100644 index 290d282..0000000 --- a/boop/trunk/cc1100/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := cc1100.c rf.c fs20.c diff --git a/boop/trunk/cc1100/cc1100.c b/boop/trunk/cc1100/cc1100.c deleted file mode 100644 index 4495d30..0000000 --- a/boop/trunk/cc1100/cc1100.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - cc1100.c - - Copyright (C) 2007 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// CC1100 - http://focus.ti.com/docs/prod/folders/print/cc1100.html -// 27 MHz crystal -// http://en.wikipedia.org/wiki/ISM_band http://de.wikipedia.org/wiki/ISM-Band -// http://de.wikipedia.org/wiki/Short_Range_Devices http://en.wikipedia.org/wiki/Low-power_communication_device -// 433,05 MHz ... 434,79 MHz - -#include "lpc2220.h" -#include "cc1100.h" -#include "irq.h" - -//setting 6_WOR -const unsigned char conf[0x2F] = { - 0x29, // IOCFG2 - 0x2E, // IOCFG1 - 0x06, // IOCFG0 - 0x47, // FIFOTHR - 0xD3, // SYNC1 - 0x91, // SYNC0 - 0x3E, // PKTLEN - 0x1A, // PKTCTRL1 - 0x45, // PKTCTRL0 - 0x01, // ADDR - 0x01, // CHANNR - 0x06, // FSCTRL1 - 0x00, // FSCTRL0 - 0x10, // FREQ2 # - 0x0B, // FREQ1 # - 0xDA, // FREQ0 # -> 433,249969 MHz - 0x8A, // MDMCFG4 - 0x75, // MDMCFG3 - 0x13, // MDMCFG2 - 0x22, // MDMCFG1 - 0xC1, // MDMCFG0 CHANSPC_M - 0x35, // DEVIATN - 0x04, // MCSM2 - 0x0C, // MCSM1 0c - 0x38, // MCSM0 - 0x16, // FOCCFG - 0x6C, // BSCFG - 0x43, // AGCCTRL2 - 0x40, // AGCCTRL1 - 0x91, // AGCCTRL0 - 0x46, // WOREVT1 - 0x50, // WOREVT0 - 0x78, // WORCTRL - 0x56, // FREND1 - 0x10, // FREND0 - 0xA9, // FSCAL3 - 0x0A, // FSCAL2 - 0x00, // FSCAL1 - 0x11, // FSCAL0 - 0x41, // RCCTRL1 - 0x00, // RCCTRL0 - 0x57, // FSTEST - 0x7F, // PTEST - 0x3F, // AGCTEST - 0x98, // TEST2 - 0x31, // TEST1 - 0x0B // TEST0 -}; - -const unsigned char confasync[0x2F] = { - 0x0D, // IOCFG2 - 0x0D, // IOCFG1 - 0x2E, // IOCFG0 - 0x47, // FIFOTHR - 0xD3, // SYNC1 - 0x91, // SYNC0 - 0x3E, // PKTLEN - 0x1A, // PKTCTRL1 - 0x32, // PKTCTRL0 | asynchronous serial mode - 0x00, // ADDR - 0x00, // CHANNR channel number - 0x06, // FSCTRL1 - 0x00, // FSCTRL0 - 0x10, // FREQ2 # - 0x12, // FREQ1 # - 0x34, // FREQ0 # *27e6/2^16 = 433,919861 MHz base frequency - 0x4A, // MDMCFG4 | channel bandwidth - 0x84, // MDMCFG3 - 0x30, // MDMCFG2 - // 0x00, // MDMCFG2 // 2-FSK - 0x20, // MDMCFG1 - 0xe5, // MDMCFG0 CHANSPC_M Chann 49,95kHz | DRATE_E[3:0] - 0x37, // DEVIATN - 0x07, // MCSM2 - 0x30, // MCSM1 0c - 0x18, // MCSM0 - 0x14, // FOCCFG - 0x6C, // BSCFG - 0x07, // AGCCTRL2 - 0x00, // AGCCTRL1 - 0x90, // AGCCTRL0 - 0x46, // WOREVT1 - 0x50, // WOREVT0 - 0x78, // WORCTRL - 0x56, // FREND1 - 0x11, // FREND0 - 0xE9, // FSCAL3 - 0x2A, // FSCAL2 - 0x00, // FSCAL1 - 0x1F, // FSCAL0 - 0x41, // RCCTRL1 - 0x00, // RCCTRL0 - 0x59, // FSTEST - 0x7F, // PTEST - 0x3F, // AGCTEST - 0x81, // TEST2 - 0x35, // TEST1 - 0x09 // TEST0 -}; - -void cc1100_init(void) { - - unsigned long xx = 0x200; - - PINSEL1 &= 0xffffff00; //GDO0 SCK1 MISO1 MOSI1 as GPIO - FIODIR0 |= (CS1 | MOSI1 | SCK1); //output - - PCONP &= 0xfffffbff; - PCONP |= (1<<21); - FIOSET0 = SCK1; - FIOCLR0 = MOSI1; - FIOCLR0 = CS1; - while(xx) { - asm volatile("nop" : :); - xx--; - } - FIOSET0 = CS1; - xx=0x200; - while(xx) { - asm volatile("nop" : :); - xx--; - } - FIOCLR0 = CS1; - FIOCLR0 = SCK1; - while (FIOPIN0 & MISO1); - - PINSEL1 |= 0x000002A8; //SCK1 MISO1 MOSI1 as SPI1 - SSPCR0 = 0x0007; - SSPCPSR = 0x02; - SSPCR1 = 0x02; - - SSPDR = SRES; - while (FIOPIN0 & MISO1); - while (SSPSR & (1<<4)); - xx = SSPDR; - - cc1100_write((0x00 | BURST ),(unsigned char*)conf,0x2f); - cc1100_write1(PATABLE,0xC0); - cc1100_strobe(SIDLE); - cc1100_strobe(SPWD); -} - -// write length bytes of data to addr in CC1100 -unsigned char cc1100_write(unsigned char addr,unsigned char* data, unsigned char length) { - - unsigned short i; - unsigned char status; - unsigned char x; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | WRITE); - while ((SSPSR & (1<<4))); - status = SSPDR; - for (i=0; i < length; i++) { - SSPDR = data[i]; - while ((SSPSR & (1<<4))); - x=SSPDR; - } - FIOSET0 = CS1; - - return(status); -} - -// write on byte of data to addr in CC1100 -// a few instructions faster than cc1100_write(addr, data, 1) -unsigned char cc1100_write1(unsigned char addr,unsigned char data) { - - unsigned char status; - unsigned char x; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | WRITE); - while ((SSPSR & (1<<4))); - status = SSPDR; - - SSPDR = data; - while ((SSPSR & (1<<4))); - x=SSPDR; - - FIOSET0 = CS1; - - return(status); -} - - -unsigned char cc1100_read(unsigned char addr, unsigned char* data, unsigned char length) { - - unsigned short i; - unsigned char status; - - FIOCLR0 = CS1; - - while (FIOPIN0 & MISO1); - SSPDR = (addr | READ); - while ((SSPSR & (1<<4))); - status = SSPDR; - for (i=0; i < length; i++) { - SSPDR = 0x00; - while ((SSPSR & (1<<4))); - data[i]=SSPDR; - } - FIOSET0 = CS1; - - return(status); -} - -unsigned char cc1100_read1(unsigned char addr) { - - unsigned char r; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = (addr | READ); - while ((SSPSR & (1<<4))); - r = SSPDR; - SSPDR = 0x00; - while ((SSPSR & (1<<4))); - r=SSPDR; - FIOSET0 = CS1; - - return(r); -} - -unsigned char cc1100_strobe(unsigned char cmd) { - - unsigned short status; - - FIOCLR0 = CS1; - while (FIOPIN0 & MISO1); - SSPDR = cmd; - while ((SSPSR & (1<<4))); - status = SSPDR; - FIOSET0 = CS1; - - return(status); -} -/* -// check that PLL has locked -unsigned char cc1100_pll_lock(void) -{ - //~ To check that the PLL is in lock the user can - //~ program register IOCFGx.GDOx_CFG to 0x0A - //~ and use the lock detector output available on - //~ the GDOx pin as an interrupt for the MCU (x = - //~ 0,1, or 2). A positive transition on the GDOx - //~ pin means that the PLL is in lock. As an - //~ alternative the user can read register FSCAL1. - //~ The PLL is in lock if the register content is - //~ different from 0x3F. Refer also to the CC1100 - //~ Errata Notes [1]. For more robust operation the - //~ source code could include a check so that the - //~ PLL is re-calibrated until PLL lock is achieved - //~ if the PLL does not lock the first time. -} -*/ -/* -// get carrier frequency -unsigned char cc1100_carrier(void) -{ - //~ f_carrier = fxosc/(2**16) * (FREQ + CHAN * (256+CHANSPC_M) * 2**(CHANSPC_E - 2)) -} - -// set intermediate frequency -unsigned char cc1100_if(void) -{ - //~ FSCTRL1.FREQ_IF - //~ f_ = fxosc/(2**10) * FREQ_IF -} - - -// set channel spacing -unsigned char cc1100_chspc(void) -{ - //~ MDMCFG0.CHANSPC_M - //~ MDMCFG1.CHANSPC_E r -} - -// set channel -unsigned char cc1100_channel(void) -{ - //~ CHANNR.CHAN -} - -// set frequency -unsigned char cc1100_frequency(void) -{ - //~ FREQ2, FREQ1, FREQ0 - //~ This word will typically be set to the centre of the lowest channel frequency that is to be used. -} - -// set modulation -unsigned char cc1100_modulation(void) -{ - //~ MDMCFG2.MOD_FORMAT - //~ MDMCFG2.MANCHESTER_EN. -} -*/ diff --git a/boop/trunk/cc1100/cc1100.h b/boop/trunk/cc1100/cc1100.h deleted file mode 100644 index 3e0b3c7..0000000 --- a/boop/trunk/cc1100/cc1100.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - cc1100.h - - Copyright (C) 2007 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef cc1100_H -#define cc1100_H - -#define MISO1 (1<<18) -#define MOSI1 (1<<19) -#define SCK1 (1<<17) -#define CS1 (1<<23) -#define GDO0 (1<<16) -#define GDO1 (1<<18) -#define GDO2 (1<<24) - - -#define WRITE 0x00 -#define BURST 0x40 -#define READ 0x80 -#define TX_fifo 0x7F -#define RX_fifo 0xff -#define PATABLE 0x3E - -//Command Strobes -#define SRES 0x30 -#define SFSTXON 0x31 -#define SXOFF 0x32 -#define SCAL 0x33 -#define SRX 0x34 -#define STX 0x35 -#define SIDLE 0x36 -#define SWOR 0x38 -#define SPWD 0x39 -#define SFRX 0x3A -#define SFTX 0x3B -#define SWORRST 0x3C -#define SNOP 0x3D - -//Status Registers -#define PARTNUM (0x30 | READ | BURST) -#define VERSION (0x31 | READ | BURST) -#define FREQEST (0x32 | READ | BURST) -#define LQI (0x33 | READ | BURST) -#define RSSI (0x34 | READ | BURST) -#define MARCSTATE (0x35 | READ | BURST) -#define WORTIME1 (0x36 | READ | BURST) -#define WORTIME0 (0x37 | READ | BURST) -#define PKTSTATUS (0x38 | READ | BURST) -#define VCO_VC_DAC (0x39 | READ | BURST) -#define TXBYTES (0x3A | READ | BURST) -#define RXBYTES (0x3B | READ | BURST) -#define RCCTRL1_STATUS (0x3C | READ | BURST) -#define RCCTRL0_STATUS (0x3D | READ | BURST) - -//Configuration Registers -#define IOCFG2 0x00 // GDO2 output pin configuration -#define IOCFG1 0x01 // GDO1 output pin configuration -#define IOCFG0 0x02 // GDO0 output pin configuration -#define FIFOTHR 0x03 // RX FIFO and TX FIFO thresholds -#define SYNC1 0x04 // Sync word, high byte -#define SYNC0 0x05 // Sync word, low byte -#define PKTLEN 0x06 // Packet length -#define PKTCTRL1 0x07 // Packet automation control -#define PKTCTRL0 0x08 // Packet automation control -#define ADDR_ 0x09 // Device address -#define CHANNR 0x0A // Channel number -#define FSCTRL1 0x0B // Frequency synthesizer control -#define FSCTRL0 0x0C // Frequency synthesizer control -#define FREQ2 0x0D // Frequency control word, high byte -#define FREQ1 0x0E // Frequency control word, middle byte -#define FREQ0 0x0F // Frequency control word, low byte -#define MDMCFG4 0x10 // Modem configuration -#define MDMCFG3 0x11 // Modem configuration -#define MDMCFG2 0x12 // Modem configuration -#define MDMCFG1 0x13 // Modem configuration -#define MDMCFG0 0x14 // Modem configuration -#define DEVIATN 0x15 // Modem deviation setting -#define MCSM2 0x16 // Main Radio Cntrl State Machine config -#define MCSM1 0x17 // Main Radio Cntrl State Machine config -#define MCSM0 0x18 // Main Radio Cntrl State Machine config -#define FOCCFG 0x19 // Frequency Offset Compensation config -#define BSCFG 0x1A // Bit Synchronization configuration -#define AGCCTRL2 0x1B // AGC control -#define AGCCTRL1 0x1C // AGC control -#define AGCCTRL0 0x1D // AGC control -#define WOREVT1 0x1E // High byte Event 0 timeout -#define WOREVT0 0x1F // Low byte Event 0 timeout -#define WORCTRL 0x20 // Wake On Radio control -#define FREND1 0x21 // Front end RX configuration -#define FREND0 0x22 // Front end TX configuration -#define FSCAL3 0x23 // Frequency synthesizer calibration -#define FSCAL2 0x24 // Frequency synthesizer calibration -#define FSCAL1 0x25 // Frequency synthesizer calibration -#define FSCAL0 0x26 // Frequency synthesizer calibration -#define RCCTRL1 0x27 // RC oscillator configuration -#define RCCTRL0 0x28 // RC oscillator configuration -#define FSTEST 0x29 // Frequency synthesizer cal control -#define PTEST 0x2A // Production test -#define AGCTEST 0x2B // AGC test -#define TEST2 0x2C // Various test settings -#define TEST1 0x2D // Various test settings -#define TEST0 0x2E // Various test settings - -#define MARCSTATE_IDLE 0x01 -#define MARCSTATE_RX 0x0d - -const unsigned char conf[0x2F] __attribute__((aligned(0x4))); -const unsigned char confasync[0x2F] __attribute__((aligned(0x4))); - -void cc1100_init(void); -unsigned char cc1100_write(unsigned char addr, unsigned char* data, unsigned char length); -unsigned char cc1100_write1(unsigned char addr,unsigned char data); -unsigned char cc1100_read(unsigned char addr, unsigned char* data, unsigned char length); -unsigned char cc1100_read1(unsigned char addr); -unsigned char cc1100_strobe(unsigned char cmd); - -#endif diff --git a/boop/trunk/cc1100/fs20.c b/boop/trunk/cc1100/fs20.c deleted file mode 100644 index f029998..0000000 --- a/boop/trunk/cc1100/fs20.c +++ /dev/null @@ -1,343 +0,0 @@ -/* - fs20.c - FS20 functions - Copyright (C) 2009 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "fs20.h" -#include "rf.h" -#include "cc1100.h" -#include "fonty.h" -#include "rtc.h" -#include "global.h" -#include "lcd.h" -#include "keyboard.h" -#include "serial.h" -#include "timerfuncs.h" - -#define FS20_BETWEEN(x, a, b) ((x >= a) && (x <= b)) - -extern const char hval[16]; - -#define PROTOCOL_UNKNOWN 0 -#define PROTOCOL_FS20 1 -#define PROTOCOL_WEATHER 2 -#define PROTOCOL_WEATHER2 3 - -void fs20_decoder(void) { - - unsigned char x; - unsigned char FS20laststate = 0; - unsigned char FS20preamble = 0; - unsigned char FS20parity = 0; - unsigned char FS20state = 0; - unsigned long FS20lasttime = 0; - unsigned char FS20bitcounter = 0; - unsigned char FS20bytecounter = 0; - unsigned char FS20inbyte[20]; - unsigned char FS20inbit = 0; - unsigned char FS20protocol = PROTOCOL_UNKNOWN; - unsigned short tempbyte = 0; - unsigned char finish = 0; - - unsigned long pulse = 0; - unsigned long space = 0; - unsigned long now; - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0, 0, "FS20 Decoder", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,128,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RFasyncmode(true); - - cc1100_write1(FREQ2,0x20); - cc1100_write1(FREQ1,0x29); - cc1100_write1(FREQ0,0x3E); - - cc1100_write1(AGCCTRL2,0x07); - cc1100_write1(AGCCTRL1,0x00); - cc1100_write1(AGCCTRL0,0x91); - - cc1100_strobe(SFRX); - cc1100_strobe(SRX); - - serial_puts("\n\r"); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - - //internal receiver - if(FIOPIN0 & GDO2) - FS20state = 1; - else - FS20state = 0; - - /* - //external rexeiver on pin 0.14 - if(FIOPIN0 & (1<<14)) - FS20state = 1; - else - FS20state = 0; -*/ - - if(FS20state != FS20laststate) { - FS20laststate = FS20state; - - //Calculate pulse len - if(!FS20state) { - now = T0TC; - if(now > FS20lasttime) - pulse = now-FS20lasttime; - else - pulse = (now+5000)-FS20lasttime; - FS20lasttime = now; - } - //Calculate space len - else { - now = T0TC; - if(now > FS20lasttime) - space = now-FS20lasttime; - else - space = (now+5000)-FS20lasttime; - FS20lasttime = now; - } - - //Decode - if(FS20state || (FS20protocol == PROTOCOL_WEATHER2)) { - if(FS20protocol == PROTOCOL_UNKNOWN) { - if((FS20_BETWEEN(pulse, 350, 450) && FS20_BETWEEN(space, 350, 450)) || (FS20_BETWEEN(pulse, 550, 650) && FS20_BETWEEN(space, 550, 650))) { - FS20protocol = PROTOCOL_FS20; //FS20, FHT - FS20inbyte[0] = 'F'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_FS20; - FS20parity = 0; - tempbyte = 0; - } - else if((FS20_BETWEEN(pulse, 200, 533) && FS20_BETWEEN(space, 685, 1020)) || (FS20_BETWEEN(pulse, 685, 1020) && FS20_BETWEEN(space, 200, 533))) { - FS20protocol = PROTOCOL_WEATHER; //KS200, KS300, S2XXX - FS20inbyte[0] = 'W'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_WEATHER; - tempbyte = 0; - } - else if(FS20_BETWEEN(pulse, 200, 300) && FS20_BETWEEN(space, 200, 300)) { - FS20protocol = PROTOCOL_WEATHER2; //ASH500 - FS20inbyte[0] = 'S'; - FS20bytecounter = 1; - FS20bitcounter = 0; - FS20preamble = PREAMBLELEN_WEATHER2; - tempbyte = 0; - } - } - - if(FS20protocol == PROTOCOL_FS20) { - if(FS20_BETWEEN(pulse, 350, 450) && FS20_BETWEEN(space, 350, 450)) - FS20inbit = 0; - else if(FS20_BETWEEN(pulse, 550, 650) && FS20_BETWEEN(space, 550, 650)) - FS20inbit = 1; - else - FS20protocol = PROTOCOL_UNKNOWN; - - if(FS20protocol != PROTOCOL_UNKNOWN) { - if(FS20preamble) { - if((FS20preamble > 1) && FS20inbit) - FS20preamble = PREAMBLELEN_FS20; - else if((FS20preamble > 1) && !FS20inbit) { - FS20preamble--; - } - else if((FS20preamble == 1) && FS20inbit) { - FS20preamble = 0; - } - } - else { - if(FS20bitcounter == 8) { - if(FS20inbit == FS20parity) { - FS20bitcounter = 0; - FS20bytecounter++; - FS20parity = 0; - } - else { - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20inbyte[FS20bytecounter] = (FS20inbyte[FS20bytecounter]<<1) | FS20inbit; - FS20parity ^= FS20inbit; - FS20bitcounter++; - } - } - } - } - - if(FS20protocol == PROTOCOL_WEATHER) { - if(FS20_BETWEEN(pulse, 685, 1020) && FS20_BETWEEN(space, 200, 533)) - FS20inbit = 0; - else if(FS20_BETWEEN(pulse, 200, 533) && FS20_BETWEEN(space, 685, 1020)) - FS20inbit = (1<<3); - else - FS20protocol = PROTOCOL_UNKNOWN; - - if(FS20protocol != PROTOCOL_UNKNOWN) { - if(FS20preamble) { - if((FS20preamble > 1) && FS20inbit) - FS20preamble = PREAMBLELEN_WEATHER; - else if((FS20preamble > 1) && !FS20inbit) { - FS20preamble--; - } - else if((FS20preamble == 1) && FS20inbit) { - FS20preamble = 0; - } - } - else { - if(FS20bitcounter == 4) { - tempbyte<<=8; - FS20bitcounter++; - } - else if(FS20bitcounter == 9) { - FS20bitcounter = 0; - } - else { - tempbyte = (tempbyte>>=1) | FS20inbit; - if(FS20bitcounter++ == 8) { - FS20inbyte[FS20bytecounter] = tempbyte; - tempbyte = 0; - FS20bytecounter++; - } - } - } - } - } - - if(FS20protocol == PROTOCOL_WEATHER2) { - if(FS20preamble) { - if((FS20_BETWEEN(pulse, 200, 300) && FS20_BETWEEN(space, 200, 300))) { - if (FS20preamble > 1) - FS20preamble--; - } - else if((FS20_BETWEEN(pulse, 400, 600) && FS20_BETWEEN(space, 200, 300))) { - if (FS20preamble == 1) { - FS20preamble = 0; - pulse = 0; - space = 0; - } - else - FS20protocol = PROTOCOL_UNKNOWN; - } - else - FS20protocol = PROTOCOL_UNKNOWN; - } - else { - if((FS20_BETWEEN(pulse + space, 400, 600)) ) { - if(FS20state) - FS20inbit = 1; - else - FS20inbit = 0; - - pulse = 0; - space = 0; - - if(FS20inbit) - FS20parity++; - - if(FS20bitcounter == 8) { - if(!(FS20parity & 0x01)) { - FS20bitcounter = 0; - FS20bytecounter++; - FS20parity = 0; - if(FS20bytecounter == 0x0a) { //packet full received - unsigned char dec[8]; - - dec[0] = FS20inbyte[1] ^ 0x89; - for(x=9;x>1;x--) { - FS20inbyte[x] = (FS20inbyte[x-1] + 0x24) ^ FS20inbyte[x]; - } - FS20inbyte[1] = FS20inbyte[1] ^ 0x89; - - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - else { - FS20inbyte[FS20bytecounter] = (FS20inbyte[FS20bytecounter]<<1) | FS20inbit; - FS20bitcounter++; - } - } - else if(pulse && space) { - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - } - - if((FS20protocol == PROTOCOL_UNKNOWN && FS20bytecounter > 1)) { - char msbuffer[20]; - - draw_block(0,32,128,24,3,DRAW_ERASE); - - //print time and protocol type - siprintf (msbuffer, "%02x:%02x:%02x.%02u %c ",rtc.time.hour,rtc.time.minute,rtc.time.second,(unsigned char)(T0overflow>>1) & 0xff, FS20inbyte[0]); - draw_string (0, 32, msbuffer, LCD_COLOR_B, DRAW_NORCU); - serial_puts(msbuffer); - - //print received data - for(x=1;x<(FS20bytecounter);x++) { - draw_hexC (((x-1)*14), 40, FS20inbyte[x], LCD_COLOR_B, DRAW_NORCU); - serial_putbyte (' '); - putHexC(FS20inbyte[x]); - } - - //print decoded data - if(FS20inbyte[0] == 'S') { - signed short temp; - - temp = ((FS20inbyte[6] & 0x7F)<<8) | FS20inbyte[7]; - if(temp & 0x4000) //negative - temp |=0x8000; - - serial_putbyte (' '); - serial_putbyte (' '); - - siprintf (msbuffer, "%4d °C %u%%", temp,FS20inbyte[8]); - msbuffer[4] = msbuffer[3]; - msbuffer[3] = '.'; - serial_puts(msbuffer); - msbuffer[5] = 0x15; //change °C on display - msbuffer[6] = ' '; - draw_string (0, 48, msbuffer, LCD_COLOR_B, DRAW_NORCU); - } - - serial_puts("\n\r"); - finish = 0; - FS20bytecounter = 0; - FS20protocol = PROTOCOL_UNKNOWN; - } - } - } - } - - RFasyncmode(false); -} - - diff --git a/boop/trunk/cc1100/fs20.h b/boop/trunk/cc1100/fs20.h deleted file mode 100644 index ea60c22..0000000 --- a/boop/trunk/cc1100/fs20.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - fs20.h - FS20 functions - Copyright (C) 2009 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef FS20_H -#define FS20_H - -#define extensionbit 0x20 -#define PREAMBLELEN_FS20 10 -#define PREAMBLELEN_WEATHER 7 -#define PREAMBLELEN_WEATHER2 20 - -void fs20_decoder(void); - -#endif diff --git a/boop/trunk/cc1100/rf.c b/boop/trunk/cc1100/rf.c deleted file mode 100644 index 00ea4a1..0000000 --- a/boop/trunk/cc1100/rf.c +++ /dev/null @@ -1,502 +0,0 @@ -/* - rf.c - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "rf.h" -#include "cc1100.h" -#include "timerfuncs.h" -#include "irq.h" -#include "cc1100.h" -#include "lcd.h" -#include "fonty.h" -#include "rtc.h" -#include "global.h" -#include "buffer.h" -#include "bfs.h" - -unsigned char RFbuf[64]; -struct RFendpoint_ rfendpoint[MAX_ENDPOINTS]; -struct RF_ RF; - -const struct RFsettings_ default_RFsettings = -{ - 0x01, //address - 0x01 //channel -}; - -//********************* -//* Private functions * -//********************* - -void switch_to_idle() { - cc1100_strobe(SIDLE); - while (cc1100_read1(MARCSTATE) != 01); -} - -void WORsend_timeout(unsigned int cb) { - RF.state = RFsendworend; -} - -void RF_timed_rx_timeout(unsigned int cb) { - stopCB(RF.timeout_cb); - removeTimerCB(RF.timeout_cb); - RF.timeout_cb = 0xff; - if(RF.flags & WORenabled) - RF_changestate(RFwor); - else - RF_changestate(RFidle); - -} - -void sendendpoint(struct RFendpoint_ *currentEP) { - - unsigned char* epdata = 0; - unsigned short eplen; - struct cc1100frame_ *TXframe; - - TXframe = (struct cc1100frame_ *)RFbuf; - - //write header - eplen = currentEP->bufferlen; - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - if(eplen > 6) - eplen = 6; - epdata = currentEP->data; - break; - case EPtypebuffer: - if(eplen > 59) - eplen = 59; - epdata = currentEP->buffer; - break; - case EPtypecbuffer: - if(eplen > 59) - eplen = 59; - if(eplen > currentEP->cbuffer->len) - eplen = currentEP->cbuffer->len; - break; - } - TXframe->len = eplen + 3; - TXframe->destAddr = currentEP->dest; - TXframe->srcAddr = RF.addr; - TXframe->packetType = currentEP->type; - cc1100_write(TX_fifo | BURST,(unsigned char*)TXframe,4); - - //write data - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - case EPtypebuffer: - cc1100_write(TX_fifo | BURST,epdata,eplen); - break; - case EPtypecbuffer: - - if(currentEP->cbuffer->index + eplen <= currentEP->cbuffer->size) { - cc1100_write(TX_fifo | BURST,&(currentEP->cbuffer->data[currentEP->cbuffer->index]),eplen); - } - else { - cc1100_write(TX_fifo | BURST,&(currentEP->cbuffer->data[currentEP->cbuffer->index]), currentEP->cbuffer->size - currentEP->cbuffer->index); - cc1100_write(TX_fifo | BURST,currentEP->cbuffer->data,eplen - (currentEP->cbuffer->size - currentEP->cbuffer->index)); - } - currentEP->cbuffer->index = (currentEP->cbuffer->index + eplen) % currentEP->cbuffer->size; - currentEP->cbuffer->len -= eplen; - break; - } - - cc1100_strobe(STX); - - currentEP->flags &= ~EPnewdata; - - if(currentEP->flags & EPonce) - closeEP(currentEP); -} - -void receiveendpoint(struct RFendpoint_ *currentEP) { - - unsigned short eplen; - struct cc1100frame_ *RXframe; - - RXframe = (struct cc1100frame_ *)RFbuf; - - currentEP->dest = RXframe->srcAddr; - eplen = RXframe->len-3; - - switch ( currentEP->flags & EPtypemask) { - case EPtypedata: - if(eplen > 6) { - eplen = 6; - currentEP->flags |= EPoverflow; - } - memcpy(&(currentEP->data[0]),RXframe->data,eplen); - break; - case EPtypebuffer: - if(eplen > currentEP->buffersize) { - eplen = currentEP->buffersize; - currentEP->flags |= EPoverflow; - } - memcpy(currentEP->buffer,RXframe->data,eplen); - break; - case EPtypecbuffer: - if(eplen > currentEP->cbuffer->size - currentEP->cbuffer->len) { - eplen = currentEP->cbuffer->size - currentEP->cbuffer->len; - currentEP->flags |= EPoverflow; - } - cBufferAddBuffer(currentEP->cbuffer, RXframe->data, eplen); - break; - } - - currentEP->bufferlen = eplen; - if(currentEP->flags & EPnewdata) - currentEP->flags |= EPoverwritten; - else - currentEP->flags |= EPnewdata; - if(currentEP->flags & EPonce) - closeEP(currentEP); -} - -void cc1100IRQ (void) { - - unsigned char x; - - switch_to_idle(); - - if (cc1100_read1(RXBYTES) > 0) { - cc1100_read(RX_fifo, RFbuf,1); - cc1100_read(RX_fifo, &RFbuf[1],RFbuf[0]); - - struct cc1100frame_ *RXframe; - RXframe = (struct cc1100frame_ *)RFbuf; - - if ((RXframe->len == 1) && (RF.flags & WORenabled) && ((RXframe->destAddr == RF.addr) || (RXframe->destAddr == 0x00))) { - if(RF.timeout_cb != 0xff || RF.state != RFrx) - RF_timed_rx(WORrx_time); - } - - if (RXframe->len > 3) { - if (RF.timeout_cb != 0xff) - setCBIntervall(RF.timeout_cb,WORrx_time); - switch ( RXframe->packetType) { - case packet_test: - draw_block(0,50,128,10,3,DRAW_ERASE); - draw_string(0, 50, (char*)&RXframe->data[0], 3, DRAW_PUT); - break; - case packet_ping: - if (RXframe->data[0] == 0x01) { - struct RFendpoint_* cur_ep; - cur_ep = openEP(0,0, packet_ping); - if(cur_ep) { - cur_ep->dest = RXframe->srcAddr; - cur_ep->data[0] = 2; - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce; - RF_changestate(RFtx); - } - } - else if (RXframe->data[0] == 0x02) { - RF.flags |= PingACK; - } - break; - case packet_time: - if ((RXframe->data[0] == 0xFF) && (timeInfo & TIME_ACCURATE)) { - send_time(RXframe->srcAddr,0); - } - else if (RXframe->len == 10) { - memcpy((unsigned char *)&rtc,&RXframe->data[0],7); - timeInfo |= SETNEWTIME; - VICSoftInt = INT_EINT2; - } - break; - default: - for(x=0; xpacketType) && ((rfendpoint[x].flags & (EPoutput | EPenabled)) == EPenabled)) { - receiveendpoint(&rfendpoint[x]); - break; - } - } - } - } - } - - if(RF.state == RFtx) { - for(x=0; xdest = dest; - cur_ep->data[0] = 1; - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF.flags &= ~PingACK; - RF_changestate(RFtx); - - RF_timed_rx(WORrx_time); - - while ((RF.timeout_cb != 0xff) && !(RF.flags & PingACK)); - - if(RF.flags & PingACK) - return(1); - } - return(0); -} - -void RF_init (void) { - cc1100_init(); - RF.flags = 0; - RF.addr = conf[0x09]; - RF.state = RFpwrdown; - RF.nextstate = RFpwrdown; - RF.timeout_cb = 0xff; -} - -void RF_changestate (unsigned char state) { - unsigned char oldstate; - - VICIntEnClr = INT_EINT0; - - if(RF.state != state) { - oldstate = RF.state; - - if((RF.state >= RFtx) && (state < RFtx)) { - RF.nextstate = state; - } - else { - switch (state) { - case RFpwrdown: - RF.state = RFpwrdown; - break; - case RFwor: - RF.state = RFwor; - RF.flags |= WORenabled; - break; - case RFidle: - RF.state = RFidle; - break; - case RFrx: - RF.state = RFrx; - break; - case RFtx: - if(RF.state < RFtx) - RF.state = RFtx; - if(oldstate == RFrx) - RF.nextstate = RFrx; - else if(RF.flags & WORenabled) - RF.nextstate = RFwor; - else - RF.nextstate = RFidle; - break; - case RFsendwor: - break; - } - } - if(oldstate != RF.state) { - VICSoftInt = INT_EINT0; - } - } - VICIntEnable = INT_EINT0; -} - -void RF_timed_rx(unsigned short timeout) { - if (RF.timeout_cb != 0xff) - setCBIntervall(RF.timeout_cb,timeout); - else { - RF.timeout_cb = addTimerCB(RF_timed_rx_timeout, timeout); - startCB(RF.timeout_cb); - RF_changestate(RFrx); - } -} - -void startRFIRQ(void) { - - PINSEL1 |= 1; //GDO0 as EINT0 - EXTMODE |= 1; //edge sensitive - EXTPOLAR |= 0; //falling edge - EXTWAKE |= 1; - EXTINT |= 1; - - VICVectAddr2 = (unsigned long)&(cc1100IRQ); - VICVectCntl2 = VIC_SLOT_EN | INT_SRC_EINT0; - VICIntEnable = INT_EINT0; -} - -inline void stopRFIRQ(void) { - VICIntEnClr = INT_EINT0; -} - - -struct RFendpoint_* openEP(void* buffer, unsigned short buffersize, unsigned char type) { - - int i; - struct RFendpoint_* cur_ep; - - if(!type) - return 0; - - for(i=0; itype)) { - cur_ep->buffer = buffer; - cur_ep->buffersize = buffersize; - cur_ep->type = type; - cur_ep->bufferlen = 0; - cur_ep->dest = 0; - cur_ep->flags = 0; - if(!(buffer)) - cur_ep->flags |= EPtypedata; - return cur_ep; - } - } - return 0; - -} - -void closeEP(struct RFendpoint_ *cur_ep) { - if(cur_ep) { - cur_ep->flags = 0; - cur_ep->buffer = 0; - cur_ep->type = 0; - } -} - -void RF_setRegister(unsigned char reg, unsigned char data) { - - unsigned long VICInt; - - VICInt = VICIntEnable & INT_EINT0; - VICIntEnClr = INT_EINT0; - - cc1100_write1(reg,data); - - VICIntEnable |= VICInt; -} - -void load_RF_setting(void) { - struct RFsettings_ RFsettings; - - if(BFS_LoadFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings) != sizeof(struct RFsettings_)) { - RFsettings = default_RFsettings; - BFS_SaveFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - draw_string(0, 50, "default RF load", 3, DRAW_PUT); - } - - RF_setRegister(0x09, RFsettings.address); - RF_setRegister(0x0a, RFsettings.channel); - RF.addr = RFsettings.address; -} - - -void RFasyncmode(unsigned char on) { - - if(on) { - RF_changestate(RFidle); - while(RF.state != RFidle); - stopRFIRQ(); - cc1100_write((0x00 | BURST ),(unsigned char*)confasync,0x2f); - cc1100_write1(PATABLE,0xf0); - PINSEL1 &= 0xfffffffc; // GDO0 as GPIO - FIODIR0 |= GDO0; // output - } - else { - PINSEL1 |= 1; // GDO0 as EINT0 - cc1100_write((0x00 | BURST ),(unsigned char*)conf,0x2f); - cc1100_write1(PATABLE,0xC0); - cc1100_strobe(SIDLE); - load_RF_setting(); - startRFIRQ(); - RF_changestate(RFwor); - } -} diff --git a/boop/trunk/cc1100/rf.h b/boop/trunk/cc1100/rf.h deleted file mode 100644 index 31ff0c6..0000000 --- a/boop/trunk/cc1100/rf.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - rf.h - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef RF_H -#define RF_H - -#define WORrx_time 200 - -#define packet_test 0x01 -#define packet_ping 0x02 -#define packet_time 0x03 -#define packet_RFenc 0x04 -#define packet_redirDAT 0x05 -#define packet_redirCMD 0x06 - -#define MAX_ENDPOINTS 0x0F - -struct cc1100frame_ { - unsigned char len; - unsigned char destAddr; - unsigned char srcAddr; - unsigned char packetType; - unsigned char data[]; -}; - -struct RFendpoint_ { - union { - unsigned char* buffer; - struct cBuffer_* cbuffer; - unsigned char data[4]; - }; - unsigned short buffersize; - unsigned short bufferlen; - volatile unsigned short flags; - unsigned char dest; - unsigned char type; -}; -//RFendpoints_.flags -#define EPenabled (1<<0) -#define EPoutput (1<<1) -#define EPinput 0 -#define EPtypedata (1<<2) -#define EPtypebuffer 0 -#define EPtypecbuffer (1<<3) -#define EPtypemask (1<<2 | 1<<3) -#define EPnewdata (1<<4) -#define EPoverwritten (1<<5) -#define EPoverflow (1<<6) -#define EPonce (1<<7) -#define EPsendwor (1<<8) - - -struct RFsettings_ { - unsigned char address; - unsigned char channel; -}__attribute__((aligned(0x4))); - -const struct RFsettings_ default_RFsettings; - -struct RF_ { - unsigned char addr; - volatile unsigned char flags; - volatile unsigned char state; - volatile unsigned char timeout_cb; - volatile unsigned char wortimeout_cb; - volatile unsigned char nextstate; - volatile unsigned char tag; -}__attribute__((aligned(0x4))); -struct RF_ RF; - -//RF_.state -#define RFpwrdown 0x00 -#define RFwor 0x01 -#define RFidle 0x02 -#define RFrx 0x03 -#define RFtx 0x04 -#define RFsendwor 0x05 -#define RFsendworend 0x06 - -//RF.flags -#define PingACK (1<<0) -#define WORenabled (1<<1) -#define RXueop (1<<2) //MCSM2 RX_TIME: Until end of packet - -void startRFIRQ(void); -void RF_init (void); -void RF_timed_rx(unsigned short timeout); -void RF_changestate (unsigned char state); -unsigned char RF_sendping(unsigned char dest); -struct RFendpoint_* openEP(void* buffer, unsigned short buffersize, unsigned char type); -void closeEP(struct RFendpoint_ *cur_ep); -void RF_setRegister(unsigned char reg, unsigned char data); -void load_RF_setting(void); -void RFasyncmode(unsigned char on); -#endif diff --git a/boop/trunk/cc1100/scan.c b/boop/trunk/cc1100/scan.c deleted file mode 100644 index 3ad2d71..0000000 --- a/boop/trunk/cc1100/scan.c +++ /dev/null @@ -1,151 +0,0 @@ -//~ DN508 - Frequency Scanning using CC430Fx, CC110x, and CC111xFx - -void scanFreqBands_autocal(void) { - UINT8 subBand; - UINT8 i; - UINT16 channel; - // 1) Loop through all sub bands - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - // 1.1) Set the base freq. for the current sub band. The values for FREQ2, FREQ1, and FREQ0 can be found in - // freqSettings[subBand][n], where n = 0, 1, or 2 - // 1.2) Set TEST0 register = 0x0B - // 1.3) Loop through all channels - for (channel = 0; channel <= lastChannel[subBand]; channel++ ) - { - UINT8 pktStatus; - // 1.3.1) Set CHANNR register = channel - // 1.3.2) Change TEST0 register settings to 0x09 if freq is above 861 MHz - if (channel == limitTest0Reg[subBand]) - { - // 1.3.2.1) Set TEST0 register = 0x09 - } - // 1.3.3) Enter RX mode by issuing an SRX strobe command - // 1.3.4) Wait for radio to enter RX state (can be done by polling the MARCSTATE register) - // 1.3.5) Wait for RSSI to be valid (See DN505 [7] on how long to wait) - // 1.3.6) Read the PKTSTATUS register while the radio is in RX state (store it in pktStatus) - // 1.3.7) Enter IDLE state by issuing an SIDLE strobe command - // 1.3.8) Check if CS is asserted (use the value obtained in 1.3.6) - if (pktStatus & 0x40) - { - // CS is asserted - // 1.3.8.1) Read RSSI value and store it in rssi_dec - // 1.3.8.2) Calculate RSSI in dBm (rssi_dBm)(offset value found in rssi_offset[subBand]) - // 1.3.8.3) Store the RSSI value and the corresponding channel number - rssiTable[carrierSenseCounter] = rssi_dBm; - channelNumber[carrierSenseCounter] = channel; - carrierSenseCounter++; - } - } // End Channel Loop - // 1.4) Before moving on to the next sub band, scan through the rssiTable to find the highest RSSI value. Store - // the RSSI value in highRSSI[subBand] and the corresponding channel number in selectedChannel[subBand] - for (i = 0; i < carrierSenseCounter; i++) - { - if (rssiTable[i] > highRSSI[subBand]) - { - highRSSI[subBand] = rssiTable[i]; - selectedChannel[subBand] = channelNumber[i]; - } - } - // 1.5) Reset carrierSenseCounter - carrierSenseCounter = 0; - } // End Band Loop - // 2) When all sub bands have been scanned, find which sub band has the highest RSSI (Scan the highRSSI[subBand] - // table). Store the subBand (0, 1, or 2) and the corresponding channel in the global variables activeBand and - // activeChannel respectively - //~ { - INT16 tempRssi = -150; - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - if (highRSSI[subBand] >= tempRssi) - { - tempRssi = highRSSI[subBand]; - activeChannel = selectedChannel[subBand]; - activeBand = subBand; - } - } -} - - -void scanFreqBands_noautocal(void) { - UINT8 subBand; - UINT8 i; - UINT16 channel; - // 1) Loop through all sub bands - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - // 1.1) Set the base freq. for the current sub band. The values for FREQ2, FREQ1, and FREQ0 can be found in - // freqSettings[subBand][n], where n = 0, 1, or 2 - // 1.2) Set TEST0 register = 0x0B - // 1.3) Reset Calibration Counter (calibration performed when counter is 0) - calCounter = 0; - // 1.4) Loop through all channels - for (channel = 0; channel <= lastChannel[subBand]; channel++ ) - { - UINT8 pktStatus; - // 1.4.1) Set CHANNR register = channel - // 1.4.2) Change TEST0 register settings to 0x09 if freq is above 861 MHz. When TEST0 is changed to 0x09, it - // is important that FSCAL2 is set to 0x2A and that a new calibration is performed - if (channel == limitTest0Reg[subBand]) - { - // 1.4.2.1) Set TEST0 register = 0x09 - // 1.4.2.2) Set FSCAL2 register = 0x2A - // 1.4.2.3) Calibration is needed when TEST0 is changed - calCounter = 0; - } - // 1.4.3) Calibrate for every 5th ch. + at start of every sub band and every time the TEST0 reg. is changed - if (calCounter++ == 0) - { - // 1.4.3.1) Perform a manual calibration by issuing an SCAL strobe command - } - // 1.4.4)) Reset Calibration Counter (if calCounter = 5, we are 1 MHz away from the frequency where a - // calibration was performed) - if (calCounter == 5) - { - // 1.4.4.1) Calibration is performed if calCounter = 0 - calCounter = 0; - } - // 1.4.5) Enter RX mode by issuing an SRX strobe command - // 1.4.6) Wait for radio to enter RX state (can be done by polling the MARCSTATE register) - // 1.4.7) Wait for RSSI to be valid (See DN505 [7] on how long to wait) - // 1.4.8) Read the PKTSTATUS register while the radio is in RX state (store it in pktStatus) - // 1.4.9) Enter IDLE state by issuing an SIDLE strobe command - // 1.4.10) Check if CS is asserted (use the value obtained in 1.4.8) - if (pktStatus & 0x40) - { // CS is asserted - // 1.4.10.1) Read RSSI value and store it in rssi_dec - // 1.4.10.2) Calculate RSSI in dBm (rssi_dBm)(offset value found in rssi_offset[subBand]) - // 1.4.10.3) Store the RSSI value and the corresponding channel number - rssiTable[carrierSenseCounter] = rssi_dBm; - channelNumber[carrierSenseCounter] = channel; - carrierSenseCounter++; - } - } // End Channel Loop - // 1.5) Before moving on to the next sub band, scan through the rssiTable to find the highest RSSI value. Store - // the RSSI value in highRSSI[subBand] and the corresponding channel number in selectedChannel[subBand] - for (i = 0; i < carrierSenseCounter; i++) - { - if (rssiTable[i] > highRSSI[subBand]) - { - highRSSI[subBand] = rssiTable[i]; - selectedChannel[subBand] = channelNumber[i]; - } - } - // 1.6) Reset carrierSenseCounter - carrierSenseCounter = 0; - } // End Band Loop - // 2) When all sub bands have been scanned, find which sub band has the highest RSSI (Scan the highRSSI[subBand] - // table). Store the subBand (0, 1, or 2) and the corresponding channel in the global variables activeBand and - // activeChannel respectively - //~ { - INT16 tempRssi = -150; - for (subBand = 0; subBand < NUMBER_OF_SUB_BANDS; subBand++) - { - if (highRSSI[subBand] >= tempRssi) - { - tempRssi = highRSSI[subBand]; - activeChannel = selectedChannel[subBand]; - activeBand = subBand; - } - } -} diff --git a/boop/trunk/cc1100/scan.h b/boop/trunk/cc1100/scan.h deleted file mode 100644 index f3f30f8..0000000 --- a/boop/trunk/cc1100/scan.h +++ /dev/null @@ -1,39 +0,0 @@ -//~ DN508 - Frequency Scanning using CC430Fx, CC110x, and CC111xFx - - -#define NUMBER_OF_SUB_BANDS 3 - -// Variables used to calculate RSSI -UINT8 rssi_dec; -INT16 rssi_dBm; -UINT8 rssi_offset[NUMBER_OF_SUB_BANDS] = {77, 77, 77}; -// Freq. Band Range Channel -// 0 779.009766 - 829.997314 0 - 255 All 0x0B -// 1 830.196869 - 881.184418 0 - 255 <- 154 = 0x0B, 155 -> = 0x09 -// 2 881.384369 - 927.972992 0 - 233 All 0x09 -INT16 rssiTable[256]; -UINT16 channelNumber[256]; -UINT8 carrierSenseCounter = 0; // Counter used to keep track on how many time CS has been asserted in one sub band - //(i.e. how many RSSI values are stored for each band) - -// Stop Channel in each of the sub bands -UINT8 lastChannel[NUMBER_OF_SUB_BANDS] = { 255, 255, 233}; - -// Channel number for each of the sub bands where one should change from TEST0 = 0x0B to TEST0 = 0x09 -UINT16 limitTest0Reg[NUMBER_OF_SUB_BANDS] = { 256, 155, 0 }; - -// Initialized to a value lower than the RSSI threshold -INT16 highRSSI[NUMBER_OF_SUB_BANDS] = { -150, -150, -150}; - -// Initialized to a value greater than the highest channel number -UINT16 selectedChannel[NUMBER_OF_SUB_BANDS] = { 300, 300, 300}; - // {FREQ2, FREQ1, FREQ0} -UINT8 freqSettings[NUMBER_OF_SUB_BANDS][3] = { {0x1D, 0xF6, 0x40}, - {0x1F, 0xEE, 0x3F}, - {0x21, 0xE6, 0x3F}}; - -UINT8 activeBand; // After the scanFreqBands() function has run, this variable will contain the sub band where - // the strongest signal was found -UINT16 activeChannel; // After the scanFreqBands() function has run, this variable will contain the channel number - // where the strongest signal was found -UINT8 calCounter = 0; // This variable is only used when running the code shown in Figure 3 diff --git a/boop/trunk/crt.s b/boop/trunk/crt.s deleted file mode 100644 index 27636b6..0000000 --- a/boop/trunk/crt.s +++ /dev/null @@ -1,268 +0,0 @@ -/* - crt.s - startup code - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -.global main - -.global _etext -.global _data -.global _edata -.global __bss_start -.global __bss_end__ -.global _stack - -/* Stack Sizes */ -.set UND_STACK_SIZE, 0x00000004 /* stack for "undefined instruction" interrupts is 4 bytes */ -.set ABT_STACK_SIZE, 0x00000004 /* stack for "abort" interrupts is 4 bytes */ -.set FIQ_STACK_SIZE, 0x00000104 /* stack for "FIQ" interrupts is 4 bytes */ -.set IRQ_STACK_SIZE, 0X000003F0 /* stack for "IRQ" normal interrupts is 4 bytes */ -.set SVC_STACK_SIZE, 0x00000004 /* stack for "SVC" supervisor mode is 4 bytes */ - -/* Standard definitions of Mode bits and Interrupt (I & F) flags in PSRs */ -.set MODE_USR, 0x10 /* Normal User Mode */ -.set MODE_FIQ, 0x11 /* FIQ Processing Fast Interrupts Mode */ -.set MODE_IRQ, 0x12 /* IRQ Processing Standard Interrupts Mode */ -.set MODE_SVC, 0x13 /* Supervisor Processing Software Interrupts Mode */ -.set MODE_ABT, 0x17 /* Abort Processing memory Faults Mode */ -.set MODE_UND, 0x1B /* Undefined Processing Undefined Instructions Mode */ -.set MODE_SYS, 0x1F /* System Running Priviledged Operating System Tasks Mode */ -.set I_BIT, 0x80 /* when I bit is set, IRQ is disabled (program status registers) */ -.set F_BIT, 0x40 /* when F bit is set, FIQ is disabled (program status registers) */ - - -.text -.arm - -.global Reset_Handler -.global _startup - -.section .text.fastcode - -.global ramvectors -.func ramvectors -ramvectors: - ldr PC, Ram_Reset_Addr - ldr PC, Ram_Undef_Addr - ldr PC, Ram_SWI_Addr - ldr PC, Ram_PAbt_Addr - ldr PC, Ram_DAbt_Addr - nop /* Reserved Vector (holds Philips ISP checksum) */ - ldr PC, do_vic_addr /* Route IRQ to VIC */ - ldr PC, Ram_FIQ_Addr - -Ram_Reset_Addr: .word Reset_Handler /* defined in this module below */ -Ram_Undef_Addr: .word UNDEF_Routine /* defined in main.c */ -Ram_SWI_Addr: .word SWI_Routine /* defined in main.c */ -Ram_PAbt_Addr: .word UNDEF_Routine /* defined in main.c */ -Ram_DAbt_Addr: .word UNDEF_Routine /* defined in main.c */ -do_vic_addr: .word do_vic -Ram_FIQ_Addr: .word do_fiq /* defined in main.c */ - .word 0 /* rounds vectors to 64 bytes total */ -.endfunc - -.global do_vic -.func do_vic -do_vic: - - stmfd sp!, { r0-r5, r12, lr } /* save work regs & spsr on stack */ - ldr r4, =VICVectAddr /* get the ISR address from VIC */ - ldr r5, [r4] - mov lr, pc /* set return to common exit of ISR */ - bx r5 /* go handle the interrupt */ -/* mov pc, r5 /* go handle the interrupt */ - str lr, [r4] /* update VICVectAddr */ - ldmfd sp!, { r0-r5, r12, lr } /* restore work regs and spsr_irq */ - subs pc, lr, #0x4 /* return, restoring CPSR from SPSR */ -/* -stmfd sp!, { lr } -mrs lr, spsr -stmfd sp!, { r4-r5, lr } - -ldr r4, =VICVectAddr -ldr r5, [r4] - -msr cpsr_c, #0x13 - -stmfd sp!, { r0-r3, r12, lr } -mov lr, pc -bx r5 -ldmfd sp!, { r0-r3, r12, lr } - -msr cpsr_c, #0x92 - -str lr, [r4] - -ldmfd sp!, { r4-r5, lr } -msr spsr_cxsf, lr -ldmfd sp!, { lr } - -subs pc, lr, #0x4 -*/ - -.endfunc - -.global do_fiq -.func do_fiq -do_fiq: - - stmfd sp!, { r0-r7, lr } - ldr r8, =FIQ_Routine - mov lr, pc - bx r8 - ldmfd sp!, { r0-r7, lr } - subs pc, lr, #0x4 -.endfunc - - -.section .text - -.func _startup -_startup: - -# Exception Vectors - -_vectors: - ldr PC, Reset_Addr - -Reset_Addr: .word Reset_Handler - -# Reset Handler - -Reset_Handler: - -/* Setup a stack for each mode - note that this only sets up a usable stack - for User mode. Also each mode is setup with interrupts initially disabled. */ - - ldr r0, =_stack_end - msr CPSR_c, #MODE_UND|I_BIT|F_BIT /* Undefined Instruction Mode */ - mov sp, r0 - - sub r0, r0, #UND_STACK_SIZE - msr CPSR_c, #MODE_ABT|I_BIT|F_BIT /* Abort Mode */ - mov sp, r0 - - sub r0, r0, #ABT_STACK_SIZE - msr CPSR_c, #MODE_FIQ|I_BIT|F_BIT /* FIQ Mode */ - mov sp, r0 - - sub r0, r0, #FIQ_STACK_SIZE - msr CPSR_c, #MODE_IRQ|I_BIT|F_BIT /* IRQ Mode */ - mov sp, r0 - - sub r0, r0, #IRQ_STACK_SIZE - msr CPSR_c, #MODE_SVC|I_BIT|F_BIT /* Supervisor Mode */ - mov sp, r0 - - sub r0, r0, #SVC_STACK_SIZE - msr CPSR_c, #MODE_SYS|I_BIT|F_BIT /* User Mode */ - mov sp, r0 - -/* Setup Pins and Memory */ - ldr r0,=BCFG0 - /* W B R */ - /* P S B */ - /* B W E E L */ - /* AT|MW|M|P|R|R|reserved|WST2 |E|WST1 |r|IDCY */ - /* --+--+-+-+-+-+--------+-----+-------+-+---- */ - /* 3 | 2| | | |2| 2 1| 1 | | 0 |0| 0 */ - /* 1 | 8| | | |4| 0 6| 2 | | 8 |4| 0 */ - /* --+--+-+-+-+-+--------+-----+-------+-+---- */ -/* ldr r1, =0x10000400 /* 00|01|0|0|0|0|00000000|00000|1|00000|0|0000 16bit, rble, 3wst - 10 mhz*/ -/* ldr r1, =0x10000420 /* 00|01|0|0|0|0|00000000|00000|1|00001|0|0000 16bit, rble, 4wst - 30 mhz*/ - ldr r1, =0x100004A0 /* 00|01|0|0|0|0|00000000|00000|1|00101|0|0000 16bit, rble, 6wst - 60 mhz*/ - - str r1,[r0] /* set bcfg0 (flash) */ - str r1,[r0,#0x08] /* set bcfg2 (flash) */ - - ldr r0, =BCFG1 -/* ldr r1, =0x00000422 /* 00|00|0|0|0|0|00000000|00000|1|00001|0|0010 8 bit, 3 sram wst, rble, 5 wst 3 idcy*/ - ldr r1, =0x00000C42 /* 00|00|0|0|0|0|00000000|00001|1|00010|0|0010 8 bit, 3 sram wst, rble, 5 wst 3 idcy*/ - str r1, [r0] /* set bcfg1 (lcd) */ - - ldr r0, =PINSEL0 - ldr r1, =0x00008005 - str r1, [r0] - - ldr r0, =PINSEL1 - ldr r1, =0x00000000 /* gpio 0.30 */ - str r1, [r0] - - ldr r0, =PINSEL2 - ldr r1, =0x0de049d4 - str r1, [r0] - - ldr r0, = IO2SET - ldr r1, =0x1FC0000 - str r1, [r0] - str r1, [r0,#0x04] - - ldr r0, = IO0DIR - ldr r1, =0x002018D0 - str r1, [r0] - -/* Setup PLL */ - ldr r0, =0xe01fc000 - ldr r2, =0xaa - ldr r3, =0x55 - ldr r1, =0x03 - str r1, [r0,#0x80] /* set pllcon to 0x03 = pll enable (0x01) + pll connect (0x02) */ - ldr r1, =0x0 - str r1, [r0,#0x100] /* set vbpdiv to 0x00 = 1/4th; 0x01 = 1/1, 0x02 = 1/2*/ -/* ldr r1, =0x42 */ - ldr r1, =0x45 - str r1,[r0,#0x84] /* set pllcfg to 0x42 = psel = 10 (4) = msel= 00010 (3) = 240 mhz Fcco*/ - str r2, [r0,#0x8c] - str r3, [r0,#0x8c] - -/* Copy .fastcode & .data section (Copy from ROM to RAM) */ - ldr R0, =__fastcode_load /*_etext*/ - ldr r3, entry_mask /* this and the next instruction are an workaround */ - and r0, r0, r3 /* for some ugly bug in winarm to force msb to 0x80 */ - ldr R1, =__fastcode_start /*_data*/ - ldr R2, =_edata -1: - cmp r1,r2 - ldmltia r0!,{r3} - stmltia r1!,{r3} - blt 1b - -/* Clear .bss section (Zero init) */ - mov R0, #0 - ldr R1, =_bss_start - ldr R2, =_bss_end -2: - cmp R1, R2 - strlo R0, [R1], #4 - blo 2b - - ldr r0, =MEMMAP - ldr r1, =0x02 /* irq vectors in ram */ - str r1, [r0] - - mov r0,#0 - mov r1,r0 - mov r2,r0 - mov fp,r0 - mov r7,r0 - ldr r10,=main - mov lr,pc - bx r10 - -.endfunc - -entry_mask: .word 0x8FFFFFFF /* defined in this module below */ - -.end diff --git a/boop/trunk/display/GrayScaler.exe b/boop/trunk/display/GrayScaler.exe deleted file mode 100644 index ac8260d..0000000 Binary files a/boop/trunk/display/GrayScaler.exe and /dev/null differ diff --git a/boop/trunk/display/Hourglas_2bpp.bmp b/boop/trunk/display/Hourglas_2bpp.bmp deleted file mode 100644 index 4e67877..0000000 Binary files a/boop/trunk/display/Hourglas_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/display/Hourglas_t_3bpp_t.bmp b/boop/trunk/display/Hourglas_t_3bpp_t.bmp deleted file mode 100644 index bf54175..0000000 Binary files a/boop/trunk/display/Hourglas_t_3bpp_t.bmp and /dev/null differ diff --git a/boop/trunk/display/Make.conf b/boop/trunk/display/Make.conf deleted file mode 100644 index 762aea9..0000000 --- a/boop/trunk/display/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := lcd.c fonty.c drawDigit.c drawIcon.c backlight.c diff --git a/boop/trunk/display/backlight.c b/boop/trunk/display/backlight.c deleted file mode 100644 index 77886d5..0000000 --- a/boop/trunk/display/backlight.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - backlight.c - lcd backlight control - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "timerfuncs.h" -#include "backlight.h" - -// backlight PWM is done in soundirq -// backlight timing is done by timer functions - -extern volatile unsigned char bl_val; - -unsigned char bl_max; -unsigned int bl_cb; -unsigned char direction; - -unsigned char bl_speed; // n*5 ms between two steps of brightness -unsigned int bl_timeout; - -void autoBL(unsigned int cb) -{ - switch(direction) - { - case 0: - if(bl_val < bl_max) - { - bl_val++; - } - else - { - direction = 1; - setCBIntervall(bl_cb, bl_timeout); - } - break; - - case 1: - direction = 2; - setCBIntervall(bl_cb, bl_speed); - break; - - case 2: - if(bl_val > 0x00) - { - bl_val--; - } - else - { - direction = 0; - stopCB(bl_cb); - } - break; - } -} - - -// adds function autoBL to timer -// initialises parameters // TODO: vgl. load_setting (settingsmenu.c) -void initBacklight(void) -{ - direction = 1; - bl_speed = 2; - bl_timeout = 5000; - bl_max = 63; - bl_cb = addTimerCB(autoBL, bl_timeout); - startCB(bl_cb); -} - -// set new brightness and set up fading and timout -void setBacklight(unsigned char level) -{ - if(level == BL_AUTO) - { - stopCB(bl_cb); - direction = 0; - setCBIntervall(bl_cb, bl_speed); - startCB(bl_cb); - } - else if(level < BL_AUTO) - { - stopCB(bl_cb); - bl_val = level; - direction = 1; - setCBIntervall(bl_cb, bl_timeout); - startCB(bl_cb); - } -} - -void setBLSpeed(unsigned char s) -{ - if(s > 0) - bl_speed = s; -} - -void setBLTimeout(unsigned int t) -{ - if(t > 0) - bl_timeout = t; -} diff --git a/boop/trunk/display/backlight.h b/boop/trunk/display/backlight.h deleted file mode 100644 index 4b3574a..0000000 --- a/boop/trunk/display/backlight.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - backlight.h - lcd backlight control - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef BACKLIGHT_H -#define BACKLIGHT_H - -#define BL_OFF 0x00 -#define BL_AUTO 0x40 -#define BL_ON 0x80 - -void initBacklight(void); -void setBacklight(unsigned char level); - -#endif diff --git a/boop/trunk/display/boop_logo b/boop/trunk/display/boop_logo deleted file mode 100644 index aaa5389..0000000 --- a/boop/trunk/display/boop_logo +++ /dev/null @@ -1,2592 +0,0 @@ -#ifndef DEBUGMODE -const unsigned char b_w = 128; -const unsigned char b_h = 160; -const char b_data[] = { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0x80, 0x80, - 0xc0, 0x80, - 0xc0, 0xc0, - 0xc0, 0xc0, - 0xc0, 0xe0, - 0xc0, 0xe0, - 0xe8, 0xd0, - 0xf8, 0xf8, - 0xf8, 0xf8, - 0xf0, 0xf8, - 0xe0, 0xc0, - 0xe0, 0xc0, - 0xc0, 0xe0, - 0xc0, 0xc0, - 0xc0, 0xc0, - 0xc0, 0x80, - 0x80, 0xc0, - 0x80, 0xc0, - 0xe0, 0xf0, - 0xe0, 0xc0, - 0xc0, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0xe0, 0xc0, - 0xe0, 0xf0, - 0xf0, 0xa0, - 0xc0, 0xc0, - 0xe0, 0xc0, - 0xe0, 0xe0, - 0xe0, 0xf0, - 0xf0, 0xe0, - 0xf0, 0xf0, - 0xf0, 0xf0, - 0xf0, 0xf0, - 0xf0, 0xe0, - 0x20, 0xc0, - 0xf0, 0x08, - 0xfc, 0xf8, - 0xfe, 0xfc, - 0xff, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x7f, 0xff, - 0x7f, 0xbf, - 0x7f, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0xff, - 0x7f, 0xff, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xf8, 0xfd, - 0xe0, 0x90, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x20, - 0xf8, 0xf4, - 0xfe, 0xfc, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xbf, - 0xdf, 0xbf, - 0xdf, 0x2f, - 0x1f, 0xef, - 0x1f, 0xef, - 0x1f, 0xef, - 0x1f, 0xec, - 0x1f, 0xe0, - 0x0f, 0xf7, - 0x07, 0xfb, - 0x03, 0xfd, - 0x01, 0xff, - 0x01, 0xfe, - 0x00, 0xff, - 0x00, 0xff, - 0x83, 0x7c, - 0xe3, 0xde, - 0x77, 0xab, - 0x1b, 0xe7, - 0x0b, 0xf4, - 0x0c, 0xf3, - 0x08, 0xf7, - 0x0c, 0xf3, - 0x1d, 0xee, - 0x1f, 0xef, - 0xef, 0x17, - 0xe7, 0xdf, - 0xcf, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x3e, 0x5c, - 0x1e, 0x1d, - 0x0f, 0x0e, - 0x00, 0x06, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x07, 0x0a, - 0x0e, 0x0f, - 0x1e, 0x0f, - 0x7f, 0xbf, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0xbf, - 0x7f, 0xb3, - 0x3d, 0xda, - 0x01, 0xfe, - 0x01, 0xff, - 0xc1, 0x3f, - 0x71, 0x8e, - 0x30, 0xcf, - 0x18, 0xe7, - 0x18, 0xf7, - 0x18, 0xf7, - 0x18, 0xef, - 0x08, 0xf7, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x06, 0xfb, - 0x07, 0xfb, - 0xc1, 0x3e, - 0xf0, 0x0f, - 0x78, 0x87, - 0xf8, 0x67, - 0x78, 0xe7, - 0xf8, 0xe7, - 0xf8, 0xe7, - 0xf0, 0xef, - 0xf8, 0x47, - 0x63, 0x9c, - 0xf7, 0xeb, - 0xff, 0xe3, - 0xf3, 0xef, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xef, 0xf7, - 0xe1, 0xf2, - 0x70, 0xb0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x88, - 0x99, 0x73, - 0xff, 0x3b, - 0xff, 0x3f, - 0xfe, 0x7d, - 0xff, 0x7e, - 0x6e, 0x97, - 0x40, 0xff, - 0xe1, 0x7e, - 0xe1, 0x9e, - 0xf8, 0xe7, - 0xfe, 0xb9, - 0x9e, 0x8d, - 0x8e, 0xd9, - 0xff, 0x0c, - 0x7c, 0xfb, - 0x7c, 0xfb, - 0xfc, 0x7b, - 0x60, 0xdf, - 0xc0, 0xff, - 0xe0, 0x7f, - 0xf0, 0x2f, - 0xb0, 0x7f, - 0x30, 0xff, - 0x78, 0xff, - 0xff, 0x4c, - 0xce, 0xf5, - 0xce, 0xf4, - 0xcf, 0xf2, - 0xcb, 0x77, - 0xeb, 0x57, - 0x67, 0xeb, - 0xf7, 0xab, - 0xff, 0x1e, - 0xdf, 0x6e, - 0xcf, 0x73, - 0xe3, 0xdd, - 0x9f, 0x21, - 0x1f, 0x81, - 0x15, 0x0b, - 0x17, 0x09, - 0x09, 0x16, - 0x07, 0x08, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x18, 0x08, - 0xf8, 0x78, - 0x98, 0xf8, - 0x38, 0x10, - 0x30, 0x18, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x70, - 0x70, 0x20, - 0x60, 0x30, - 0x60, 0x60, - 0x60, 0x60, - 0x60, 0x60, - 0xf8, 0xe4, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 5 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0x10, - 0xf8, 0x14, - 0x0e, 0xf0, - 0x03, 0xfc, - 0xff, 0x00, - 0xff, 0x02, - 0x87, 0x7b, - 0x83, 0xff, - 0xcf, 0x3f, - 0x6f, 0x1f, - 0x6f, 0xbf, - 0xbf, 0x46, - 0xff, 0x1f, - 0x7f, 0x3f, - 0x3f, 0xdf, - 0xf9, 0xde, - 0x7b, 0xd8, - 0x7b, 0xc0, - 0xf9, 0xce, - 0xed, 0xf8, - 0xec, 0xf7, - 0xf6, 0x8b, - 0x93, 0xef, - 0x98, 0xe7, - 0x8e, 0xf1, - 0x8e, 0xff, - 0xcf, 0xbe, - 0xce, 0xb7, - 0xe6, 0xd9, - 0xf6, 0xe9, - 0xfe, 0xb1, - 0x3e, 0xdf, - 0x1e, 0xef, - 0x07, 0xfa, - 0x03, 0xfd, - 0x01, 0xfe, - 0x00, 0xff, - 0x80, 0x7f, - 0x80, 0x7c, - 0x80, 0x7d, - 0x01, 0xfe, - 0x03, 0xf5, - 0x02, 0xef, - 0x06, 0xe8, - 0x0c, 0xd0, - 0x18, 0xe0, - 0x30, 0xc0, - 0x60, 0xa0, - 0xc0, 0x60, - 0x80, 0xc0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0x01, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x40, 0x00, - 0xe0, 0xc0, - 0xc3, 0xc1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 6 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf0, 0xcc, - 0x7f, 0x88, - 0x01, 0xfe, - 0x00, 0xff, - 0x00, 0xff, - 0xff, 0x02, - 0x01, 0x83, - 0x01, 0x00, - 0x00, 0x01, - 0x00, 0x00, - 0x80, 0x40, - 0xc0, 0x20, - 0x30, 0x48, - 0x1c, 0xa0, - 0x66, 0x91, - 0xfb, 0xf4, - 0x8d, 0x58, - 0x0e, 0x0d, - 0x0f, 0x06, - 0x0f, 0x07, - 0x0f, 0x07, - 0x8f, 0x07, - 0x0f, 0x87, - 0x0f, 0x07, - 0x0f, 0x07, - 0x0f, 0x07, - 0x1f, 0x2f, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfe, - 0xfe, 0xff, - 0xfc, 0xff, - 0xfc, 0xfb, - 0xf8, 0xf7, - 0xf0, 0xff, - 0x7d, 0x32, - 0x1f, 0x04, - 0x03, 0x05, - 0x03, 0x04, - 0x06, 0x01, - 0x0c, 0x03, - 0x1c, 0x0b, - 0x30, 0x1f, - 0xf0, 0x2f, - 0xe0, 0xdf, - 0x60, 0x9f, - 0x60, 0x1f, - 0x01, 0xfe, - 0x03, 0xfd, - 0x06, 0xfb, - 0x0c, 0xf6, - 0xb8, 0x5c, - 0xe0, 0x50, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xf0, - 0x98, 0x1c, - 0x0c, 0x1c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x1c, 0x0c, - 0x1c, 0x3c, - 0xec, 0xd8, - 0x18, 0x1c, - 0x18, 0x18, - 0x30, 0x18, - 0x30, 0x20, - 0x60, 0xc0, - 0x80, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 7 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xfc, 0x03, - 0xff, 0x01, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xfe, - 0x03, 0xfc, - 0xff, 0x0c, - 0xfc, 0x08, - 0x06, 0xfc, - 0x03, 0xfc, - 0x01, 0xfe, - 0x80, 0x7e, - 0xc0, 0x7f, - 0x60, 0x3f, - 0x18, 0x37, - 0x0d, 0x12, - 0xc7, 0x23, - 0xff, 0x7e, - 0x00, 0xf6, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x80, - 0x01, 0x82, - 0x02, 0x81, - 0x02, 0x80, - 0x80, 0x02, - 0x80, 0x01, - 0x03, 0xc1, - 0x47, 0x87, - 0x07, 0x4f, - 0xef, 0x37, - 0x9f, 0x6f, - 0xff, 0x07, - 0x1f, 0x6f, - 0x07, 0x0f, - 0x03, 0x01, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x80, 0x00, - 0xc0, 0x20, - 0x60, 0xb0, - 0x18, 0xb0, - 0x0c, 0xf2, - 0x06, 0xf3, - 0x03, 0xf9, - 0x80, 0x79, - 0xc0, 0xbe, - 0x60, 0xdf, - 0x30, 0x6f, - 0x18, 0x37, - 0x0c, 0x1b, - 0x07, 0x06, - 0x03, 0x01, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x03, - 0x03, 0x03, - 0x06, 0x03, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x07, - 0x07, 0x03, - 0x03, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x88, 0x00, - 0xcc, 0x86, - 0x87, 0x87, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 8 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0x07, 0x03, - 0x0e, 0x19, - 0x18, 0x07, - 0x30, 0x0f, - 0x20, 0x5f, - 0x60, 0x1f, - 0x30, 0x0f, - 0x18, 0x17, - 0x0c, 0x13, - 0x06, 0x01, - 0x03, 0x00, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x04, - 0x0f, 0x06, - 0xfc, 0xff, - 0x0c, 0xf6, - 0x0c, 0xf6, - 0x0c, 0xf6, - 0x0c, 0xfc, - 0x0c, 0xfc, - 0x0c, 0x7c, - 0x6c, 0xbc, - 0xfc, 0x28, - 0xfc, 0x18, - 0xf8, 0x0c, - 0x68, 0x98, - 0xe8, 0x13, - 0x0b, 0xf0, - 0x0f, 0xf8, - 0x0f, 0xfe, - 0x09, 0xf0, - 0x08, 0xf0, - 0x08, 0xf8, - 0x08, 0xf8, - 0x0c, 0xf8, - 0x84, 0xfe, - 0xc6, 0x3b, - 0x63, 0x3c, - 0x30, 0x0f, - 0x18, 0x07, - 0x0c, 0x03, - 0x06, 0x0d, - 0x06, 0x03, - 0x03, 0x01, - 0x01, 0x03, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf0, 0xf0, - 0x18, 0x98, - 0x0c, 0x18, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x1c, - 0x0c, 0x1c, - 0x1c, 0x08, - 0x18, 0x1c, - 0x18, 0x18, - 0x18, 0x30, - 0x30, 0x30, - 0x61, 0x31, - 0xc1, 0xe1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 9 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xe4, - 0xfe, 0xcd, - 0xff, 0xe8, - 0xf8, 0xd7, - 0xfb, 0xc4, - 0xfb, 0xc4, - 0xf8, 0x9f, - 0xf8, 0xcf, - 0xf8, 0xef, - 0xff, 0xe9, - 0xff, 0x58, - 0xfd, 0xfe, - 0xff, 0xf0, - 0xff, 0xb8, - 0xfd, 0x73, - 0xbe, 0x79, - 0xfc, 0x1f, - 0xfe, 0x1d, - 0xfe, 0x3f, - 0xfe, 0x7f, - 0xff, 0xfe, - 0xf9, 0x1e, - 0xf9, 0x12, - 0xf1, 0x60, - 0xc0, 0xe0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0x03, 0x01, - 0x03, 0x06, - 0x06, 0x06, - 0x06, 0x06, - 0x0e, 0x06, - 0x0e, 0x0c, - 0x0c, 0x0e, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x0c, 0x0c, - 0x06, 0x0c, - 0x03, 0x07, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 10 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x07, - 0xff, 0x0f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xf7, - 0xff, 0x8f, - 0xff, 0x1f, - 0xff, 0x3f, - 0xff, 0x7e, - 0xff, 0x3c, - 0xff, 0x39, - 0xff, 0x21, - 0xff, 0xc9, - 0xff, 0xf2, - 0xff, 0x80, - 0xff, 0xa0, - 0xff, 0xc0, - 0xff, 0x80, - 0xf9, 0xc6, - 0xff, 0x78, - 0xff, 0x60, - 0xff, 0xee, - 0xff, 0xfc, - 0xff, 0xff, - 0xff, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf0, 0x60, - 0xf0, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x70, - 0x60, 0x70, - 0x60, 0x60, - 0xc0, 0x40, - 0x80, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 11 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x00, - 0xe7, 0xdb, - 0xff, 0xff, - 0xff, 0xf7, - 0xff, 0xff, - 0xff, 0x2f, - 0xff, 0x3e, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xf3, - 0xff, 0xf7, - 0xff, 0x3f, - 0xff, 0x1f, - 0xff, 0x1b, - 0xff, 0x3b, - 0xff, 0x3b, - 0xff, 0x3f, - 0xff, 0x7f, - 0xff, 0x04, - 0xf6, 0x0d, - 0xff, 0x03, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xe0, - 0xc0, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x0c, 0x1c, - 0xbd, 0x8d, - 0x8e, 0x8e, - 0x8c, 0x9c, - 0x9c, 0x88, - 0x98, 0x98, - 0x18, 0x98, - 0x18, 0x18, - 0x19, 0x18, - 0x1f, 0x3e, - 0x30, 0x10, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x30, - 0x30, 0x60, - 0x60, 0x30, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 12 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0xf2, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xc0, - 0xff, 0x00, - 0xff, 0x1f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfe, - 0xff, 0xf8, - 0xff, 0x80, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x80, - 0xff, 0xe0, - 0xff, 0x80, - 0xff, 0x00, - 0xff, 0x3f, - 0xff, 0x78, - 0xff, 0xe1, - 0xff, 0x36, - 0xfc, 0xe2, - 0x80, 0x40, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x1f, 0x0f, - 0x33, 0x31, - 0x61, 0x61, - 0x61, 0xe1, - 0xc1, 0xe1, - 0xc1, 0xc1, - 0xc3, 0xc1, - 0xc3, 0xc3, - 0xe6, 0x62, - 0x7c, 0x78, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 13 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x0f, - 0x0f, 0x1f, - 0xff, 0xf0, - 0xff, 0xff, - 0xff, 0x1f, - 0xff, 0xe0, - 0xff, 0xe0, - 0xff, 0xe3, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xf8, - 0xff, 0xe0, - 0xff, 0x81, - 0xff, 0x03, - 0xff, 0xdb, - 0xff, 0xe0, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x3f, - 0xff, 0xfc, - 0xff, 0xe0, - 0xff, 0x07, - 0xfe, 0x38, - 0xf0, 0xe8, - 0xc0, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x7c, 0x3c, - 0xce, 0xc6, - 0x86, 0x86, - 0x86, 0x86, - 0x06, 0x86, - 0x06, 0x06, - 0x0c, 0x06, - 0x0c, 0x0c, - 0x98, 0x88, - 0xf0, 0xe0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 14 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc7, 0x39, - 0xff, 0x7f, - 0xff, 0x78, - 0xff, 0x78, - 0xff, 0xc0, - 0xff, 0x81, - 0xff, 0x83, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xe7, - 0xff, 0x9f, - 0xff, 0x7f, - 0xff, 0xfc, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x0b, - 0xff, 0x3d, - 0xff, 0xf8, - 0xff, 0xd8, - 0xff, 0x00, - 0xff, 0xff, - 0xff, 0xfe, - 0xf8, 0xfc, - 0xf0, 0xe0, - 0xc0, 0x80, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf0, 0xf0, - 0x38, 0x18, - 0x18, 0x18, - 0x18, 0x18, - 0x18, 0x18, - 0x30, 0x30, - 0x60, 0xf0, - 0xe1, 0xc1, - 0x71, 0x3b, - 0x1b, 0x3b, - 0x1b, 0x1b, - 0x1b, 0x1b, - 0x33, 0x3b, - 0x63, 0x71, - 0xc1, 0xc1, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 15 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0x90, - 0xff, 0xff, - 0xdf, 0xe0, - 0xf1, 0x8e, - 0xf5, 0x8a, - 0xe1, 0x9e, - 0xeb, 0x94, - 0xfb, 0x04, - 0xff, 0x01, - 0xff, 0x03, - 0xff, 0x23, - 0xff, 0xb3, - 0xff, 0xa0, - 0xff, 0x80, - 0xff, 0x80, - 0xff, 0x81, - 0xff, 0xd0, - 0xff, 0xf3, - 0xff, 0xff, - 0xff, 0xfe, - 0xff, 0xf1, - 0xff, 0xc0, - 0xff, 0xc0, - 0xff, 0xc0, - 0xe7, 0x18, - 0xff, 0x03, - 0xff, 0x0f, - 0x7f, 0xbe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xfb, - 0xff, 0xff, - 0xfe, 0xf6, - 0xfc, 0xfc, - 0xfc, 0xe8, - 0xf8, 0x90, - 0xf0, 0xb8, - 0xe0, 0x70, - 0xe0, 0x40, - 0xc0, 0x80, - 0x80, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x1f, 0x0f, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x0e, - 0x0e, 0x04, - 0x0c, 0x06, - 0x0c, 0x0c, - 0x0f, 0x0f, - 0x0c, 0x0c, - 0x0c, 0x1c, - 0x1c, 0x08, - 0x18, 0x1c, - 0x18, 0x18, - 0x18, 0x18, - 0x3f, 0x3f, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 16 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x00, - 0xc0, 0xe0, - 0xe0, 0xc0, - 0xf0, 0x30, - 0xf8, 0x50, - 0xb8, 0x7c, - 0xfc, 0xf8, - 0xfc, 0xe8, - 0xfc, 0xcc, - 0xfc, 0x8c, - 0xfe, 0xf1, - 0xf3, 0xff, - 0xf3, 0xed, - 0xc3, 0xbd, - 0xcf, 0xf3, - 0xcf, 0xf3, - 0xc7, 0xff, - 0xcf, 0xf7, - 0xef, 0xdf, - 0xff, 0xf9, - 0xff, 0xff, - 0xff, 0x7f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x1f, 0x3f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x1f, 0x0f, - 0x7f, 0xbf, - 0xff, 0xff, - 0xf7, 0x89, - 0xfd, 0xe2, - 0xff, 0xf0, - 0xff, 0xf8, - 0xfe, 0x7d, - 0xff, 0x3e, - 0xff, 0x65, - 0xff, 0x7f, - 0x3f, 0xdf, - 0x7f, 0xbf, - 0xff, 0x3f, - 0xff, 0x7e, - 0xff, 0xfd, - 0xff, 0xfd, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x7e, - 0x3f, 0x3e, - 0x1f, 0x1d, - 0x0f, 0x07, - 0x02, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 17 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x07, 0x08, - 0x1f, 0x0d, - 0x1f, 0x3f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x1f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0d, - 0x0f, 0x07, - 0x03, 0x04, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x0f, 0x17, - 0xbf, 0x5f, - 0xff, 0x7f, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xfe, - 0x7f, 0xb0, - 0xff, 0x71, - 0xff, 0x6e, - 0xfc, 0x73, - 0xc0, 0x80, - 0x01, 0x80, - 0x01, 0x03, - 0x07, 0x02, - 0x07, 0x03, - 0x01, 0x03, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 18 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0xe0, 0x80, - 0xf0, 0xf8, - 0xf8, 0x3c, - 0xfc, 0x7c, - 0xfc, 0x7c, - 0xfc, 0x7e, - 0xff, 0x7e, - 0xfd, 0xfa, - 0xfc, 0xfb, - 0xfc, 0xfb, - 0xf8, 0xff, - 0xf8, 0xf7, - 0xf8, 0xf7, - 0xf8, 0xff, - 0xfc, 0xfb, - 0xfc, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x7e, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 19 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x07, 0x08, - 0x1f, 0x1f, - 0x3f, 0x1f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x3f, - 0x3f, 0x3e, - 0x3f, 0x3e, - 0x3f, 0x1e, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x0f, - 0x07, 0x0f, - 0x07, 0x03, - 0x03, 0x03, - 0x01, 0x03, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00 -}; -#else -const unsigned char b_w = 1; -const unsigned char b_h = 8; -const char b_data[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; -#endif diff --git a/boop/trunk/display/drawDigit.c b/boop/trunk/display/drawDigit.c deleted file mode 100644 index ff9f521..0000000 --- a/boop/trunk/display/drawDigit.c +++ /dev/null @@ -1,127 +0,0 @@ -/********************************************************************** -@file drawDigit.c - -@brief Draw a scalable 7-segment digit - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . ------------------------------------------------------------------------ -@History - -1.00 10012010 RSt Creation - -@end -***********************************************************************/ -#include "global.h" -#include "lcd.h" -#include "drawDigit.h" - - -// |<- w ->| -// | | -// |d|1| w1|1|d| -// ___ ______ -// _ |_a_| _ _2_ ^ -// | | | | | -// d | | f h1 -// |_| ___ |_| ___ h -// _ |_b_| _ 1 -// | | | | -// e | | g | -// |_| ___ |_| v -// |_c_| _2____ -// - -#define DIGIT_SEG_A _BV (0) -#define DIGIT_SEG_B _BV (1) -#define DIGIT_SEG_C _BV (2) -#define DIGIT_SEG_D _BV (3) -#define DIGIT_SEG_E _BV (4) -#define DIGIT_SEG_F _BV (5) -#define DIGIT_SEG_G _BV (6) -#define DIGIT_SEG_H _BV (7) - -const unsigned char digitSegPattern [] = -{ -/* 0 */ DIGIT_SEG_A | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_F | DIGIT_SEG_G, -/* 1 */ DIGIT_SEG_F | DIGIT_SEG_G, -/* 2 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_E | DIGIT_SEG_F , -/* 3 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_F | DIGIT_SEG_G, -/* 4 */ DIGIT_SEG_B | DIGIT_SEG_D | DIGIT_SEG_F | DIGIT_SEG_G, -/* 5 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_G, -/* 6 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_G, -/* 7 */ DIGIT_SEG_A | DIGIT_SEG_F | DIGIT_SEG_G, -/* 8 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_E | DIGIT_SEG_F | DIGIT_SEG_G, -/* 9 */ DIGIT_SEG_A | DIGIT_SEG_B | DIGIT_SEG_C | DIGIT_SEG_D | DIGIT_SEG_F | DIGIT_SEG_G -}; -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawDigit (unsigned char x, unsigned char y, - unsigned char w, unsigned char h, - unsigned char digit, unsigned char d, unsigned char c, unsigned char m) -{ - char w1 = w - 2*d - 2; - char h1 = (h - 5) / 2; - unsigned char i, mode, pattern; - - pattern = 0; - if (digit <= 9) - pattern = digitSegPattern [digit]; - - w1 = max (w1, 3); - h1 = max (h1, 3); - if (!d) - d = DIGIT_BAR_WIDTH; - - for (i = 0; i < 3; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+0)) - mode = m; - draw_block (x + d+1, y + i*(h1+1), - w1, d, - c, mode); - } - for (i = 0; i < 2; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+3)) - mode = m; - draw_block (x, y + d-1 + i*(h1+1), - d, h1, - c, mode); - } - for (i = 0; i < 2; i++) - { - mode = DRAW_ERASE; - if (pattern & _BV (i+5)) - mode = m; - draw_block (x + d + 1 + w1 + 1, y + d-1 + i*(h1+1), - d, h1, - c, mode); - } -} // drawDigit -//----------------------------------------------------------------------------- - - diff --git a/boop/trunk/display/drawDigit.h b/boop/trunk/display/drawDigit.h deleted file mode 100644 index 5bd96e0..0000000 --- a/boop/trunk/display/drawDigit.h +++ /dev/null @@ -1,68 +0,0 @@ -/********************************************************************** -@file drawDigit.h - -@brief Draw a scalable 7-segment digit - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . ------------------------------------------------------------------------ -@History - -1.00 10012010 RSt Creation - -@end -***********************************************************************/ -#ifndef __DRAW_DIGIT_H__ -#define __DRAW_DIGIT_H__ - -#include "global.h" -#include "lcd.h" - -#ifndef DIGIT_BAR_WIDTH -#define DIGIT_BAR_WIDTH 3 -#endif - -// |<- w ->| -// | | -// |d|1| w1|1|d| -// ___ ______ -// _ |_a_| _ _2_ ^ -// | | | | | -// d | | f h1 -// |_| ___ |_| ___ h -// _ |_b_| _ 1 -// | | | | -// e | | g | -// |_| ___ |_| v -// |_c_| _2____ -// - -//----------------------------------------------------------------------------- -void drawDigit (unsigned char x, unsigned char y, - unsigned char w, unsigned char h, - unsigned char digit, unsigned char d, unsigned char c, unsigned char m); -//----------------------------------------------------------------------------- - - -#endif // #ifndef __DRAW_DIGIT_H__ - - - diff --git a/boop/trunk/display/drawIcon.c b/boop/trunk/display/drawIcon.c deleted file mode 100644 index 4467bdb..0000000 --- a/boop/trunk/display/drawIcon.c +++ /dev/null @@ -1,363 +0,0 @@ -/********************************************************************** -@file drawIcon.c - -@brief Draw Black/White and Gray scale icons with or without - Alpha channel (Transparency) - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . ------------------------------------------------------------------------ -@History - -1.00 20012010 RSt Creation - -@end -***********************************************************************/ -#include "global.h" -#include "lcd.h" -#include "icon.h" - - -//----------------------------------------------------------------------------- -// Internally used functions - -static void _drawGray (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char m); - -static void _drawBlackWhite (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m); -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawIcon (unsigned char x, unsigned char y, - const icon_t const *pIcon, unsigned char c, unsigned char m) -{ - if (!pIcon) - return; - - drawIconExt (x, y, pIcon->data, - pIcon->width, pIcon->height, pIcon->info, - c, m); -} // drawIcon -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void drawIconExt (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m) -{ - switch (iconInfo) - { - case ICON_BLACK_WHITE_TRANSPARENT: /// 2 bpp - case ICON_BLACK_WHITE: /// 1 bpp - _drawBlackWhite (x, y, pData, - width, height, iconInfo, - c, m); - break; - - case ICON_GRAY_TRANSPARENT: /// 3 bpp - case ICON_GRAY: /// 2 bpp - _drawGray (x, y, pData, - width, height, iconInfo, - m); - break; - - default: - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - draw_rect (x, y, - width, height, - 1, LCD_COLOR_B, DRAW_XOR); - - break; - } // switch (iconInfo) -} // drawIconExt -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -static void _drawGray (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char m) -{ - unsigned char alphaBuf [LCD_SIZE_X]; - unsigned short ix; - unsigned short iy; - unsigned char iconWidth = width; - unsigned char bpp; - unsigned char* alphaBuf_p; - - if(iconInfo==ICON_GRAY_TRANSPARENT) - { - alphaBuf_p = alphaBuf; - bpp=3; - } - else - { - alphaBuf_p = NULL; - bpp=2; - } - - - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - unsigned short idx = (width * bpp); // 3 byte per pixel - unsigned char s = y & 0x07; - is_drawing++; - if (s) - { - for (ix = 0; ix < width; ix++) - { - alphaBuf [ix] = 0; - drawbuf [1][ix] = 0; - drawbuf [0][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - for (iy = 0; iy < height; iy += 8) - { - // Need to process two icon lines for one drawbuf line - if (iy) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2] >> (8-s); - drawbuf [1][ix] = pData [idx+1] >> (8-s); - drawbuf [0][ix] = pData [idx] >> (8-s); - } // for (ix = 0; ix < width; ix++) - - // go back to end of this page - idx += (width * bpp); // 3bpp - // goto next page - idx += (iconWidth * bpp); // 3bpp - } - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] |= pData [idx+2] << s; - drawbuf [1][ix] |= pData [idx+1] << s; - drawbuf [0][ix] |= pData [idx] << s; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += (width * bpp); // 3bpp - } // for (iy = 0; iy < height; iy += 8) - - /* Pixel in the last page: height & 0x07 - (i.e. 13 hight => 5 pixel in last page) */ - if (((height & 0x07) == 0) || - ((height & 0x07) > (8 - s))) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2] >> (8-s); - drawbuf [1][ix] = pData [idx+1] >> (8-s); - drawbuf [0][ix] = pData [idx] >> (8-s); - } // for (ix = 0; ix < width; ix++) - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - } - } - else - { - for (iy = 0; iy < height; iy += 8) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+2]; - drawbuf [1][ix] = pData [idx+1]; - drawbuf [0][ix] = pData [idx]; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += (width * bpp); // 3bpp - // goto next page - idx += (iconWidth * bpp); // 3bpp - } // for (iy = 0; iy < height; iy += 8) - } // else if (s) - is_drawing--; -} // _drawGrayAlpha -//----------------------------------------------------------------------------- - - -//----------------------------------------------------------------------------- -static void _drawBlackWhite (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m) -{ - unsigned char alphaBuf [LCD_SIZE_X]; - unsigned short ix; - unsigned short iy; - unsigned char iconWidth = width; - unsigned char bpp; - unsigned char* alphaBuf_p; - - if(iconInfo==ICON_BLACK_WHITE_TRANSPARENT) - { - alphaBuf_p = alphaBuf; - bpp=2; - } - else - { - alphaBuf_p = NULL; - bpp=1; - } - - if (x + width > LCD_SIZE_X) - width = LCD_SIZE_X - x; - - if (y + height > LCD_SIZE_Y) - height = LCD_SIZE_Y - y; - - unsigned short idx = width * bpp; // 1 byte per pixel - unsigned char s = y & 0x07; - is_drawing++; - if (s) - { - for (ix = 0; ix < width; ix++) - { - alphaBuf [ix] = 0; - drawbuf [1][ix] = 0; - drawbuf [0][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - for (iy = 0; iy < height; iy += 8) - { - // Need to process two icon lines for one drawbuf line - if (iy) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1] >> (8-s); - if (c & 0x02) - drawbuf [0][ix] = pData [idx] >> (8-s); - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx] >> (8-s); - else - drawbuf [1][ix] = 0; - } // for (ix = 0; ix < width; ix++) - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += width * bpp; // 1bpp - // goto next page - idx += iconWidth * bpp; // 1bpp - } - for (ix = 0; ix < width; ix++) - { - idx -=bpp; - alphaBuf [ix] = pData [idx+1] << s; - if (c & 0x02) - drawbuf [0][ix] |= pData [idx] << s; - - if (c & 0x01) - drawbuf [1][ix] |= pData [idx] << s; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - - // go back to end of this page - idx += width * bpp; // 1bpp - } // for (iy = 0; iy < height; iy += 8) - - /* Pixel in the last page: height & 0x07 - (i.e. 13 hight => 5 pixel in last page) */ - if (((height & 0x07) == 0) || - ((height & 0x07) > (8 - s))) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1] >> (8-s); - if (c & 0x02) - drawbuf [0][ix] = pData [idx] >> (8-s); - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx] >> (8-s); - else - drawbuf [1][ix] = 0; - } // for (ix = 0; ix < width; ix++) - - do_rcuAlpha (x, y+iy, width, m, alphaBuf_p); - } - } - else - { - for (iy = 0; iy < height; iy += 8) - { - for (ix = 0; ix < width; ix++) - { - idx -= bpp; - alphaBuf [ix] = pData [idx+1]; - if (c & 0x02) - drawbuf [0][ix] = pData [idx]; - else - drawbuf [0][ix] = 0; - - if (c & 0x01) - drawbuf [1][ix] = pData [idx]; - else - drawbuf [1][ix] = 0; - } - do_rcuAlpha (x, y+iy, width, m, alphaBuf); - - // go back to end of this page - idx += width * bpp; // 1bpp - // goto next page - idx += iconWidth * bpp; // 1bpp - } // for (iy = 0; iy < height; iy += 8) - } // else if (s) - is_drawing--; -} // _drawBlackWhiteAlpha -//----------------------------------------------------------------------------- - - - - diff --git a/boop/trunk/display/fonts/smooth.bits b/boop/trunk/display/fonts/smooth.bits deleted file mode 100644 index 5bda21c..0000000 --- a/boop/trunk/display/fonts/smooth.bits +++ /dev/null @@ -1,279 +0,0 @@ -const unsigned char smooth_mt_bits[] = { - 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x20, 0x20, - 0xe0, 0x3c, 0x20, 0xe0, 0x3c, 0x20, 0x20, 0xe0, 0xf0, 0x10, 0xfc, 0x10, - 0x30, 0x60, 0x78, 0xfc, 0x84, 0xfc, 0x78, 0x00, 0x80, 0x20, 0x18, 0x84, - 0x80, 0x80, 0x00, 0x80, 0xc0, 0x7c, 0x64, 0xc4, 0x84, 0x0c, 0x00, 0x40, - 0xc0, 0x40, 0x00, 0x3c, 0x3c, 0xe0, 0xf8, 0x0c, 0x04, 0x04, 0x08, 0xf0, - 0x80, 0x00, 0x50, 0x60, 0xfc, 0x60, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc0, 0x78, 0x0c, 0xf0, 0xf8, 0x04, 0x04, 0x04, - 0x0c, 0xf8, 0xc0, 0x08, 0x08, 0xfc, 0xfc, 0x00, 0x00, 0x18, 0x04, 0x04, - 0x04, 0x8c, 0xf8, 0x30, 0x08, 0x04, 0x44, 0x44, 0x44, 0xbc, 0x98, 0x00, - 0x00, 0x80, 0x40, 0x30, 0x08, 0xfc, 0xfc, 0x00, 0x7c, 0x44, 0x44, 0x44, - 0x44, 0x84, 0x00, 0xe0, 0xf8, 0x4c, 0x44, 0x44, 0xc4, 0x8c, 0x00, 0x0c, - 0x04, 0x04, 0x04, 0xc4, 0x74, 0x0c, 0x00, 0x10, 0xb8, 0x44, 0x44, 0x44, - 0xfc, 0xb8, 0x00, 0x70, 0xf8, 0x04, 0x04, 0x04, 0x8c, 0xf8, 0xc0, 0xc0, - 0x00, 0x00, 0xc0, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x40, 0x20, 0x20, - 0x30, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x30, 0x20, - 0x20, 0x40, 0x40, 0xc0, 0x80, 0x80, 0x80, 0x08, 0x04, 0x84, 0x84, 0xc4, - 0x78, 0x10, 0x80, 0xc0, 0x20, 0x10, 0x80, 0xc8, 0x48, 0x08, 0x88, 0x90, - 0x10, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x1c, 0xf8, 0xc0, - 0x00, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0xc4, 0x78, 0x30, - 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x18, 0x00, 0x04, 0xfc, - 0xfc, 0x04, 0x04, 0x04, 0x04, 0x08, 0xf0, 0xe0, 0x04, 0x04, 0xfc, 0xfc, - 0x84, 0x84, 0x84, 0xe4, 0x0c, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0x84, - 0xe4, 0x0c, 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x00, - 0x04, 0xfc, 0xfc, 0x84, 0x80, 0x80, 0x80, 0x84, 0xfc, 0xfc, 0x04, 0x04, - 0xfc, 0xfc, 0x04, 0x00, 0x00, 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0xfc, - 0xfc, 0xc4, 0x20, 0x20, 0x14, 0x0c, 0x04, 0x04, 0x00, 0x04, 0xfc, 0xfc, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xfc, 0x1c, 0x38, 0xf0, 0xc0, - 0x00, 0x00, 0x80, 0x60, 0x18, 0xfc, 0xfc, 0x04, 0x04, 0xfc, 0x1c, 0x38, - 0x60, 0xc0, 0x80, 0x00, 0x04, 0xfc, 0x04, 0x04, 0xe0, 0xf0, 0x08, 0x04, - 0x04, 0x04, 0x04, 0x04, 0x18, 0xf0, 0x80, 0x04, 0xfc, 0xfc, 0x84, 0x84, - 0x84, 0xc4, 0x78, 0x30, 0xe0, 0xf0, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x18, 0xf0, 0x80, 0x04, 0xfc, 0xfc, 0x84, 0x84, 0x84, 0x84, 0x7c, 0x38, - 0x00, 0x00, 0x38, 0x7c, 0xc4, 0x84, 0x84, 0x84, 0x1c, 0x18, 0x0c, 0x04, - 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0x04, 0x0c, 0x04, 0xfc, 0xfc, 0x04, - 0x00, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x04, 0x04, 0x0c, 0x3c, 0xe4, 0x80, - 0x00, 0x00, 0x80, 0x64, 0x0c, 0x04, 0x04, 0x0c, 0xfc, 0xc4, 0x00, 0x00, - 0xe0, 0x1c, 0x7c, 0xc0, 0x00, 0x00, 0xe4, 0x1c, 0x04, 0x04, 0x04, 0x1c, - 0x7c, 0xe0, 0xc0, 0x34, 0x0c, 0x04, 0x04, 0x04, 0x0c, 0x1c, 0x74, 0xe0, - 0x80, 0x40, 0x14, 0x0c, 0x04, 0x0c, 0x04, 0x04, 0x84, 0xc4, 0x74, 0x3c, - 0x0c, 0x04, 0xfc, 0xfc, 0x04, 0x00, 0x0c, 0x78, 0xc0, 0x00, 0x00, 0x04, - 0x04, 0xfc, 0xfc, 0x20, 0x10, 0x18, 0x0c, 0x04, 0x0c, 0x10, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x40, - 0x60, 0x20, 0x20, 0x20, 0xc0, 0x80, 0x00, 0x00, 0x04, 0xfc, 0xfc, 0x20, - 0x20, 0x20, 0xc0, 0x80, 0x80, 0xc0, 0x20, 0x20, 0x20, 0x20, 0x40, 0x80, - 0xc0, 0x20, 0x20, 0x24, 0xfc, 0xfc, 0x00, 0x00, 0x80, 0xc0, 0x20, 0x20, - 0x20, 0x20, 0xc0, 0x00, 0x20, 0xf8, 0xfc, 0x24, 0x24, 0x04, 0x00, 0x80, - 0xc0, 0x20, 0x20, 0x20, 0xe0, 0xe0, 0x20, 0x04, 0xfc, 0xfc, 0x20, 0x20, - 0x20, 0xe0, 0x80, 0x00, 0x20, 0xec, 0xe0, 0x00, 0x00, 0x00, 0x20, 0xec, - 0xec, 0x04, 0xfc, 0xfc, 0x00, 0xa0, 0x60, 0x20, 0x20, 0x04, 0xfc, 0xfc, - 0x00, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0xc0, 0x20, 0x20, 0x20, - 0xe0, 0x80, 0x00, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x20, 0xe0, 0x80, 0x00, - 0x80, 0xc0, 0x20, 0x20, 0x20, 0x60, 0xc0, 0x00, 0x20, 0xe0, 0xe0, 0x20, - 0x20, 0x20, 0x60, 0xc0, 0x00, 0x80, 0xc0, 0x20, 0x20, 0x20, 0xe0, 0xe0, - 0x20, 0x20, 0xe0, 0xe0, 0x20, 0x20, 0x60, 0x60, 0xc0, 0xe0, 0x20, 0x20, - 0x60, 0x60, 0x20, 0xf8, 0xf8, 0x20, 0x20, 0x00, 0x20, 0xe0, 0xe0, 0x00, - 0x00, 0x20, 0xe0, 0xe0, 0x00, 0x20, 0x60, 0xe0, 0x20, 0x00, 0x00, 0xa0, - 0x60, 0x20, 0x20, 0x60, 0xe0, 0x20, 0x00, 0x80, 0xe0, 0x80, 0x00, 0x20, - 0xe0, 0x20, 0x20, 0x60, 0xe0, 0x00, 0x80, 0xe0, 0x20, 0x20, 0x20, 0x20, - 0xe0, 0xa0, 0x00, 0x00, 0xa0, 0x60, 0x20, 0x60, 0x60, 0x20, 0x20, 0xe0, - 0xe0, 0x20, 0x00, 0x00, 0xf8, 0x7c, 0x04, 0x04, 0xfc, 0xfc, 0x04, 0x04, - 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x40, 0x6c, 0x20, 0x20, 0x2c, 0xc0, 0x80, 0x00, 0x80, 0xc0, 0x2c, - 0x20, 0x20, 0x6c, 0xc0, 0x00, 0x20, 0xe0, 0xec, 0x00, 0x00, 0x2c, 0xe0, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x39, 0x1c, 0xf9, 0xc0, 0x00, 0x00, - 0x00, 0xe0, 0xf0, 0x08, 0x05, 0x04, 0x04, 0x05, 0x04, 0x18, 0xf0, 0x80, - 0x04, 0xfc, 0xfc, 0x04, 0x01, 0x00, 0x00, 0x05, 0xfc, 0xfc, 0x04, 0x00, - 0x00, 0xf8, 0xfc, 0x04, 0x64, 0xf4, 0x8c, 0x00, 0x00 }; - -const unsigned char smooth_lt_bits[] = { - 0x00, 0x00, 0x00, 0xfc, 0x00, 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0xf8, 0x6c, 0x00, 0xf0, 0x7c, 0x04, 0x00, 0xc0, 0xa0, 0x10, 0xfc, 0x10, - 0x60, 0x10, 0x30, 0x4c, 0x84, 0x4c, 0x30, 0x00, 0x40, 0x70, 0x80, 0x8c, - 0x80, 0x00, 0x00, 0x00, 0xd8, 0x38, 0x4c, 0x84, 0x04, 0x00, 0x0c, 0x00, - 0x40, 0x00, 0x00, 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x00, 0x3c, 0xf8, - 0x40, 0xd8, 0x50, 0x10, 0xfc, 0x10, 0x50, 0xd8, 0x00, 0x00, 0x00, 0x00, - 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb4, 0x14, 0xe0, 0x18, 0x08, 0x04, 0x04, - 0x18, 0xf0, 0x20, 0x10, 0x04, 0xfc, 0x00, 0x00, 0x18, 0x0c, 0x00, 0x00, - 0x04, 0xc4, 0x7c, 0x78, 0x04, 0x08, 0x00, 0x44, 0xe4, 0xe8, 0x38, 0x00, - 0x00, 0x80, 0xe0, 0x00, 0x1c, 0xfc, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x40, - 0x80, 0xc0, 0x80, 0xd0, 0x90, 0x80, 0x04, 0x44, 0x04, 0x88, 0x00, 0x0c, - 0x00, 0x00, 0x00, 0x80, 0xac, 0x1c, 0x04, 0xa8, 0xfc, 0xec, 0x44, 0x44, - 0x28, 0x98, 0x00, 0xf8, 0x8c, 0x8c, 0x04, 0x04, 0x00, 0xf0, 0x20, 0xc0, - 0xc0, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0x00, 0xc0, 0x60, 0x60, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, - 0x60, 0x60, 0xc0, 0x00, 0xc0, 0x80, 0x00, 0x04, 0x08, 0x04, 0x84, 0x0c, - 0x7c, 0x28, 0x00, 0xe0, 0x70, 0x10, 0xd8, 0x00, 0x00, 0x48, 0x80, 0x88, - 0x30, 0x30, 0xe0, 0x80, 0x00, 0x00, 0x80, 0x40, 0x2c, 0x2c, 0x70, 0xa0, - 0x00, 0x00, 0x00, 0x00, 0xfc, 0x84, 0x00, 0x00, 0x84, 0x8c, 0xfc, 0x08, - 0xd0, 0x38, 0x0c, 0x00, 0x00, 0x00, 0x04, 0x08, 0x0c, 0x18, 0x00, 0xfc, - 0x04, 0x00, 0x04, 0x04, 0x08, 0x1c, 0x38, 0xd0, 0x00, 0x00, 0xfc, 0x84, - 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x00, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x1c, 0xd0, 0x38, 0x0c, 0x00, 0x04, 0x00, 0x04, 0x08, 0x1c, 0x18, - 0x00, 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xfc, 0x00, 0x00, - 0x04, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x04, - 0xfc, 0x80, 0xc0, 0x10, 0x08, 0x04, 0x04, 0x00, 0x00, 0x00, 0x04, 0xfc, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0c, 0x7c, 0x60, 0x80, - 0x80, 0x00, 0x00, 0x10, 0x04, 0xfc, 0x04, 0x00, 0x00, 0xfc, 0x0c, 0x30, - 0xf0, 0xc0, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0xd0, 0x38, 0x1c, 0x00, - 0x04, 0x00, 0x04, 0x08, 0x28, 0xf0, 0x60, 0x00, 0x04, 0xfc, 0x00, 0x00, - 0x84, 0x0c, 0xfc, 0x08, 0xd0, 0x38, 0x1c, 0x00, 0x04, 0x00, 0x04, 0x08, - 0x28, 0xf0, 0x60, 0x00, 0x04, 0xfc, 0x00, 0x80, 0x84, 0x84, 0xc8, 0x70, - 0x00, 0x00, 0x70, 0xe8, 0xc4, 0xc0, 0x84, 0x84, 0x88, 0x04, 0x1c, 0x00, - 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x04, 0xfc, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0xfc, 0x00, 0x00, 0x14, 0x7c, 0xf0, 0x40, - 0x00, 0x00, 0x40, 0xb0, 0x14, 0x00, 0x00, 0x14, 0x7c, 0xa0, 0x00, 0x00, - 0x50, 0x2c, 0xb8, 0xa0, 0x00, 0x00, 0x10, 0x24, 0x00, 0x00, 0x0c, 0x0c, - 0x3c, 0xf0, 0xe0, 0x00, 0x1c, 0x04, 0x00, 0x00, 0x04, 0x3c, 0x38, 0xc0, - 0xc0, 0xe0, 0x3c, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x60, 0x1c, - 0x1c, 0x00, 0xfc, 0x04, 0x00, 0x04, 0x14, 0xb4, 0xa0, 0x00, 0x00, 0x00, - 0x00, 0xfc, 0x00, 0x20, 0x30, 0x08, 0x0c, 0x0c, 0x18, 0x18, 0x10, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x08, 0x20, - 0x20, 0x20, 0x20, 0x60, 0xe0, 0x40, 0x00, 0x04, 0x00, 0xfc, 0x40, 0x00, - 0x00, 0x20, 0x60, 0xc0, 0xc0, 0x60, 0x60, 0x20, 0x20, 0x40, 0x20, 0xc0, - 0x60, 0x20, 0x00, 0x00, 0x44, 0xfc, 0x00, 0x00, 0xc0, 0x60, 0x60, 0x20, - 0x20, 0x40, 0xc0, 0x80, 0x00, 0xfc, 0x24, 0x04, 0x04, 0x04, 0x04, 0xc0, - 0x60, 0x20, 0x00, 0x00, 0x40, 0xe0, 0x00, 0x00, 0xfc, 0x40, 0x00, 0x00, - 0x60, 0xc0, 0x40, 0x00, 0x00, 0xe4, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x24, - 0xe4, 0x00, 0xfc, 0x00, 0x80, 0x40, 0x20, 0x20, 0x00, 0x00, 0xfc, 0x00, - 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0xc0, 0x40, 0x00, 0x00, 0x60, - 0xc0, 0x40, 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x60, 0xc0, 0x40, 0x00, - 0xc0, 0x60, 0x60, 0x20, 0x20, 0x00, 0xc0, 0x80, 0x00, 0xe0, 0x40, 0x40, - 0x00, 0x20, 0x00, 0xc0, 0x80, 0xc0, 0x60, 0x20, 0x00, 0x00, 0x40, 0xe0, - 0x00, 0x00, 0xe0, 0x40, 0x00, 0x00, 0x20, 0x60, 0xc0, 0x80, 0x20, 0x20, - 0x20, 0x40, 0x00, 0xfc, 0x24, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xa0, 0xe0, 0x80, 0x00, 0x00, 0x00, - 0xa0, 0x00, 0x00, 0xa0, 0xe0, 0x00, 0x00, 0x40, 0x60, 0x40, 0x00, 0x80, - 0x60, 0x20, 0x20, 0x20, 0xe0, 0x80, 0x00, 0x20, 0x60, 0x00, 0x00, 0x60, - 0xe0, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x60, 0x20, 0x00, 0x80, 0xa0, - 0x60, 0x60, 0x00, 0x80, 0xfc, 0x84, 0x04, 0x00, 0xfc, 0x00, 0x00, 0x04, - 0x78, 0x88, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x20, 0x24, 0x2c, 0x20, 0x64, 0xec, 0x40, 0x00, 0xc0, 0x6c, 0x64, - 0x20, 0x2c, 0x04, 0xc0, 0x80, 0x00, 0xec, 0x04, 0x00, 0x0c, 0x04, 0xe0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x55, 0x2c, 0x75, 0xa1, 0x00, 0x00, - 0x00, 0xd0, 0x38, 0x1c, 0x00, 0x05, 0x00, 0x04, 0x09, 0x28, 0xf0, 0x60, - 0x00, 0x04, 0xfc, 0x01, 0x00, 0x00, 0x01, 0x00, 0x04, 0xfc, 0x00, 0x00, - 0x00, 0xf8, 0x00, 0x04, 0xf4, 0x9c, 0x08, 0x08, 0x00 }; - -const unsigned char smooth_mb_bits[] = { - 0x00, 0x00, 0x00, 0x1b, 0x03, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1e, - 0x03, 0x02, 0x1e, 0x03, 0x02, 0x02, 0x00, 0x08, 0x19, 0x11, 0xff, 0x12, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x08, 0x04, 0x01, 0x00, 0x06, 0x0f, 0x10, - 0x10, 0x1f, 0x0f, 0x07, 0x0c, 0x10, 0x10, 0x10, 0x11, 0x13, 0x0e, 0x1e, - 0x11, 0x10, 0x10, 0x00, 0x00, 0x0f, 0x1f, 0x20, 0x40, 0x40, 0x30, 0x1f, - 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0x1f, 0x1f, 0x01, 0x01, 0x01, 0x20, 0x38, 0x08, 0x01, 0x01, 0x01, 0x01, - 0x18, 0x00, 0x30, 0x1e, 0x03, 0x00, 0x00, 0x07, 0x0f, 0x10, 0x10, 0x10, - 0x18, 0x0f, 0x01, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x18, 0x1c, 0x16, - 0x13, 0x11, 0x10, 0x18, 0x0c, 0x10, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x02, - 0x03, 0x02, 0x02, 0x12, 0x12, 0x1f, 0x1f, 0x12, 0x0c, 0x10, 0x10, 0x10, - 0x10, 0x0f, 0x07, 0x07, 0x0f, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x02, 0x00, - 0x00, 0x18, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x10, 0x10, 0x10, - 0x18, 0x0f, 0x02, 0x00, 0x18, 0x11, 0x11, 0x11, 0x08, 0x07, 0x00, 0x18, - 0x00, 0x00, 0x38, 0x08, 0x01, 0x01, 0x02, 0x02, 0x06, 0x04, 0x04, 0x0c, - 0x08, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x08, 0x0c, - 0x04, 0x04, 0x06, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x1b, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0x3f, 0x20, 0x42, 0x8f, 0x98, 0x90, 0x90, 0x9f, 0x1f, - 0x10, 0x08, 0x07, 0x01, 0x10, 0x18, 0x13, 0x02, 0x02, 0x02, 0x02, 0x13, - 0x1e, 0x18, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x1f, 0x0e, - 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x18, 0x0c, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x03, 0x10, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x10, 0x11, 0x18, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x00, 0x00, - 0x01, 0x00, 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x11, 0x1f, 0x0f, - 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, - 0x1f, 0x1f, 0x10, 0xc0, 0x80, 0x80, 0x80, 0x7f, 0x3f, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x01, 0x02, 0x0c, 0x1c, 0x18, 0x10, 0x00, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x1c, 0x10, 0x1f, 0x10, 0x10, 0x00, 0x01, - 0x07, 0x06, 0x01, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x1f, 0x10, 0x10, - 0x00, 0x00, 0x03, 0x06, 0x0c, 0x1f, 0x00, 0x00, 0x03, 0x07, 0x08, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x08, 0x10, 0x10, 0x10, 0x30, 0x50, - 0x4c, 0x07, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x01, 0x07, 0x1c, - 0x10, 0x00, 0x0c, 0x1c, 0x10, 0x10, 0x10, 0x11, 0x0f, 0x0f, 0x00, 0x00, - 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x18, - 0x10, 0x10, 0x10, 0x10, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, - 0x1c, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1e, 0x0e, - 0x00, 0x00, 0x00, 0x07, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x10, 0x10, 0x1c, - 0x12, 0x01, 0x03, 0x17, 0x1c, 0x18, 0x10, 0x00, 0x00, 0x00, 0x10, 0x1f, - 0x1f, 0x10, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x16, 0x13, 0x10, 0x10, 0x10, - 0x10, 0x18, 0x7f, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x30, 0x40, - 0x40, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0e, - 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, - 0x10, 0x10, 0x0f, 0x07, 0x07, 0x0f, 0x10, 0x10, 0x10, 0x08, 0x04, 0x07, - 0x0f, 0x10, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x07, 0x0f, 0x11, 0x11, - 0x11, 0x11, 0x0d, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x47, - 0xcf, 0x90, 0x90, 0x90, 0xff, 0x7f, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, - 0x10, 0x1f, 0x1f, 0x10, 0x10, 0x1f, 0x1f, 0x10, 0xc0, 0x80, 0x80, 0xff, - 0x7f, 0x10, 0x1f, 0x1f, 0x11, 0x12, 0x1c, 0x18, 0x10, 0x10, 0x1f, 0x1f, - 0x10, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, - 0x1f, 0x1f, 0x00, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x10, 0x1f, 0x1f, 0x10, - 0x07, 0x0f, 0x10, 0x10, 0x10, 0x18, 0x0f, 0x03, 0x80, 0xff, 0xff, 0x90, - 0x10, 0x10, 0x18, 0x0f, 0x03, 0x07, 0x0f, 0x10, 0x10, 0x90, 0xff, 0xff, - 0x80, 0x10, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x18, 0x19, 0x13, 0x13, - 0x1e, 0x0e, 0x00, 0x0f, 0x1f, 0x10, 0x18, 0x08, 0x00, 0x0f, 0x1f, 0x10, - 0x10, 0x00, 0x1f, 0x1f, 0x10, 0x00, 0x00, 0x01, 0x07, 0x1c, 0x0c, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x1e, 0x1c, 0x03, 0x00, 0x0f, 0x1c, 0x07, - 0x00, 0x00, 0x10, 0x18, 0x14, 0x03, 0x17, 0x1c, 0x18, 0x10, 0x00, 0xc0, - 0x80, 0xc7, 0x3c, 0x0c, 0x01, 0x00, 0x00, 0x10, 0x1c, 0x1e, 0x13, 0x11, - 0x10, 0x18, 0x01, 0x01, 0x7e, 0xfc, 0x80, 0x80, 0xff, 0xff, 0x80, 0x80, - 0xfe, 0x3f, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, - 0x00, 0x0e, 0x1f, 0x11, 0x11, 0x11, 0x1f, 0x1f, 0x10, 0x07, 0x0f, 0x10, - 0x10, 0x10, 0x18, 0x0f, 0x03, 0x00, 0x0f, 0x1f, 0x10, 0x10, 0x00, 0x1f, - 0x1f, 0x10, 0x10, 0x18, 0x17, 0x03, 0x02, 0x02, 0x02, 0x17, 0x1e, 0x18, - 0x10, 0x03, 0x07, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x0c, 0x07, 0x00, - 0x00, 0x03, 0x0f, 0x18, 0x10, 0x10, 0x10, 0x10, 0x0f, 0x07, 0x00, 0x00, - 0x10, 0x1f, 0x1f, 0x18, 0x10, 0x10, 0x11, 0x1b, 0x0e }; - -const unsigned char smooth_lb_bits[] = { - 0x00, 0x00, 0x00, 0x1b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, - 0x07, 0x00, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x19, 0x11, 0x13, 0xff, 0x13, - 0x06, 0x0e, 0x00, 0x00, 0x10, 0x10, 0x02, 0x02, 0x00, 0x09, 0x1f, 0x19, - 0x10, 0x09, 0x06, 0x0f, 0x1b, 0x08, 0x10, 0x01, 0x13, 0x0e, 0x0c, 0x0c, - 0x1a, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0x40, 0x00, 0x00, 0x68, 0x3f, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1f, 0x01, 0x00, 0x00, 0x00, 0x50, 0x18, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x18, 0x28, 0x2d, 0x05, 0x00, 0x00, 0x03, 0x0c, 0x08, 0x10, 0x10, - 0x0c, 0x07, 0x02, 0x10, 0x10, 0x1f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, - 0x18, 0x18, 0x18, 0x1c, 0x1c, 0x08, 0x10, 0x00, 0x10, 0x01, 0x0f, 0x05, - 0x02, 0x03, 0x00, 0x10, 0x10, 0x1f, 0x12, 0x10, 0x1c, 0x18, 0x10, 0x10, - 0x18, 0x18, 0x0f, 0x03, 0x18, 0x08, 0x00, 0x10, 0x00, 0x0f, 0x05, 0x00, - 0x00, 0x10, 0x15, 0x03, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x18, 0x10, 0x10, - 0x00, 0x1f, 0x05, 0x00, 0x01, 0x11, 0x11, 0x10, 0x1d, 0x0f, 0x03, 0x18, - 0x18, 0x60, 0x38, 0x10, 0x01, 0x03, 0x03, 0x06, 0x00, 0x06, 0x0c, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x06, 0x00, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x1f, 0x18, 0x00, - 0x00, 0x00, 0x17, 0x18, 0x60, 0x45, 0x5f, 0x00, 0x90, 0x00, 0x08, 0xdf, - 0x40, 0x0c, 0x0f, 0x02, 0x00, 0x1c, 0x06, 0x03, 0x02, 0x02, 0x03, 0x07, - 0x1f, 0x14, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x10, 0x11, 0x09, 0x07, - 0x05, 0x0e, 0x18, 0x00, 0x00, 0x10, 0x10, 0x00, 0x0c, 0x04, 0x00, 0x1f, - 0x10, 0x00, 0x10, 0x10, 0x08, 0x1c, 0x0e, 0x05, 0x00, 0x10, 0x1f, 0x10, - 0x10, 0x10, 0x10, 0x11, 0x1c, 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x05, 0x0e, 0x1c, 0x08, 0x10, 0x00, 0x11, 0x10, 0x01, 0x0f, - 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x00, 0x00, - 0x10, 0x1f, 0x00, 0x40, 0x80, 0x80, 0xc0, 0xff, 0x40, 0x00, 0x00, 0x10, - 0x1f, 0x01, 0x03, 0x07, 0x06, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1f, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x18, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x06, 0x02, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x1f, 0x00, 0x00, - 0x00, 0x01, 0x01, 0x07, 0x1c, 0x1f, 0x00, 0x00, 0x05, 0x0e, 0x1c, 0x00, - 0x10, 0x00, 0x10, 0x08, 0x0a, 0x07, 0x03, 0x00, 0x10, 0x1f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x06, 0x1c, 0x00, 0x10, 0x30, 0x30, 0x08, - 0x0a, 0x07, 0x03, 0x00, 0x10, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1a, - 0x10, 0x10, 0x1c, 0x08, 0x10, 0x10, 0x01, 0x11, 0x1b, 0x06, 0x00, 0x00, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0f, 0x04, - 0x10, 0x00, 0x10, 0x18, 0x1c, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x02, 0x17, - 0x1a, 0x1a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0b, 0x1d, 0x15, - 0x01, 0x00, 0x00, 0x0b, 0x1d, 0x15, 0x01, 0x00, 0x00, 0x00, 0x18, 0x18, - 0x07, 0x00, 0x01, 0x0e, 0x1e, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10, - 0x1f, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x1f, 0x11, 0x11, 0x10, 0x10, - 0x10, 0x1c, 0x7f, 0x40, 0x00, 0x40, 0x00, 0x00, 0x05, 0x2d, 0x28, 0x00, - 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x1a, 0x11, 0x01, 0x08, 0x1f, 0x10, 0x00, 0x10, 0x00, 0x1f, 0x08, 0x00, - 0x00, 0x10, 0x18, 0x0f, 0x0f, 0x18, 0x18, 0x10, 0x10, 0x14, 0x0c, 0x0f, - 0x18, 0x10, 0x00, 0x00, 0x08, 0x1f, 0x00, 0x10, 0x0b, 0x1d, 0x18, 0x10, - 0x10, 0x08, 0x09, 0x05, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x8f, - 0x98, 0x90, 0x80, 0x80, 0x48, 0x3f, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, - 0x00, 0x1f, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x40, 0x80, 0x80, 0x40, - 0x7f, 0x00, 0x1f, 0x12, 0x03, 0x07, 0x1c, 0x10, 0x10, 0x00, 0x1f, 0x10, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x00, 0x10, 0x00, - 0x1f, 0x10, 0x10, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x10, 0x00, - 0x0f, 0x1c, 0x18, 0x10, 0x10, 0x00, 0x0f, 0x04, 0x00, 0xff, 0x88, 0x08, - 0x00, 0x10, 0x00, 0x0f, 0x04, 0x0f, 0x18, 0x10, 0x00, 0x00, 0x88, 0xff, - 0x00, 0x00, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x09, 0x11, 0x11, 0x12, - 0x07, 0x0c, 0x00, 0x1f, 0x10, 0x10, 0x18, 0x00, 0x00, 0x1f, 0x18, 0x10, - 0x00, 0x18, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1a, 0x1a, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x18, 0x04, 0x01, 0x17, 0x18, 0x0a, - 0x01, 0x00, 0x00, 0x10, 0x0b, 0x03, 0x07, 0x1c, 0x10, 0x10, 0x00, 0xc0, - 0x81, 0x0b, 0x5e, 0x06, 0x03, 0x00, 0x00, 0x18, 0x18, 0x16, 0x17, 0x13, - 0x10, 0x18, 0x01, 0x03, 0x7f, 0x42, 0x80, 0x00, 0xff, 0x00, 0x00, 0xc0, - 0x7c, 0x42, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x01, 0x0c, 0x1a, 0x11, 0x01, 0x08, 0x1f, 0x10, 0x00, 0x0f, 0x1c, 0x18, - 0x10, 0x10, 0x00, 0x0f, 0x04, 0x00, 0x1f, 0x18, 0x10, 0x00, 0x18, 0x1f, - 0x10, 0x00, 0x00, 0x14, 0x1e, 0x12, 0x02, 0x02, 0x03, 0x03, 0x1f, 0x14, - 0x00, 0x05, 0x0e, 0x1c, 0x00, 0x10, 0x00, 0x10, 0x08, 0x0a, 0x07, 0x03, - 0x00, 0x04, 0x0f, 0x04, 0x10, 0x00, 0x10, 0x18, 0x1c, 0x0f, 0x00, 0x10, - 0x00, 0x1f, 0x00, 0x08, 0x10, 0x11, 0x11, 0x07, 0x0f }; diff --git a/boop/trunk/display/fonts/smooth.info b/boop/trunk/display/fonts/smooth.info deleted file mode 100644 index 75389f2..0000000 --- a/boop/trunk/display/fonts/smooth.info +++ /dev/null @@ -1,17 +0,0 @@ -const unsigned char smooth_info[] = { - 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 4,10, 7,13,12, 2, 4, 4, 7, 9, 3, 4, 2, 5, - 8, 5, 8, 8, 8, 7, 8, 8, 8, 8, 2, 3, 9, 9, 9, 7, - -14,11, 9,10,10, 9, 9,10,11, 4, 7,10,10,14,12,11, - 9,11,11, 8,10,11,11,15,10,10, 9, 4, 5, 4, 9, 7, - - 4, 8, 9, 7, 9, 8, 7, 8, 9, 4, 5, 8, 4,14, 9, 8, - 9, 8, 7, 6, 6, 9, 9,12, 8, 9, 7, 6, 2, 6, 9, 0, - - 8, 8, 9,11, 11, 11, 10 -}; - -const unsigned char smooth_dlines = 2; diff --git a/boop/trunk/display/fonty.c b/boop/trunk/display/fonty.c deleted file mode 100644 index 1700988..0000000 --- a/boop/trunk/display/fonty.c +++ /dev/null @@ -1,636 +0,0 @@ -/* - fonty.c - drawing text & font handling - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "global.h" - -#include "fonts/charset.info" -#include "fonts/charset.bits" - -#include "fonts/smooth.info" -#include "fonts/smooth.bits" - -extern unsigned char drawbuf[2][128]; -extern unsigned int is_drawing; - -static unsigned char tx, ty, coff, dbl; -unsigned char *font_bits, *font_info, font_dlines; -unsigned char *font_bitsUM, *font_bitsUL, *font_bitsMM, *font_bitsML, *font_bitsLM, *font_bitsLL; -unsigned char activefont; - -void set_font(unsigned char f) -{ - activefont = f; - switch(f) - { - case SMOOTHFONT: - coff = 0; - dbl = 16; - font_info = (unsigned char*) smooth_info; - font_bitsUM = (unsigned char*) smooth_mt_bits; - font_bitsUL = (unsigned char*) smooth_lt_bits; - font_bitsLM = (unsigned char*) smooth_mb_bits; - font_bitsLL = (unsigned char*) smooth_lb_bits; - font_dlines = smooth_dlines; - break; - case BOLDDOUBLEFONT: - coff = 96; - dbl = 1; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - case BOLDFONT: - coff = 96; - dbl = 0; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - case DOUBLEFONT: - coff = 0; - dbl = 1; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - default: - coff = 0; - dbl = 0; - font_bits = (unsigned char*) charset_bits; - font_info = (unsigned char*) charset_info; - font_dlines = charset_dlines; - break; - } -} - -void _draw_char(unsigned int ch, unsigned char c, unsigned char m) -{ - unsigned char p,q,r,s,t; - unsigned int cpos, cnt; - is_drawing++; - - cpos = 0; - - for(cnt=0; cnt>1] & 0x0F); - } - else - { - cpos += (font_info[cnt>>1] >> 4); - } - } - - p = font_info[ch>>1]; - if(ch & 0x01) - { - p &= 0x0F; - } - else - { - p >>= 4; - } - - if(dbl == 1) - { - if(ty & 0x07) - { - t = ty & 0x07; - p <<= 1; - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q << t; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q << t; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q >> (8-t); - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q >> (8-t); - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q << t; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q << t; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q >> (8-t); - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q >> (8-t); - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+16,p,m); - - } // if (ty & 0x07) - else - { - p <<= 1; - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x01) - q += 0x03;; - if(s & 0x02) - q += 0x0C;; - if(s & 0x04) - q += 0x30;; - if(s & 0x08) - q += 0xC0;; - - if(c & 0x02) - s = q; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty,p,m); - for(cnt=0;cnt>1)]; - q = 0x00; - - if(s & 0x10) - q += 0x03;; - if(s & 0x20) - q += 0x0C;; - if(s & 0x40) - q += 0x30;; - if(s & 0x80) - q += 0xC0;; - - if(c & 0x02) - s = q; - else - s = 0x00; - drawbuf[0][r] = s; - drawbuf[0][r-1] = s; - - if(c & 0x01) - s = q; - else - s = 0x00; - drawbuf[1][r] = s; - drawbuf[1][r-1] = s; - } - do_rcu(tx,ty+8,p,m); - } // else if (ty & 0x07) - tx += p+2; - } // if (dbl == 1) - else - { - if(ty & 0x07) - { - s = ty & 0x07; - - for(cnt=0;cnt> (8-s); - else - drawbuf[0][p-cnt-1] = 0x00; - - if(c & 0x01) - drawbuf[1][p-cnt-1] = font_bits[cpos+cnt] >> (8-s); - else - drawbuf[1][p-cnt-1] = 0x00; - } - do_rcu(tx,ty+8,p,m); - } // if (ty & 0x07) - else - { - for(cnt=0;cnt> (8-s); - drawbuf[1][p-cnt-1] = font_bitsUL[cpos+cnt] >> (8-s); - } - do_rcu (tx,ty+8,p,m); - for (cnt=0;cnt> (8-s); - drawbuf[1][p-cnt-1] = font_bitsLL[cpos+cnt] >> (8-s); - } - do_rcu (tx,ty+16,p,m); - } // if (ty & 0x07) - else - { - for(cnt=0;cnt>1]; - if((st[cp]+coff) & 0x01) - { - p &= 0x0F; - } - else - { - p >>= 4; - } - p +=1; - if(dbl == 1) - p <<= 1; - } - else - { - p = font_info[(unsigned char)(st[cp]+coff)]; - p+=1; - } - } - width += p; - cp++; - } - width=max(width,prevwidth); - if (width) - width--; - return width; -} - -unsigned short get_stringheight (const char *st) -{ - unsigned char cp; - unsigned short height; - - if(!dbl) - height = 8; - else - height = 16; - - cp = 0; - - while(st[cp] != 0) - { - if(st[cp] == '\n') - { - if(!dbl) - height += 9; - else - height += 18; - } - cp++; - } - - return height; -} - -extern char hval[16]; - -void draw_hexC(unsigned char x, unsigned char y, const unsigned char v, unsigned char c, unsigned char m) -{ - is_drawing++; - tx = x; - ty = y; - _draw_char(hval[v>>4]+coff, c, m); - _draw_char(hval[v & 0x0F]+coff, c, m); - is_drawing--; -} - -void draw_hexS(unsigned char x, unsigned char y, const unsigned short v, unsigned char c, unsigned char m) -{ - is_drawing++; - tx = x; - ty = y; - draw_hexC(x, y, v >> 8, c, m); - draw_hexC(tx, ty, v & 0xFF, c, m); - is_drawing--; -} - -void draw_hexW(unsigned char x, unsigned char y, const unsigned long v, unsigned char c, unsigned char m) -{ - is_drawing++; - draw_hexS(x, y, v >> 16, c, m); - draw_hexS(tx, ty, v & 0xFFFF, c, m); - is_drawing--; -} - -static unsigned long u_longval; -static unsigned char pos, inc; -static unsigned char num[12]; - -void get_digit(unsigned long tval) -{ - unsigned char count; - count = 0; - while(u_longval >= tval) - { - count++; - u_longval -= tval; - } - - num[pos] = '0' + count; - if(count) - inc = 1; - pos += inc; -} - -void draw_numU(unsigned char x, unsigned char y, const unsigned long v, unsigned char z, unsigned char c, unsigned char m) -{ - is_drawing++; - pos = 0; - u_longval = v; - - if(z) - inc = 1; - else - inc = 0; - - get_digit(1000000000); - get_digit(100000000); - get_digit(10000000); - get_digit(1000000); - get_digit(100000); - get_digit(10000); - get_digit(1000); - get_digit(100); - get_digit(10); - inc = 1; - get_digit(1); - num[pos] = 0x00; - draw_string(x, y, (char*)num, c, m); - is_drawing--; -} diff --git a/boop/trunk/display/fonty.h b/boop/trunk/display/fonty.h deleted file mode 100644 index 7e35b30..0000000 --- a/boop/trunk/display/fonty.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - fonty.h - drawing text & font handling - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef FONTY_H -#define FONTY_H - -#define SMALLFONT 0 -#define DOUBLEFONT 1 -#define BOLDFONT 2 -#define BOLDDOUBLEFONT 3 -#define SMOOTHFONT 4 - -#define SMALLFONT_HEIGHT 8 -#define DOUBLEFONT_HEIGHT 16 -#define BOLDFONT_HEIGHT 8 -#define BOLDDOUBLEFONT_HEIGHT 16 -#define SMOOTHFONT_HEIGHT 16 - -#define tabstep 24 - -unsigned char activefont; - -void set_font(unsigned char f); -void draw_char(unsigned char x, unsigned char y, unsigned char ch, unsigned char c, unsigned char m); -void draw_string(unsigned char x, unsigned char y, char *st, unsigned char c, unsigned char m); -void draw_hexC(unsigned char x, unsigned char y, const unsigned char v, unsigned char c, unsigned char m); -void draw_hexS(unsigned char x, unsigned char y, const unsigned short v, unsigned char c, unsigned char m); -void draw_hexW(unsigned char x, unsigned char y, const unsigned long v, unsigned char c, unsigned char m); - -void draw_numU(unsigned char x, unsigned char y, const unsigned long v, unsigned char z, unsigned char c, unsigned char m); -unsigned short get_stringwidth (const char *st); -unsigned short get_stringheight (const char *st); - -#endif diff --git a/boop/trunk/display/icon.h b/boop/trunk/display/icon.h deleted file mode 100644 index 02e3da6..0000000 --- a/boop/trunk/display/icon.h +++ /dev/null @@ -1,113 +0,0 @@ -/********************************************************************** -@file icon.c - -@brief Definition of icon structure and appropriate functions - ------------------------------------------------------------------------ -@author 2010 Roman Steiger - LeoTheLoewe [at] gmx [dot] de ------------------------------------------------------------------------ -Following compile flags are usable: - - ------------------------------------------------------------------------ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . ------------------------------------------------------------------------ -@History - -1.00 20012010 RSt Creation - -@end -***********************************************************************/ -#ifndef __ICON_H__ -#define __ICON_H__ - - -/////////////////////////////////////////////////////////////////// -// ICON can be defined in the appropriate C file before -// including that header or the related icon files to define the -// actual type of the icon structure: -// -// >> #define ICON iconElement_t -// -/////////////////////////////////////////////////////////////////// -#ifndef ICON -#define ICON icon_t -#endif - -/////////////////////////////////////////////////////////////////// -// ICON_INFO can be defined in the appropriate C file before -// including that header to save one byte in the icon structure: -// -// >> #define ICON_INFO(i) -// -/////////////////////////////////////////////////////////////////// -#ifndef ICON_INFO -#define ICON_INFO(i) /* info = */ i, -#define ICON_INFO_ELEMENT unsigned char info; // additional one byte (iconType_t might be larger) -#endif - -#ifndef ICON_INFO_ELEMENT -#define ICON_INFO_ELEMENT -//#define ICON_IS_GRAY(i) 0 -#define ICON_IS_GRAY(i) (sizeof(i.data) > (i.height/8 + (i.height%8 ? 1 : 0)) * i.width + 2); -#else -#define ICON_IS_GRAY(i) ((i)->info >= ICON_GRAY) -#endif - -typedef enum iconInfo_e -{ - ICON_BLACK_WHITE, /// 1 bpp - ICON_BLACK_WHITE_TRANSPARENT, /// 2 bpp - ICON_GRAY, /// 2 bpp - ICON_GRAY_TRANSPARENT, /// 3 bpp - - ICON_MAX -} iconInfo_t; - -typedef struct icon_s -{ - unsigned char width; - unsigned char height; - ICON_INFO_ELEMENT - unsigned char data []; -} icon_t, *icon_p; - -typedef struct iconElement_s -{ - unsigned char width; - unsigned char height; - unsigned char data []; -} iconElement_t, *iconElement_p; - -#ifdef __cplusplus -extern "C" { -#endif -//----------------------------------------------------------------------------- - -extern void drawIcon (unsigned char x, unsigned char y, - const icon_t const *pIcon, - unsigned char c, unsigned char m); - -extern void drawIconExt (unsigned char x, unsigned char y, - const unsigned char const *pData, - unsigned char width, unsigned char height, iconInfo_t iconInfo, - unsigned char c, unsigned char m); - -//----------------------------------------------------------------------------- -#ifdef __cplusplus -} -#endif - -#endif // #ifndef __ICON_H__ diff --git a/boop/trunk/display/iconHourglas.h b/boop/trunk/display/iconHourglas.h deleted file mode 100644 index 6e99e15..0000000 --- a/boop/trunk/display/iconHourglas.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, 0x11, - 0x3f, 0x1e, - 0x7f, 0x3a, - 0xff, 0x6a, - 0xff, 0xca, - 0xff, 0xca, - 0x3f, 0x0a, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0xff, 0xca, - 0xff, 0xca, - 0xff, 0x6a, - 0x7f, 0x3a, - 0x3f, 0x1e, - 0x0e, 0x11, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x0f, - 0xfe, 0xfd, - 0x70, 0xb8, - 0xe0, 0x70, - 0xc0, 0xa0, - 0x80, 0x50, - 0x30, 0x80, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x08, - 0x70, 0x88, - 0xb0, 0xc8, - 0xd8, 0x64, - 0x78, 0xe4, - 0x36, 0xf8, - 0xfe, 0xfd, - 0xff, 0x0f, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x80, 0x80, - 0xc1, 0xc0, - 0x61, 0xb3, - 0x3f, 0x12, - 0x1c, 0x0f, - 0x07, 0x00, - 0x1d, 0x0e, - 0x3f, 0x12, - 0x63, 0xb5, - 0xc1, 0xe2, - 0x80, 0xc1, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0x0f, - 0x07, 0x0b, - 0x81, 0x03, - 0xc0, 0x01, - 0xc0, 0x20, - 0xe0, 0x10, - 0xf0, 0x00, - 0xf8, 0x00, - 0xf0, 0x00, - 0xe0, 0x10, - 0xc0, 0x20, - 0xc0, 0x01, - 0x81, 0x03, - 0x03, 0x87, - 0x0e, 0x17, - 0xff, 0x1f, - 0xff, 0xf8, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x70, 0x88, - 0xfc, 0x78, - 0xfe, 0x7c, - 0xff, 0x76, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x74, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x76, - 0xfe, 0x7c, - 0xfc, 0x78, - 0x70, 0x88 - } -}; - - diff --git a/boop/trunk/display/iconHourglas2.h b/boop/trunk/display/iconHourglas2.h deleted file mode 100644 index 2ed6f1a..0000000 --- a/boop/trunk/display/iconHourglas2.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: L:\Betty\Sourcecode\SVN\Betty_sourceforge\boop\trunk\display\Hourglas_2bpp.bmp -// -// ICON_BLACK_WHITE - 1 bpp (Bit per Pixel) -// sizeof (iconHourglas2.data) == 140 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas2 = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_BLACK_WHITE) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, - 0x3f, - 0x7f, - 0xff, - 0xff, - 0xff, - 0x3f, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3b, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0x3f, - 0xff, - 0xff, - 0xff, - 0x7f, - 0x3f, - 0x0e, - //--- Page 1 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xfe, - 0x70, - 0xe0, - 0xc0, - 0x80, - 0x30, - 0xf0, - 0xf0, - 0xf0, - 0xf0, - 0x70, - 0xb0, - 0xd8, - 0x78, - 0x36, - 0xfe, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 2 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x00, - 0x80, - 0xc1, - 0x61, - 0x3f, - 0x1c, - 0x07, - 0x1d, - 0x3f, - 0x63, - 0xc1, - 0x80, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 3 --- - 0x00, - 0x00, - 0x00, - 0x00, - 0xff, - 0xff, - 0xff, - 0x07, - 0x81, - 0xc0, - 0xc0, - 0xe0, - 0xf0, - 0xf8, - 0xf0, - 0xe0, - 0xc0, - 0xc0, - 0x81, - 0x03, - 0x0e, - 0xff, - 0xff, - 0xff, - 0x00, - 0x00, - 0x00, - 0x00, - //--- Page 4 --- - 0x70, - 0xfc, - 0xfe, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xff, - 0xff, - 0xf7, - 0xf7, - 0xf7, - 0xf7, - 0xf7, - 0xff, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xff, - 0xff, - 0xff, - 0xff, - 0xfe, - 0xfc, - 0x70 - } -}; - - diff --git a/boop/trunk/display/iconHourglas2_t.h b/boop/trunk/display/iconHourglas2_t.h deleted file mode 100644 index 75a97ea..0000000 --- a/boop/trunk/display/iconHourglas2_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: L:\Betty\Sourcecode\SVN\Betty_sourceforge\boop\trunk\display\Hourglas_t_3bpp_t.bmp -// -// ICON_BLACK_WHITE_TRANSPARENT - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas2_t.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas2_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_BLACK_WHITE_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x1f, 0x1f, - 0x3f, 0x3f, - 0x7f, 0x7f, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0x3f, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x7f, - 0x3f, 0x3f, - 0x1f, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xf8, 0xff, - 0xf0, 0xff, - 0xe0, 0xff, - 0xd0, 0xff, - 0xb0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf8, 0xff, - 0xf8, 0xff, - 0xf8, 0xff, - 0xfc, 0xff, - 0xfc, 0xff, - 0xfe, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x80, 0x80, - 0xc1, 0xc1, - 0xf3, 0xf3, - 0x3f, 0xff, - 0x1f, 0xff, - 0x07, 0xff, - 0x1f, 0xff, - 0x3f, 0xff, - 0xf7, 0xf7, - 0xe3, 0xe3, - 0xc1, 0xc1, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x0f, 0xff, - 0x83, 0xff, - 0xc1, 0xff, - 0xe0, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xf8, 0xff, - 0xf0, 0xff, - 0xf0, 0xff, - 0xe0, 0xff, - 0xc1, 0xff, - 0x83, 0xff, - 0x87, 0xff, - 0x1f, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0xf8, 0xf8, - 0xfc, 0xfc, - 0xfe, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xfe, 0xfe, - 0xfc, 0xfc, - 0xf8, 0xf8 - } -}; - - diff --git a/boop/trunk/display/iconHourglas_t.h b/boop/trunk/display/iconHourglas_t.h deleted file mode 100644 index d46a555..0000000 --- a/boop/trunk/display/iconHourglas_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconHourglas_t.data) == 420 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x0e, 0x11, 0x1f, - 0x3f, 0x1e, 0x3f, - 0x7f, 0x3a, 0x7f, - 0xff, 0x6a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0x3f, 0x0a, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0x6a, 0xff, - 0x7f, 0x3a, 0x7f, - 0x3f, 0x1e, 0x3f, - 0x0e, 0x11, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x0f, 0xff, - 0xfe, 0xfd, 0xff, - 0x70, 0xb8, 0xff, - 0xe0, 0x70, 0xff, - 0xc0, 0xa0, 0xff, - 0x80, 0x50, 0xff, - 0x30, 0x80, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x08, 0xff, - 0x70, 0x88, 0xff, - 0xb0, 0xc8, 0xff, - 0xd8, 0x64, 0xff, - 0x78, 0xe4, 0xff, - 0x36, 0xf8, 0xff, - 0xfe, 0xfd, 0xff, - 0xff, 0x0f, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x80, 0x80, 0x80, - 0xc1, 0xc0, 0xc1, - 0x61, 0xb3, 0xf3, - 0x3f, 0x12, 0xff, - 0x1c, 0x0f, 0xff, - 0x07, 0x00, 0xff, - 0x1d, 0x0e, 0xff, - 0x3f, 0x12, 0xff, - 0x63, 0xb5, 0xf7, - 0xc1, 0xe2, 0xe3, - 0x80, 0xc1, 0xc1, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xfc, 0xff, - 0xff, 0x0f, 0xff, - 0x07, 0x0b, 0xff, - 0x81, 0x03, 0xff, - 0xc0, 0x01, 0xff, - 0xc0, 0x20, 0xff, - 0xe0, 0x10, 0xff, - 0xf0, 0x00, 0xff, - 0xf8, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xe0, 0x10, 0xff, - 0xc0, 0x20, 0xff, - 0xc0, 0x01, 0xff, - 0x81, 0x03, 0xff, - 0x03, 0x87, 0xff, - 0x0e, 0x17, 0xff, - 0xff, 0x1f, 0xff, - 0xff, 0xf8, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0x70, 0x88, 0xf8, - 0xfc, 0x78, 0xfc, - 0xfe, 0x7c, 0xfe, - 0xff, 0x76, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x76, 0xff, - 0xfe, 0x7c, 0xfe, - 0xfc, 0x78, 0xfc, - 0x70, 0x88, 0xf8 - } -}; - - diff --git a/boop/trunk/display/lcd.c b/boop/trunk/display/lcd.c deleted file mode 100644 index 0b1a02c..0000000 --- a/boop/trunk/display/lcd.c +++ /dev/null @@ -1,1242 +0,0 @@ -/* - lcd.c - lcd control & graphics primitives - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "global.h" -#include "lpc2220.h" -#include "lcd.h" -#include "fonty.h" -#include "boop_logo" -#include "adc.h" -#include "timerfuncs.h" - -unsigned int is_drawing; -volatile unsigned char symbols; -volatile unsigned char oldsymbols; - -void _do_rcu(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -void _do_rcuAlpha (unsigned char x, unsigned char y, unsigned char l, unsigned char m, - unsigned char* alphaBuf); -void _do_rcuS(unsigned char x, unsigned char y, unsigned char m); -void _draw_block(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -void _draw_hline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -void _draw_vline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); - -// Function pointer to section (".text.fastcode") -rcu_fn do_rcu; - -rcuAlpha_fn do_rcuAlpha; - -rcus_fn do_rcuS; -bl_fn draw_block; -ln_fn draw_hline; -ln_fn draw_vline; - - -void pause(unsigned int ptime) -{ - unsigned long xx; - xx = ptime * 1500; - while(xx) - { - xx--; - }; -} - - -void lcd_set(unsigned char s) -{ - is_drawing++; - if(s == 0) - { - LCD_CMD = 0xA0; // set segment remap (00H mapped to seg0) - LCD_CMD = 0xC8; // set com output scan direction (remapped mode) - } - else - { - LCD_CMD = 0xA1; // set segment remap (7FH mapped to seg0) - LCD_CMD = 0xC0; // set com output scan direction (normal mode) - } - is_drawing--; -} - - -// initialise LCD controller SSD1854 -// -// sequence and values disassembled from original firmware -// see http://bettyhacks.com/wiki/index.php/Betty_init -void lcd_init(unsigned char s) -{ - is_drawing = 1; - LCD_CMD = LCD_WAKEUP; // exit power save mode - LCD_CMD = LCD_RESET; // software reset - pause(0x32); - LCD_CMD = LCD_OSC_START; // start internal oscillator - LCD_CMD = LCD_IRRR_8; // set internal regulator resistor ratio (8.1) - LCD_CMD = 0x81; // volume cmd - LCD_CMD = LCD_CONTRAST; // volume cmd value original 0x3F - LCD_CMD = LCD_DCDCx4; // set DC-DC converter factor (4x) - - LCD_CMD = 0x60; // set upper window corner ax cmd - LCD_CMD = 0x1C; // set upper window corner ax value - LCD_CMD = 0x61; // set upper window corner ay cmd - LCD_CMD = 0x0A; // set upper window corner ay value - LCD_CMD = 0x62; // set lower window corner bx cmd - LCD_CMD = 0x75; // set lower window corner bx value - LCD_CMD = 0x63; // set lower window corner by cmd - LCD_CMD = 0x81; // set lower window corner by value - LCD_CMD = 0x90; // set PWM and FRC (4-frames) - - LCD_CMD = 0x88; // set white mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_88; // set white mode frame 2nd and 1st value - LCD_CMD = 0x89; // set white mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_89; // set white mode frame 4th and 3rd value - LCD_CMD = 0x8A; // set light gray mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8A; // set light gray mode frame 2nd and 1st value // originally 33 - LCD_CMD = 0x8B; // set light gray mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8B; // set light gray mode frame 4th and 3rd value // originally 33 - LCD_CMD = 0x8C; // set dark gray mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8C; // set dark gray mode frame 2nd and 1st value // originally 66 - LCD_CMD = 0x8D; // set dark gray mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8D; // set dark gray mode frame 4th and 3rd vakue // originally 66 - LCD_CMD = 0x8E; // set black mode frame 2nd and 1st cmd - LCD_CMD = LCD_GRAYMODE_8E; // set black mode frame 2nd and 1st value // originally 99 - LCD_CMD = 0x8F; // set black mode frame 4th and 3rd cmd - LCD_CMD = LCD_GRAYMODE_8F; // set black mode frame 4th and 3rd value // originally 99 - - LCD_CMD = LCD_DCDCx5; // set DC-DC converter factor (5x) - - lcd_set(s); - - //~ LCD_CMD = 0x2E; // set power control register (boost on, reg on, buffer off) // original - - //~ pause(0x32); // original - - LCD_CMD = 0x2F; // set power control register (boost on, reg on, buffer on) - LCD_CMD = LCD_ALLON; // all black - LCD_CMD = LCD_NORMAL; // set normal display mode, inverse = 0xA7 - - // Function pointer to section (".text.fastcode") - do_rcu = _do_rcu; - do_rcuAlpha = _do_rcuAlpha; - do_rcuS = _do_rcuS; - draw_block = _draw_block; - draw_hline = _draw_hline; - draw_vline = _draw_vline; - - lcd_fill (LCD_COLOR_W); // blank display - - LCD_CMD = LCD_ON; // turn display on - - set_font(SMALLFONT); - - is_drawing--; -} // lcd_init - - -void lcd_enable(unsigned char e) -{ - is_drawing++; - if(e) - LCD_CMD = LCD_ON; // set display on - else - LCD_CMD = LCD_OFF; // set display off - is_drawing--; -} - - -/// \brief set lcd contrast -/// -/// SSD1854 datasheet p.33 -/// Set Contrast Control Register [81] -/// This command adjusts the contrast of the LCD panel by changing VL7 of the LCD drive voltage -/// provided by the On-Chip power circuits. VL7 is set with 64 steps (6-bit) contrast control register. -/// Default value after software reset [E2]: 20H = 32 -void lcd_set_contrast(unsigned char c) -{ - if (c < 64) - { - is_drawing++; - LCD_CMD = 0x81; // volume cmd - LCD_CMD = c; // volume cmd value - is_drawing--; - } -} - - -// set all pixels -// show symbols TODO: those should not be here! -void lcd_fill(unsigned char f) -{ - unsigned char x,y; - - is_drawing++; - //~ - //~ if (f == 0xFF) - //~ { - //~ LCD_CMD = LCD_ALLOFF; - //~ } - //~ else if (f == 0) - //~ { - //~ LCD_CMD = LCD_ALLON; - //~ } - //~ else - //~ { - for(y=0;y<20;y++) - { - LCD_CMD = 0xB0; // Set Page Address - LCD_CMD = y; - LCD_CMD = 0x10; // Set Higher Column Address - LCD_CMD = 0x00; - for(x=0;x<128;x++) - { - LCD_DATA = f; // 4 pixels - LCD_DATA = f; // 4 pixels - } - } - //~ } - is_drawing--; - - showBat(0xff); - refresh_symbols(0xff); -} - -//----------------------------------------------------------------------------- -/** Draw pixel data from boop_logo. - (use bmp2b to generate from 24 bit BMP) - New tool display/GrayScaler.exe for WinXP/Win7 - generate icon files. The data array has the same - format and can be copied in the file boop_logo. - You can also use the new icons instead of the logo. -*/ -void draw_logo(void) -{ - unsigned short f; - unsigned char x,y; - is_drawing++; - f=0; - for(y=0; y>3; y++) - { - LCD_CMD = 0xB0; - LCD_CMD = y; - LCD_CMD = 0x10; - LCD_CMD = 0x00; - for(x=0;x BORDER_RIGHT))// || (x+l < BORDER_LEFT)) - return; - - if (x+l > BORDER_RIGHT + 1) { - unsigned char i; - unsigned char cut; - - cut = x + l - (BORDER_RIGHT + 1); - for(i=0;i> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - q = LCD_DATA; - q = l; - - while(q--) - { - rcubuf[0][q] = LCD_DATA; - rcubuf[1][q] = LCD_DATA; - } - - q = LCD_DATA; - } - - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - if(alphaBuf) - { - q = l; - while(q--) - { - drawbuf[0][q] &= alphaBuf[q]; - drawbuf[1][q] &= alphaBuf[q]; - } - if(m==DRAW_ALPHA) - { - q = l; - while(q--) - { - rcubuf[0][q] &= ~alphaBuf[q]; - rcubuf[1][q] &= ~alphaBuf[q]; - } - } - } - - q = l; - - switch(m) - { - case DRAW_ALPHA: // draw with alpha buffer - case DRAW_PUT: // draw put - while(q--) - { - LCD_DATA = rcubuf[0][q] | drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] | drawbuf[1][q]; - } - break; - case DRAW_XOR: // draw xor - while(q--) - { - LCD_DATA = rcubuf[0][q] ^ drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] ^ drawbuf[1][q]; - } - break; - case DRAW_ERASE: // draw erase - while(q--) - { - LCD_DATA = rcubuf[0][q] & ~drawbuf[0][q]; - LCD_DATA = rcubuf[1][q] & ~drawbuf[1][q]; - } - break; - case DRAW_NORCU: // draw without rcu - while(q--) - { - LCD_DATA = drawbuf[0][q]; - LCD_DATA = drawbuf[1][q]; - } - break; - } - is_drawing--; -} // _do_rcu -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void __attribute__ ((section (".text.fastcode"))) _do_rcuS ( - unsigned char x, unsigned char y, unsigned char m) -{ - unsigned char q; - - - if((x > BORDER_RIGHT))// | (x < BORDER_LEFT)) - return; - - is_drawing++; - - if(m != DRAW_NORCU) - { - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - q = LCD_DATA; - rcubuf[0][0] = LCD_DATA; - rcubuf[1][0] = LCD_DATA; - - q = LCD_DATA; - } - - LCD_CMD = 0xB0; - LCD_CMD = (y >> 3); - LCD_CMD = (0x10 + (x >> 4)); - LCD_CMD = (x & 0x0F); - - switch(m) - { - case DRAW_ALPHA: - case DRAW_PUT: // draw put - LCD_DATA = rcubuf[0][0] | drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] | drawbuf[1][0]; - break; - case DRAW_XOR: // draw xor - LCD_DATA = rcubuf[0][0] ^ drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] ^ drawbuf[1][0]; - break; - case DRAW_ERASE: // draw erase - LCD_DATA = rcubuf[0][0] & ~drawbuf[0][0]; - LCD_DATA = rcubuf[1][0] & ~drawbuf[1][0]; - break; - case DRAW_NORCU: // draw erase - LCD_DATA = drawbuf[0][0]; - LCD_DATA = drawbuf[1][0]; - break; - } - is_drawing--; -} // _do_rcuS -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void __attribute__ ((section(".text.fastcode"))) _draw_block(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m) -{ - unsigned char q,s; - unsigned char yy,ss,vv,ww,xx; - unsigned char segm; - is_drawing++; - - if (x + w > LCD_SIZE_X) - w = LCD_SIZE_X - x; - - s = y; - - if(h) - { - yy = h; - ss = y >> 3; - vv = y & 0x07; - - ww = yy & 0x07; - - segm = 0xFF; - - xx = 8; - if(yy < 8) - { - segm >>= (8-ww); - xx -= (8-ww); - if(vv > (8-xx)) - { - xx = yy -(vv-(8-xx)); - } - else - { - xx = yy; - } - } - else - { - xx -= vv; - } - - segm <<= vv; - - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = segm; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = segm; - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - - yy -= xx; - - while(yy > 8) - { - s += 8; - yy -= 8; - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = 0xFF; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = 0xFF; - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - } - - if(yy) - { - s += 8; - q = w; - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = 0xFF >> (8-yy); - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = 0xFF >> (8-yy); - else - drawbuf[1][q] = 0; - } - do_rcu(x,s,w,m); - } - } - is_drawing--; -} - -void __attribute__ ((section(".text.fastcode"))) _draw_hline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m) -{ - unsigned char p,q; - is_drawing++; - - q = l; - p = 0x01 << (y & 0x07); - - while(q--) - { - if(c & 0x02) - drawbuf[0][q] = p; - else - drawbuf[0][q] = 0; - - if(c & 0x01) - drawbuf[1][q] = p; - else - drawbuf[1][q] = 0; - } - do_rcu(x,y,l,m); - is_drawing--; -} - -void __attribute__ ((section(".text.fastcode"))) _draw_vline(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m) -{ - unsigned char s; - unsigned char yy,ss,vv,ww,xx; - unsigned char segm; - is_drawing++; - - s = y; - - if(l) - { - - - - yy = l; - ss = y >> 3; - vv = y & 0x07; - - ww = yy & 0x07; - - segm = 0xFF; - - xx = 8; - if(yy < 8) - { - segm >>= (8-ww); - xx -= (8-ww); - if(vv > (8-xx)) - { - xx = yy -(vv-(8-xx)); - } - else - { - xx = yy; - } - } - else - { - xx -= vv; - } - - segm <<= vv; - - if(c & 0x02) - drawbuf[0][0] = segm; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = segm; - else - drawbuf[1][0] = 0; - - do_rcuS(x,s,m); - - yy -= xx; - - while(yy > 8) - { - s += 8; - yy -= 8; - if(c & 0x02) - drawbuf[0][0] = 0xFF; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = 0xFF; - else - drawbuf[1][0] = 0; - do_rcuS(x,s,m); - } - - if(yy) - { - s += 8; - if(c & 0x02) - drawbuf[0][0] = 0xFF >> (8-yy); - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = 0xFF >> (8-yy); - else - drawbuf[1][0] = 0; - do_rcuS(x,s,m); - } - } - is_drawing--; -} - -void draw_rect(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char lw, unsigned char c, unsigned char m) -{ - is_drawing++; - if(lw) - { - if(lw == 1) - { - draw_hline(x, y, w, c, m); - draw_hline(x, y+h-1, w, c, m); - - draw_vline(x, y+1, h-2, c, m); - draw_vline(x+w-1, y+1, h-2, c, m); - } - else - { - draw_block(x, y, w, lw, c, m); - draw_block(x, y+h-lw, w, lw, c, m); - draw_block(x, y+lw, lw, h-(2*lw), c, m); - draw_block(x+w-lw, y+lw, lw, h-(2*lw), c, m); - } - } - is_drawing--; -} - -void draw_pixel(unsigned char x, unsigned char y, unsigned char c, unsigned char m) -{ - unsigned char p; - is_drawing++; - - p = 0x01 << (y & 0x07); - - if(c & 0x02) - drawbuf[0][0] = p; - else - drawbuf[0][0] = 0; - - if(c & 0x01) - drawbuf[1][0] = p; - else - drawbuf[1][0] = 0; - - do_rcuS(x,y,m); - is_drawing--; -} - -void draw_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char c, unsigned char m) -{ - unsigned char i,dx,dy,px,py; - unsigned int x,y; - is_drawing++; - - if (y2 > y1) // incl. POSITIVE - { - dx=x2-x1; - dy=y2-y1; - px=x1; - py=y1; - draw_pixel(x1, y1, c, m); // first pixel - if (dx>=dy) // incl. is more horizontal than vertical - { - y = y1; - for(i=0;i=dx) - { - y-=dx; - py+=1; - } - px+=1; - draw_pixel(px, py, c, m); - } - } - else // incl. is more vertical than horizontal - { - x = x1; - for(i=0;i=dy) - { - x-=dy; - px+=1; - } - py+=1; - draw_pixel(px, py, c, m); //?????? - } - }; - } - else if (y2 < y1) // incl. NEGATIVE - { - dx=x2-x1; - dy=y1-y2; // inverted to produce a positive value - dx=dx; - dy=dy; - px=x1; - py=y2; // Note: due to inverted "dy", - draw_pixel(x2, y2, c, m); // the first pixel became the last one - if (dx>=dy) // incl. is more horizontal than vertical - { - y = y1; - py=y1; - for(i=0;i=dx) - { - y-=dx; - py-=1; - } - px+=1; - draw_pixel(px, py, c, m); - } - } - else // incl. is more vertical than horizontal - { - x = x1; - px=x2; - for(i=0;i=dy) - { - x-=dy; - px-=1; - } - py+=1; - draw_pixel(px, py, c, m); - } - }; - } - is_drawing--; -} - -void draw_circle(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - while (x <= y) - { - if(x != 0) - { - draw_pixel(cx + x, cy + y, c, m); - draw_pixel(cx + x, cy - y, c, m); - } - draw_pixel(cx - x, cy + y, c, m); - draw_pixel(cx - x, cy - y, c, m); - - if(x != y) - { - if(x != 0) - { - draw_pixel(cy + y - d, cy + x, c, m); - draw_pixel(cy - y - d, cy + x, c, m); - } - draw_pixel(cy + y - d, cy - x, c, m); - draw_pixel(cy - y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - is_drawing--; -} - -void draw_qcircle(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - - switch(quarter) - { - case TOP_LEFT: - while (x <= y) - { - draw_pixel(cx - x, cy - y, c, m); - - if(x != y) - { - draw_pixel(cy - y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case TOP_RIGHT: - while (x <= y) - { - draw_pixel(cx + x, cy - y, c, m); - - if(x != y) - { - draw_pixel(cy + y - d, cy - x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_LEFT: - while (x <= y) - { - draw_pixel(cx - x, cy + y, c, m); - - if(x != y) - { - draw_pixel(cy - y - d, cy + x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_RIGHT: - while (x <= y) - { - draw_pixel(cx + x, cy + y, c, m); - - if(x != y) - { - draw_pixel(cy + y - d, cy + x, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - } - is_drawing--; -} - -void draw_disc(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - while (x <= y) - { - if(x != y) - { - if(x != 0) - { - draw_hline(cy - y - d, cy + x, (y<<1)+1, c, m); - } - draw_hline(cy - y - d, cy - x, (y<<1)+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy + y, (x<<1)+1, c, m); - draw_hline(cx-x, cy - y, (x<<1)+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - is_drawing--; -} - -void draw_qdisc(unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m) -{ - signed int tswitch; - unsigned char y, x = 0; - unsigned char d; - is_drawing++; - - d = cy - cx; - y = radius; - tswitch = 3 - 2 * radius; - switch(quarter) - { - case TOP_LEFT: - while (x <= y) - { - if(x != y) - { - draw_hline(cy - y - d, cy - x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy - y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case TOP_RIGHT: - while (x <= y) - { - if(x != y) - { - draw_hline(cx, cy - x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx, cy - y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_LEFT: - while (x <= y) - { - if(x != y) - { - draw_hline(cy - y - d, cy + x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx-x, cy + y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - - case BOTTOM_RIGHT: - while (x <= y) - { - if(x != y) - { - draw_hline(cx, cy + x, y+1, c, m); - } - - if (tswitch < 0) - { - tswitch += (4 * x + 6); - } - else - { - draw_hline(cx, cy + y, x+1, c, m); - tswitch += (4 * (x - y) + 10); - y--; - } - x++; - } - break; - } - is_drawing--; -} - - -unsigned char draw_arrow(int x, int y, unsigned char ArrowDir, int ArrowLen, unsigned char Color, unsigned char Mode) -{ - int i; - int Len; - is_drawing++; - - switch(ArrowDir) - { - case ARROW_UP: - for(i=0; i r) - { - draw_block(x, y+r+1, r+1, h-(r<<1)-2,c,m); - draw_block(x+r+1, y+t, t-r-1, h-(t<<1),c,m); - draw_block(x+w-r-1, y+r+1, r+1, h-(r<<1)-2,c,m); - draw_block(x+w-t, y+t, t-r-1, h-(t<<1),c,m); - } - else - { - if(r > t) - { - draw_qdisc(x+r, y+r, r-t, TOP_LEFT, c, DRAW_XOR); - draw_qdisc(x+w-r-1, y+r, r-t, TOP_RIGHT, c, DRAW_XOR); - draw_qdisc(x+r, y+h-r-1, r-t, BOTTOM_LEFT, c, DRAW_XOR); - draw_qdisc(x+w-r-1, y+h-r-1, r-t, BOTTOM_RIGHT, c, DRAW_XOR); - } - draw_block(x, y+r+1, t, h-(r<<1)-2,c,m); - draw_block(x+w-t, y+r+1, t, h-(r<<1)-2,c,m); - } - draw_block(x+r+1, y, w-(r<<1)-2, t, c, m); - draw_block(x+r+1, y+h-t, w-(r<<1)-2, t, c, m); - } - } - is_drawing--; -} - -void draw_symbol (unsigned char x, unsigned char y, unsigned char l, unsigned char* data, unsigned char c, unsigned char m) -{ - unsigned char p; - unsigned int cnt; - is_drawing++; - - - for(cnt=0;cnt - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef LCD_H -#define LCD_H - -// the lcd data & command ports -#define LCD_CMD (*((volatile unsigned char *) 0x81000000)) -#define LCD_DATA (*((volatile unsigned char *) 0x81000001)) - -// LCD commands -#define LCD_CONTRAST 0x3A // original 0x3F (0..63) - -#define LCD_GRAYMODE_88 0x00 // original 0x3F -#define LCD_GRAYMODE_89 0x00 // original 0x3F -#define LCD_GRAYMODE_8A 0x36 // original 0x33 -#define LCD_GRAYMODE_8B 0x63 // original 0x33 -#define LCD_GRAYMODE_8C 0x67 // original 0x66 -#define LCD_GRAYMODE_8D 0x76 // original 0x66 -#define LCD_GRAYMODE_8E 0xAC // original 0x99 -#define LCD_GRAYMODE_8F 0xCA // original 0x99 - -#define LCD_DCDCx3 0x64 // -#define LCD_DCDCx4 0x65 // -#define LCD_DCDCx5 0x66 // -//~ #define LCD_DCDCx? 0x67 // ? datasheet p. 33 - -#define LCD_IRRR_1 0x20 // -#define LCD_IRRR_2 0x21 // -#define LCD_IRRR_3 0x22 // -#define LCD_IRRR_4 0x23 // -#define LCD_IRRR_5 0x24 // -#define LCD_IRRR_6 0x25 // -#define LCD_IRRR_7 0x26 // -#define LCD_IRRR_8 0x27 // - -#define LCD_ALLON 0xA4 // black -#define LCD_ALLOFF 0xA5 // white -#define LCD_NORMAL 0xA6 // -#define LCD_REVERSE 0xA7 // - -#define LCD_SLEEP 0xA9 // enter Sleep Mode. internal oscillator and LCD powersupply off - -#define LCD_OSC_START 0xAB // - -#define LCD_OFF 0xAE // -#define LCD_ON 0xAF // - -#define LCD_WAKEUP 0xE1 // -#define LCD_RESET 0xE2 // - - -// drawmodes -#define DRAW_PUT 0 -#define DRAW_XOR 1 -#define DRAW_ERASE 2 -#define DRAW_ALPHA 3 -#define DRAW_NORCU 4 - -#define LCD_COLOR_W 0 -#define LCD_COLOR_LG 1 -#define LCD_COLOR_DG 2 -#define LCD_COLOR_B 3 - -#define LCD_SIZE_X 128 -#define LCD_SIZE_Y 160 - -#define ARROW_UP 1 -#define ARROW_DOWN 2 -#define ARROW_LEFT 3 -#define ARROW_RIGHT 4 -#define ARROW_LEN 4 - -#define TOP_LEFT 0 -#define TOP_RIGHT 1 -#define BOTTOM_LEFT 2 -#define BOTTOM_RIGHT 3 - -#define BORDER_LEFT 0 -#define BORDER_RIGHT 127 - -extern unsigned char drawbuf[2][LCD_SIZE_X]; -extern unsigned int is_drawing; - -extern volatile unsigned char symbols; -extern volatile unsigned char oldsymbols; -#define symbolRF (1<<0) -extern const unsigned char symIR[]; - -typedef void(*rcu_fn)(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -typedef void (*rcuAlpha_fn) (unsigned char x, unsigned char y, unsigned char l, unsigned char m, - unsigned char* alphaBuf); -typedef void(*rcus_fn)(unsigned char x, unsigned char y, unsigned char m); -typedef void(*bl_fn)(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -typedef void(*ln_fn)(unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); - -// Function pointer to section (".text.fastcode") -extern rcu_fn do_rcu; -extern rcuAlpha_fn do_rcuAlpha; -extern rcus_fn do_rcuS; -extern bl_fn draw_block; -extern ln_fn draw_hline; -extern ln_fn draw_vline; - - -extern void lcd_set (unsigned char s); - -extern void lcd_init (unsigned char s); -extern void lcd_enable (unsigned char e); -//extern void do_rcu(unsigned char x, unsigned char y, unsigned char l, unsigned char m); -//extern void do_rcuAlpha (unsigned char x, unsigned char y, unsigned char l, unsigned char m, -// unsigned char* alphaBuf); -//extern void do_rcuS(unsigned char x, unsigned char y, unsigned char m); -extern void lcd_set_contrast(unsigned char c); - -extern void lcd_fill (unsigned char f); -extern void draw_logo (void); -//extern void draw_block (unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char c, unsigned char m); -//extern void draw_hline (unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -//extern void draw_vline (unsigned char x, unsigned char y, unsigned char l, unsigned char c, unsigned char m); -extern void draw_rect (unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char lw, unsigned char c, unsigned char m); -extern void draw_pixel (unsigned char x, unsigned char y, unsigned char c, unsigned char m); -extern void draw_line (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char c, unsigned char m); -extern void draw_circle (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m); -extern void draw_qcircle (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m); -extern void draw_disc (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char c, unsigned char m); -extern void draw_qdisc (unsigned char cx, unsigned char cy, unsigned char radius, unsigned char quarter, unsigned char c, unsigned char m); - -extern unsigned char draw_arrow (int x, int y, unsigned char ArrowDir, int ArrowLen, unsigned char Color, unsigned char Mode); - -extern void draw_frame(unsigned char x, unsigned char y, unsigned char w, unsigned char h, unsigned char t, unsigned char r, unsigned char c, unsigned char m); -extern void draw_symbol(unsigned char x, unsigned char y, unsigned char l,unsigned char* data, unsigned char c, unsigned char m); -extern void refresh_symbols(unsigned int cb); -extern void redraw_symbols(void); - -extern void update_active_ind (void); - -#endif diff --git a/boop/trunk/flash/Make.conf b/boop/trunk/flash/Make.conf deleted file mode 100644 index 9560103..0000000 --- a/boop/trunk/flash/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := flash.c bfs.c diff --git a/boop/trunk/flash/bfs.c b/boop/trunk/flash/bfs.c deleted file mode 100644 index 92e75fd..0000000 --- a/boop/trunk/flash/bfs.c +++ /dev/null @@ -1,730 +0,0 @@ -/* - bfs.c - Betty File System - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "bfs.h" -#include "flash.h" -#include "lcd.h" -#include "fonty.h" -#include "global.h" - -extern const unsigned long secaddr[19]; - -//Public functions -unsigned char BFS_Mount() -{ - //Return true=ok - unsigned char BfsSector; - unsigned long Offset; - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long Id; - unsigned short Len; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - const unsigned long BfsVersion = BFS_VERSION; - - //Format - for(BfsSector=0; BfsSector BFS_SECTOR_HEADER_LEN) - { - //No free sector - //ASSERT(false); - return false;//Error - } - - return true;//OK -} - -unsigned short BFS_LoadFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - memcpy(Buffer, (unsigned char*)FileBodyAddress, min(FileBodyLen, MaxLen)); - - return min(FileBodyLen, MaxLen);//Error -} - -unsigned char BFS_CmpFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - int x; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - x=memcmp(Buffer, (unsigned char*)FileBodyAddress, min(FileBodyLen, MaxLen)); - - if (x) - return 0;//not equal - return 1; -} - -void* BFS_LoadFileAddr(unsigned long Id) -{ - //Return: ReadLen - unsigned long FileHeaderAddress; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - if(!BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - return 0;//File not found - } - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - - return (void*)FileBodyAddress; - -} - -unsigned char BFS_SaveFile(unsigned long Id, unsigned short Len, unsigned char *Buffer) -{ - //Return true=OK - unsigned char BfsSector; - unsigned char RecordInfo; - int i; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - unsigned char OverridePossible; - unsigned char CreateNewFile; - unsigned char Byte; - unsigned long FileHeaderAddress; - unsigned char HeaderSize; - - CreateNewFile = false; - if(BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - //File is already present - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - //Same len? - OverridePossible = false; - if(Len == FileBodyLen) - { - //Is override possible (no change from 0 to 1)? - OverridePossible = true; - for(i=0; i1 error - OverridePossible = false; - } - } - } - if(OverridePossible) - { - if(writeBuffer(FileBodyAddress, Buffer, Len) != 0) - { - return false;//Error - } - } - else - { - //Delete existing file - Byte = (RecordInfo & 0x3F) | (BFS_TYPE_DELETED << 6); - writeBuffer(FileHeaderAddress, &Byte, 1); - glBfsDeletedBytes[BFS_ByteAddressToBfsSector(FileHeaderAddress)] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - - CreateNewFile = true; - } - } - else - { - //File not present - CreateNewFile = true; - } - - while(CreateNewFile) - { - //Check free space - //Start with the fullest, ignore the last empty one - for(i=0; (i<(BFS_SECTORS-1)) && CreateNewFile; i++) - { - BfsSector = glBfsFillOrder[i]; - FileHeaderAddress = glBfsOffsetToFreeRecord[BfsSector]; - if((FileHeaderAddress + BFS_MAX_RECORD_HEADER_LEN + Len) < BFS_SECTOR_SIZE) - { - //Enough space free - BFS_WriteAtAddress(BFS_GetPhyByteAddrFromBfsSector(BfsSector) + FileHeaderAddress, Id, Len, Buffer, &HeaderSize); - - glBfsOffsetToFreeRecord[BfsSector] += HeaderSize + Len; - BFS_SortArray(); - - CreateNewFile = false; - } - } - - if(CreateNewFile) - { - //No space free - //copy only active files (not the files markes as deleted) to the empty sector and erase the source sector - if(!BFS_MakeSpace(Len)) - { - //Still not enough space free - return false;//Error - } - } - } - - return true;//OK -} - -unsigned char BFS_DeleteFile(unsigned long Id) -{ - //Return true=OK - //Return false=File not found/File was already deleted - - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - unsigned char Byte; - unsigned long FileHeaderAddress; - - if(BFS_GetFileHeaderAddress(Id, &FileHeaderAddress)) - { - //File is present - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &TempId, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - - //Delete existing file - Byte = (RecordInfo & 0x3F) | (BFS_TYPE_DELETED << 6); - writeBuffer(FileHeaderAddress, &Byte, 1); - - glBfsDeletedBytes[BFS_ByteAddressToBfsSector(FileHeaderAddress)] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - return true;//OK - } - - return false;//File not found/File was already deleted -} - -unsigned char BFS_DeleteAllFiles() -{ - //Return true=ok - unsigned char BfsSector; - unsigned long Offset; - const unsigned long BfsVersion = BFS_VERSION; - - //Format - for(BfsSector=0; BfsSector glBfsDeletedBytes[BfsSectorWithMostDelFiles]) - { - BfsSectorWithMostDelFiles = BfsSector; - } - } - if(glBfsDeletedBytes[BfsSectorWithMostDelFiles] == 0) - { - //No sector has files marked as deleted -> nothing to free - return false;//Not enough space free - } - - //Copy active files to the empty bfs sector - BfsSector = glBfsFillOrder[BFS_SECTORS - 1];//The empty destination sector - DstAddress = BFS_GetPhyByteAddrFromBfsSector(BfsSector) + BFS_SECTOR_HEADER_LEN; - - FileHeaderAddress = BFS_GetPhyByteAddrFromBfsSector(BfsSectorWithMostDelFiles) + BFS_SECTOR_HEADER_LEN;//Source - do - { - BFS_GetFileHeaderInfo(FileHeaderAddress, &RecordInfo, &Id, &FileBodyLen, &FileBodyAddress, &IsFree, &IsActive); - if(IsActive) - { - //Copy the active file to the destination sector - BFS_FlashToFlashCopy(DstAddress, FileHeaderAddress, (FileBodyAddress - FileHeaderAddress) + FileBodyLen); - DstAddress += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - - glBfsOffsetToFreeRecord[BfsSector] += (FileBodyAddress - FileHeaderAddress) + FileBodyLen; - } - FileHeaderAddress = FileBodyAddress + FileBodyLen; - }while(!IsFree); - - //Erase the source sector - if(eraseSector(BFS_CHIP, BFS_FIRST_SECTOR + BfsSectorWithMostDelFiles) != 0) - { - return false;//Error - } - //Write sector header - Offset = BFS_GetPhyByteAddrFromBfsSector(BfsSectorWithMostDelFiles); - writeBuffer(Offset, (unsigned char*)BFS_MAGIC, 4); - writeBuffer(Offset + 4, (unsigned char*)&BfsVersion, 4); - - glBfsDeletedBytes[BfsSectorWithMostDelFiles] = 0; - glBfsOffsetToFreeRecord[BfsSectorWithMostDelFiles] = BFS_SECTOR_HEADER_LEN; - - BFS_SortArray(); - }while(1); - - return false;//Not enough space free -} - -void BFS_SortArray() -{ - //Sort the glBfsFillOrder array - unsigned char RepeatSort; - unsigned char BfsSector; - unsigned char Byte; - - do - { - RepeatSort = false; - for(BfsSector=0; BfsSector<(BFS_SECTORS-1); BfsSector++) - { - if(glBfsOffsetToFreeRecord[glBfsFillOrder[BfsSector]] < glBfsOffsetToFreeRecord[glBfsFillOrder[BfsSector+1]]) - { - //Swap - Byte = glBfsFillOrder[BfsSector]; - glBfsFillOrder[BfsSector] = glBfsFillOrder[BfsSector+1]; - glBfsFillOrder[BfsSector+1] = Byte; - RepeatSort = true; - } - } - }while(RepeatSort); -} - -unsigned long BFS_GetPhyByteAddrFromBfsSector(unsigned char BfsSector) -{ - //BFS_FIRST_SECTOR + BfsSector = PhyFlashSector - - //ASSERT((BFS_FIRST_SECTOR + BfsSector) < FLASH_SECTORS); - - return BFS_FLASH_BASE + (secaddr[BfsSector + BFS_FIRST_SECTOR] * 2); -} - -unsigned char BFS_IsSectorFormated(unsigned char BfsSector) -{ - //Is the sector formated and is the version valid - - unsigned long Offset; - unsigned long Version; - - Offset = BFS_GetPhyByteAddrFromBfsSector(BfsSector); - - if(memcmp((unsigned char*)Offset, BFS_MAGIC, 4) != 0) - { - return false;//Magic not found -> not formated - } - - Version = *((unsigned long*) (Offset + 4)); - if(Version != BFS_VERSION) - { - return false;//Magic found but wrong version - } - - return true;//Formated -} - -void BFS_GetFileHeaderInfo(unsigned long FileHeaderAddress, unsigned char *pRecordInfo, unsigned long *pId, unsigned short *pLen, unsigned long *pFileBodyAddress, unsigned char *pIsFree, unsigned char *pIsActive) -{ - unsigned char State; - unsigned char IdByteCount; - unsigned char LenByteCount; - unsigned long Offset; - - Offset = FileHeaderAddress; - *pRecordInfo = readByte(Offset++); - State = ((*pRecordInfo) >> 6) & 0x03; - IdByteCount = 1 + (((*pRecordInfo) >> 1) & 0x03); - LenByteCount = 1 + ((*pRecordInfo) & 0x01); - - if(State == BFS_TYPE_FREE) - { - //Free - *pIsFree = true; - *pIsActive = false; - *pId = 0; - *pLen = 0; - *pFileBodyAddress = 0; - } - else - { - //Active or deleted - *pIsFree = false; - *pIsActive = (State == BFS_TYPE_ACTIVE) ? true : false; - - *pId = readByte(Offset++); - if(IdByteCount > 1) - { - *pId |= readByte(Offset++) << 8; - } - if(IdByteCount > 2) - { - *pId |= readByte(Offset++) << 16; - } - if(IdByteCount > 3) - { - *pId |= readByte(Offset++) << 24; - } - - *pLen = readByte(Offset++); - if(LenByteCount > 1) - { - *pLen |= readByte(Offset++) << 8; - } - - *pFileBodyAddress = Offset; - } -} - -unsigned char BFS_GetFileHeaderAddress(unsigned long Id, unsigned long *pFileHeaderAddress) -{ - //Return true = File is present, pFileHeaderAddress is valid - //Return false = File not found (e.g. deleted), pFileHeaderAddress is invalid - unsigned char BfsSector; - unsigned long PhyAddr; - unsigned char RecordInfo; - unsigned long TempId; - unsigned short FileBodyLen; - unsigned long FileBodyAddress; - unsigned char IsFree; - unsigned char IsActive; - - *pFileHeaderAddress = 0; - - for(BfsSector=0; BfsSector= ByteAddress) && (FileHeaderAddress < (ByteAddress + BFS_SECTOR_SIZE))) - { - return BfsSector; - } - } - - //ASSERT(false); - BfsSector = 0xFF;//Error - return BfsSector; -} - -unsigned char BFS_WriteAtAddress(unsigned long FileHeaderAddress, unsigned long Id, unsigned short Len, unsigned char *Buffer, unsigned char *pHeaderSize) -{ - //Return true=OK - unsigned char RecordHeaderPos; - unsigned char RecordInfo; - unsigned char RecordHeader[BFS_MAX_RECORD_HEADER_LEN]; - unsigned char IdByteCount; - unsigned char LenByteCount; - - //IdByteCount - if(Id & 0xFF000000) - { - IdByteCount = BFS_ID_4BYTES; - } - else - { - if(Id & 0xFF0000) - { - IdByteCount = BFS_ID_3BYTES; - } - else - { - if(Id & 0xFF00) - { - IdByteCount = BFS_ID_2BYTES; - } - else - { - IdByteCount = BFS_ID_1BYTE; - } - } - } - - //LenByteCount - LenByteCount = (Len < 0x100) ? BFS_ONE_LEN_BYTE : BFS_TWO_LEN_BYTES; - - //RecordInfo - RecordInfo = (BFS_TYPE_ACTIVE << 6) | (IdByteCount << 1) | LenByteCount; - RecordHeaderPos = 0; - RecordHeader[RecordHeaderPos++] = RecordInfo; - - //Id - RecordHeader[RecordHeaderPos++] = Id & 0xFF; - if(Id >= 0x100) - { - RecordHeader[RecordHeaderPos++] = (Id >> 8) & 0xFF; - if(Id >= 0x10000) - { - RecordHeader[RecordHeaderPos++] = (Id >> 16) & 0xFF; - if(Id >= 0x1000000) - { - RecordHeader[RecordHeaderPos++] = (Id >> 24) & 0xFF; - } - } - } - - //Len - RecordHeader[RecordHeaderPos++] = Len & 0xFF; - if(Len >= 0x100) - { - RecordHeader[RecordHeaderPos++] = (Len >> 8) & 0xFF; - } - - //Write record header - writeBuffer(FileHeaderAddress, RecordHeader, RecordHeaderPos); - //Write record data - writeBuffer(FileHeaderAddress + RecordHeaderPos, Buffer, Len); - - *pHeaderSize = RecordHeaderPos; - - return true;//OK -} - -unsigned char readByte(unsigned long ByteAddr) -{ - unsigned char Byte; - Byte = ((unsigned char*) ByteAddr)[0]; - - return Byte; -} - -unsigned short readWord(unsigned long WordAddr) -{ - //addr = unsigned short address - int Offset; - unsigned short Word; - - //ASSERT((WordAddr * 2) >= FLASH1_BASE); - //ASSERT((WordAddr * 2) < (FLASH1_BASE + FLASH_SIZE)); - - Offset = (WordAddr * 2) - FLASH1_BASE; - - Word = *((unsigned short *)(WordAddr<<1)); - - return Word; -} - - -int writeBuffer(unsigned long ByteAddr, unsigned char *buffer, unsigned short len) -{ - //Return 0=OK - int Offset; - unsigned short Word; - - Offset = 0; - - if(ByteAddr & 1) - { - //Not word boundary - Word = readWord(ByteAddr / 2); - Word &= (buffer[Offset] << 8) | 0xFF; - writeWord(ByteAddr & 0xFFFFFFFE, Word); - Offset++; - ByteAddr++; - len--; - } - - while(len >= 2) - { - Word = readWord(ByteAddr / 2); - Word &= buffer[Offset] | (buffer[Offset + 1] << 8); - writeWord(ByteAddr, Word); - Offset += 2; - ByteAddr += 2; - len -= 2; - } - - if(len == 1) - { - Word = readWord(ByteAddr / 2); - Word &= 0xFF00 | buffer[Offset]; - writeWord(ByteAddr, Word); - Offset++; - ByteAddr++; - len--; - } - - return 0;//OK -} - diff --git a/boop/trunk/flash/bfs.h b/boop/trunk/flash/bfs.h deleted file mode 100644 index ded16ba..0000000 --- a/boop/trunk/flash/bfs.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - bfs.h - Betty File System - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef BFS_H -#define BFS_H - -//Define here your file ids (range 1 - 0xFFFFFFFF) -#define BFS_ID_remotes 1 -#define BFS_ID_settings 2 -#define BFS_ID_RFsettings 3 -#define BFS_ID_RAWslot0 4 -#define BFS_ID_RAWslot1 5 -#define BFS_ID_RAWslot2 6 -#define BFS_ID_RAWslot3 7 - - -//Use last 3 64 KByte sectors (16..18) of the second chip for BFS -#define BFS_FIRST_SECTOR 16 -#define BFS_SECTORS 3 -#define BFS_SECTOR_SIZE 0x10000 - -#define BFS_SECTOR_HEADER_LEN 0x10 -#define BFS_MAGIC "BFS" -#define BFS_VERSION 1 -#define BFS_CHIP 1 - -#define BFS_TYPE_DELETED 0 -#define BFS_TYPE_ACTIVE 1 -#define BFS_TYPE_FREE 3 -#define BFS_ID_1BYTE 0 -#define BFS_ID_2BYTES 1 -#define BFS_ID_3BYTES 2 -#define BFS_ID_4BYTES 3 -#define BFS_ONE_LEN_BYTE 0 -#define BFS_TWO_LEN_BYTES 1 - -//Max. 1 info byte, 4 ID bytes, 2 length bytes -#define BFS_MAX_RECORD_HEADER_LEN (1+4+2) - -#define BFS_FLASH_BASE FLASH1_BASE - -unsigned long glBfsOffsetToFreeRecord[BFS_SECTORS];//Based on sector start -unsigned short glBfsDeletedBytes[BFS_SECTORS];//FileHeader + FileBody -unsigned char glBfsFillOrder[BFS_SECTORS];//[0]=Fullest - -//Public -unsigned char BFS_Mount();//Call this before calling other BFS functions -unsigned short BFS_LoadFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer); -unsigned char BFS_CmpFile(unsigned long Id, unsigned short MaxLen, unsigned char *Buffer); -void* BFS_LoadFileAddr(unsigned long Id); -unsigned char BFS_SaveFile(unsigned long Id, unsigned short Len, unsigned char *Buffer); -unsigned char BFS_DeleteFile(unsigned long Id); -unsigned char BFS_DeleteAllFiles(); - -//Internal -unsigned char BFS_FlashToFlashCopy(unsigned long DstByteAddr, unsigned long SrcByteAddr, unsigned short ByteLen); -unsigned char BFS_MakeSpace(unsigned short RequiredFileBodySize); -void BFS_SortArray(); -unsigned long BFS_GetPhyByteAddrFromBfsSector(unsigned char BfsSector); -unsigned char BFS_IsSectorFormated(unsigned char BfsSector); -void BFS_GetFileHeaderInfo(unsigned long FileHeaderAddress, unsigned char *pRecordInfo, unsigned long *pId, unsigned short *pLen, unsigned long *pFileBodyAddress, unsigned char *pIsFree, unsigned char *pIsActive); -unsigned char BFS_GetFileHeaderAddress(unsigned long Id, unsigned long *pFileHeaderAddress); -unsigned char BFS_ByteAddressToBfsSector(unsigned long FileHeaderAddress); -unsigned char BFS_WriteAtAddress(unsigned long FileHeaderAddress, unsigned long Id, unsigned short Len, unsigned char *Buffer, unsigned char *pHeaderSize); - -unsigned char readByte(unsigned long ByteAddr); -unsigned short readWord(unsigned long WordAddr); - -int writeBuffer(unsigned long ByteAddr, unsigned char *buffer, unsigned short len); - -#endif diff --git a/boop/trunk/flash/flash.c b/boop/trunk/flash/flash.c deleted file mode 100644 index 4b31794..0000000 --- a/boop/trunk/flash/flash.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - flash.c - writing/erasing flash - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "flash.h" -#include "serial.h" -#include "lcd.h" - -const unsigned long secaddr[19] = -{ 0x00000, - 0x02000, - 0x03000, - 0x04000, - 0x08000, - 0x10000, - 0x18000, - 0x20000, - 0x28000, - 0x30000, - 0x38000, - 0x40000, - 0x48000, - 0x50000, - 0x58000, - 0x60000, - 0x68000, - 0x70000, - 0x78000 }; - -unsigned long flash_base; - -int eraseSector(unsigned char chip, unsigned char secnum) -{ - - if(chip == 0) - flash_base = FLASH0_BASE; - else - flash_base = FLASH1_BASE; - - serial_puts("Erasing Sector: 0x"); - putHexW(flash_base + (secaddr[secnum]<<1)); - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x80; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base + (secaddr[secnum]<<1))) = 0x30; - - if((*((volatile unsigned short *)(flash_base)) & 0x44) == (*((volatile unsigned short *)(flash_base)) & 0x44)) - { - serial_puts(" -- ERROR\n"); - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - - while ((*((volatile unsigned short *)(flash_base)) & 0x44) != (*((volatile unsigned short *)(flash_base)) & 0x44)) - {} - serial_puts(" +> OK\n"); - return 0; -} - -int eraseFlash(unsigned char chip) -{ - if(chip == 0) - flash_base = FLASH0_BASE; - else - flash_base = FLASH1_BASE; - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x80; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x10; - - if((*((volatile unsigned short *)(flash_base)) & 0x44) == (*((volatile unsigned short *)(flash_base)) & 0x44)) - { - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - - while ((*((volatile unsigned short *)(flash_base)) & 0x44) != (*((volatile unsigned short *)(flash_base)) & 0x44)) - {} - return 0; -} - -int writeWord(unsigned long addr, unsigned short data) -{ - flash_base = addr & 0xFF000000; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xA0; - *((volatile unsigned short *)(addr)) = data; - - if(*((volatile unsigned short *)(addr)) == *((volatile unsigned short *)(addr))) - { - serial_puts("NACK"); - *((volatile unsigned short *)(flash_base)) = 0xF0; - return -1; - } - - while(*((volatile unsigned short *)(addr)) != *((volatile unsigned short *)(addr))) - {} - return 0; -} - -void prepareBulk(unsigned long dst) -{ - flash_base = dst & 0xFF000000; - - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0xAA; - *((volatile unsigned short *)(flash_base | 0x554)) = 0x55; - *((volatile unsigned short *)(flash_base | 0xAAA)) = 0x20; -} - -void endBulk(unsigned long dst) -{ - flash_base = dst & 0xFF000000; - - *((volatile unsigned short *)(flash_base)) = 0x90; - *((volatile unsigned short *)(flash_base)) = 0x00; -} - -int writeBulk(unsigned long src, unsigned long dst, unsigned long cnt) -{ - unsigned short check1, check2; - while(cnt--) - { - *((volatile unsigned short *)dst) = 0xA0; - *((volatile unsigned short *)dst) = *((volatile unsigned short *)src); - -retry: - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if((check1 & 0x40) == (check2 & 0x40)) - goto done; - if(!(check2 & 0x20)) - goto retry; - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if((check1 & 0x40) == (check2 & 0x40)) - goto done; - *((volatile unsigned short *)dst) = 0xF0; - return -1; - -done: - check1 = *((volatile unsigned short *)dst); - check2 = *((volatile unsigned short *)dst); - if(check1 != check2) - goto retry; - - src+=2; - dst+=2; - } - - return 0; -} - -unsigned short getFlashID(void) { - - unsigned short manufactor = 0; - unsigned short device = 0; - - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; - *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; - manufactor = *((volatile unsigned short *) FLASH1_BASE + 0x100); - (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; - - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0xAA; - *((volatile unsigned short *) FLASH1_BASE + 0x2AA) = 0x55; - *((volatile unsigned short *) FLASH1_BASE + 0x555) = 0x90; - device = *((volatile unsigned short *) FLASH1_BASE + 0x01); - (*((volatile unsigned short *) FLASH1_BASE)) = 0xF0; - - return(((manufactor << 8) & 0xFF00) | (device & 0x00FF)); - -} diff --git a/boop/trunk/flash/flash.h b/boop/trunk/flash/flash.h deleted file mode 100644 index ffffc81..0000000 --- a/boop/trunk/flash/flash.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - flash.h - writing/erasing flash - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef FLASH_H -#define FLASH_H - -#define FLASH0_BASE 0x80000000 -#define FLASH1_BASE 0x82000000 - -const unsigned long secaddr[19]; - -void prepareBulk(unsigned long dst); -void endBulk(unsigned long dst); -int eraseSector(unsigned char chip, unsigned char secnum); -int eraseFlash(unsigned char chip); -int writeWord(unsigned long addr, unsigned short data); -int writeBulk(unsigned long src, unsigned long dst, unsigned long cnt); -void lcd_set(unsigned char s); -unsigned short getFlashID(void); - -#endif diff --git a/boop/trunk/games/Make.conf b/boop/trunk/games/Make.conf deleted file mode 100644 index 5777587..0000000 --- a/boop/trunk/games/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := gamesmenu.c tic_tac_toe.c sokoban.c connect4.c diff --git a/boop/trunk/games/c4_map.h b/boop/trunk/games/c4_map.h deleted file mode 100644 index 1996802..0000000 --- a/boop/trunk/games/c4_map.h +++ /dev/null @@ -1,64 +0,0 @@ -const signed char map[7][6][14] = -{ - { - { 0, 24, 45, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 24, 25, 49, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 8, 24, 25, 26, 53, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 12, 24, 25, 26, 60, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 16, 25, 26, 64, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 20, 26, 68, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 27, 46, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 27, 28, 45, 50, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 8, 9, 27, 28, 29, 49, 54, 60, -1, 0, 0, 0, 0, 0 }, - { 12, 13, 27, 28, 29, 53, 59, 64, -1, 0, 0, 0, 0, 0 }, - { 16, 17, 28, 29, 63, 68, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 20, 21, 29, 67, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 2, 30, 47, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 6, 30, 31, 46, 51, 60, -1, 0, 0, 0, 0, 0 }, - { 8, 9, 10, 30, 31, 32, 45, 50, 55, 59, 64, -1, 0, 0 }, - { 12, 13, 14, 30, 31, 32, 49, 54, 58, 63, 68, -1, 0, 0 }, - { 16, 17, 18, 31, 32, 53, 62, 67, -1, 0, 0, 0, 0, 0 }, - { 20, 21, 22, 32, 66, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 0, 1, 2, 3, 33, 48, 60, -1, 0, 0, 0, 0, 0, 0 }, - { 4, 5, 6, 7, 33, 34, 47, 52, 59, 64, -1, 0, 0, 0 }, - { 8, 9, 10, 11, 33, 34, 35, 46, 51, 56, 58, 63, 68, -1 }, - { 12, 13, 14, 15, 33, 34, 35, 45, 50, 55, 57, 62, 67, -1 }, - { 16, 17, 18, 19, 34, 35, 49, 54, 61, 66, -1, 0, 0, 0 }, - { 20, 21, 22, 23, 35, 53, 65, -1, 0, 0, 0, 0, 0, 0 }, - }, - { - { 1, 2, 3, 36, 59, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 5, 6, 7, 36, 37, 48, 58, 63, -1, 0, 0, 0, 0, 0 }, - { 9, 10, 11, 36, 37, 38, 47, 52, 57, 62, 67, -1, 0, 0 }, - { 13, 14, 15, 36, 37, 38, 46, 51, 56, 61, 66, -1, 0, 0 }, - { 17, 18, 19, 37, 38, 50, 55, 65, -1, 0, 0, 0, 0, 0 }, - { 21, 22, 23, 38, 54, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 2, 3, 39, 58, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 6, 7, 39, 40, 57, 62, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 10, 11, 39, 40, 41, 48, 61, 66, -1, 0, 0, 0, 0, 0 }, - { 14, 15, 39, 40, 41, 47, 52, 65, -1, 0, 0, 0, 0, 0 }, - { 18, 19, 40, 41, 51, 56, -1, 0, 0, 0, 0, 0, 0, 0 }, - { 22, 23, 41, 55, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - }, - { - { 3, 42, 57, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 7, 42, 43, 61, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 11, 42, 43, 44, 65, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 15, 42, 43, 44, 48, -1, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 19, 43, 44, 52, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 23, 44, 56, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - } -}; - -const signed char drop_order[7] = -{ - 3, 4, 2, 5, 1, 6, 0 -}; diff --git a/boop/trunk/games/connect4.c b/boop/trunk/games/connect4.c deleted file mode 100644 index 8f98a55..0000000 --- a/boop/trunk/games/connect4.c +++ /dev/null @@ -1,965 +0,0 @@ -/* - connect4.c - game - - the bulk of this file is code reused from: - * Connect-4 Algorithm - * Version 3.10 - * By Keith Pomakis - * (pomakis@pobox.com) - *April, 2005 - - modifications & adoption to boop: - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "timerfuncs.h" -#include "backlight.h" -#include "connect4.h" - -extern unsigned char autorepeat; - -unsigned int seed; - -unsigned char c4_abort; - -#define other(x) ((x) ^ 1) -#define real_player(x) ((x) & 1) - -#define pop_state() \ - (current_state = &state_stack[--depth]) - -/* The "goodness" of the current state with respect to a player is the */ -/* score of that player minus the score of the player's opponent. A */ -/* positive value will result if the specified player is in a better */ -/* situation than his/her opponent. */ - -#define goodness_of(player) \ - (current_state->score[player] - current_state->score[other(player)]) - -/* A local struct which defines the state of a game. */ - -#define C4_SIZEX 7 -#define C4_SIZEY 6 -#define C4_TOTALSIZE (C4_SIZEX*C4_SIZEY) - -#define C4_MAGICWIN (1 << 4) - -#define C4_WINPLACES 69 - -typedef int(*ev_fn)(int player, int level, int alpha, int beta); -typedef void(*ps_fn)(void); -typedef int(*dp_fn)(int player, int column); -typedef void(*mc_fn)(char *d, char *s, unsigned int cnt); - -static ev_fn evaluate; -static ps_fn push_state; -static dp_fn drop_piece; -static mc_fn mcpy; - -typedef struct { - - char board[C4_SIZEX][C4_SIZEY]; /* The board configuration of the game state. */ - /* board[x][y] specifies the position of the */ - /* xth column and the yth row of the board, */ - /* where column and row numbering starts at 0. */ - /* (The 0th row is the bottom row.) */ - /* A value of 0 specifies that the position is */ - /* occupied by a piece owned by player 0, a */ - /* value of 1 specifies that the position is */ - /* occupied by a piece owned by player 1, and */ - /* a value of C4_NONE specifies that the */ - /* position is unoccupied. */ - - int score_array[2][C4_WINPLACES]; /* An array specifying statistics on both */ - /* players. score_array[0] specifies the */ - /* statistics for player 0, while */ - /* score_array[1] specifies the statistics for */ - /* player 1. */ - - int score[2]; /* The actual scores of each player, deducible */ - /* from score_array, but kept separately for */ - /* efficiency. The score of player x is the */ - /* sum of score_array[x]. A score is */ - /* basically a function of how many winning */ - /* positions are still available to the */ - /* and how close he/she is to achieving each */ - /* of these positions. */ - - short int winner; /* The winner of the game - either 0, 1 or */ - /* C4_NONE. Deducible from score_array, but */ - /* kept separately for efficiency. */ - - int num_of_pieces; /* The number of pieces currently occupying */ - /* board spaces. Deducible from board, but */ - /* kept separately for efficiency. */ - -} Game_state; - -/* Static global variables. */ - -#include "c4_map.h" - -static Game_state *state_stack; //[C4_MAX_LEVEL+1]; -static Game_state *current_state; -static int depth; -static int states_allocated = 0; -//static int drop_order[7]; - - -unsigned long int rand31(void) -{ - unsigned long int hi, lo; - lo = 16807 * (seed & 0xFFFF); - hi = 16807 * (seed >> 16); - lo += (hi & 0x7FFF) << 16; - lo += hi >> 15; - if(lo > 0x7FFFFFFF) lo -= 0x7FFFFFFF; - return(seed = (long)lo); -} - -/****************************************************************************/ -/** **/ -/** This function sets up a new game. This must be called exactly once **/ -/** before each game is started. Before it can be called a second time, **/ -/** end_game() must be called to destroy the previous game. **/ -/** **/ -/** width and height are the desired dimensions of the game board, while **/ -/** num is the number of pieces required to connect in a row in order to **/ -/** win the game. **/ -/** **/ -/****************************************************************************/ - -void -c4_new_game(int width, int height, int num) -{ - register int i, j; - - depth = 0; - current_state = &state_stack[0]; - - for (i=0; iboard[i][j] = C4_NONE; - } - - for (i=0; iscore_array[0][i] = 1; - current_state->score_array[1][i] = 1; - } - - current_state->score[0] = current_state->score[1] = C4_WINPLACES; - current_state->winner = C4_NONE; - current_state->num_of_pieces = 0; - - states_allocated = 1; -} - -/****************************************************************************/ -/** **/ -/** This function updates the score of the specified player in the **/ -/** context of the current state, given that the player has just placed **/ -/** a game piece in column x, row y. **/ -/** **/ -/****************************************************************************/ - -static void -update_score(int player, int x, int y) -{ - register int i; - int win_index; - int this_difference = 0, other_difference = 0; - int other_player = other(player); - - for (i=0; map[x][y][i] != -1; i++) { - win_index = map[x][y][i]; - this_difference += current_state->score_array[player][win_index]; - other_difference += current_state->score_array[other_player][win_index]; - - current_state->score_array[player][win_index] <<= 1; - current_state->score_array[other_player][win_index] = 0; - - if (current_state->score_array[player][win_index] == C4_MAGICWIN) - if (current_state->winner == C4_NONE) - current_state->winner = player; - } - - current_state->score[player] += this_difference; - current_state->score[other_player] -= other_difference; -} - -/****************************************************************************/ -/** **/ -/** This function drops a piece of the specified player into the **/ -/** specified column. The row where the piece ended up is returned, or **/ -/** -1 if the drop was unsuccessful (i.e., the specified column is full). **/ -/** **/ -/****************************************************************************/ - -static int -_drop_piece(int player, int column) -{ - int y = 0; - - while (current_state->board[column][y] != C4_NONE && ++y < C4_SIZEY) - ; - - if (y == C4_SIZEY) - return -1; - - current_state->board[column][y] = player; - current_state->num_of_pieces++; - update_score(player, column, y); - - return y; -} - -/****************************************************************************/ -/** **/ -/** This function drops a piece of the specified player into the **/ -/** specified column. A value of TRUE is returned if the drop is **/ -/** successful, or FALSE otherwise. A drop is unsuccessful if the **/ -/** specified column number is invalid or full. If the drop is **/ -/** successful and row is a non-NULL pointer, the row where the piece **/ -/** ended up is returned through the row pointer. Note that column and **/ -/** row numbering start at 0. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_make_move(int player, int column, int *row) -{ - int result; - - if (column >= C4_SIZEX || column < 0) - return FALSE; - - result = drop_piece(real_player(player), column); - if (row && result >= 0) - *row = result; - return (result >= 0); -} - -void __attribute__ ((section(".text.fastcode"))) -_mcpy(char *d, char *s, unsigned int cnt) -{ - unsigned int c = cnt; - do - { - d[c] = s[c]; - } while(c--); -} - -/****************************************************************************/ -/** **/ -/** This function pushes the current state onto a stack. pop_state() **/ -/** is used to pop from this stack. **/ -/** **/ -/** Technically what it does, since the current state is considered to **/ -/** be the top of the stack, is push a copy of the current state onto **/ -/** the stack right above it. The stack pointer (depth) is then **/ -/** incremented so that the new copy is considered to be the current **/ -/** state. That way, all pop_state() has to do is decrement the stack **/ -/** pointer. **/ -/** **/ -/** For efficiency, memory for each stack state used is only allocated **/ -/** once per game, and reused for the remainder of the game. **/ -/** **/ -/****************************************************************************/ - -static void __attribute__ ((section(".text.fastcode"))) -_push_state(void) -{ - register int i; - Game_state *old_state, *new_state; - old_state = &state_stack[depth++]; - new_state = &state_stack[depth]; - - /* Copy the board */ - - for (i=0; iboard[i], (char*)old_state->board[i], C4_SIZEY); - - /* Copy the score array */ - - - mcpy((char*)new_state->score_array[0], (char*)old_state->score_array[0], - C4_WINPLACES*4); - mcpy((char*)new_state->score_array[1], (char*)old_state->score_array[1], - C4_WINPLACES*4); - - new_state->score[0] = old_state->score[0]; - new_state->score[1] = old_state->score[1]; - new_state->winner = old_state->winner; - new_state->num_of_pieces = old_state->num_of_pieces; - - current_state = new_state; -} - -/****************************************************************************/ -/** **/ -/** This recursive function determines how good the current state may **/ -/** turn out to be for the specified player. It does this by looking **/ -/** ahead level moves. It is assumed that both the specified player and **/ -/** the opponent may make the best move possible. alpha and beta are **/ -/** used for alpha-beta cutoff so that the game tree can be pruned to **/ -/** avoid searching unneccessary paths. **/ -/** **/ -/** The specified poll function (if any) is called at the appropriate **/ -/** intervals. **/ -/** **/ -/** The worst goodness that the current state can produce in the number **/ -/** of moves (levels) searched is returned. This is the best the **/ -/** specified player can hope to achieve with this state (since it is **/ -/** assumed that the opponent will make the best moves possible). **/ -/** **/ -/****************************************************************************/ - -static int __attribute__ ((section(".text.fastcode"))) -_evaluate(int player, int level, int alpha, int beta) -{ - int i, goodness, best, maxab; - - if (current_state->winner == player) - return 0x7FFFFFFF - depth; - else if (current_state->winner == other(player)) - return -(0x7FFFFFFF - depth); - else if (current_state->num_of_pieces == C4_TOTALSIZE) - return 0; /* a tie */ - else if (level == depth) - return goodness_of(player); - else { - /* Assume it is the other player's turn. */ - best = -(0x7FFFFFFF); - maxab = alpha; - for(i=0; iboard[drop_order[i]][C4_SIZEY-1] != C4_NONE) - continue; /* The column is full. */ - push_state(); - drop_piece(other(player), drop_order[i]); - goodness = evaluate(other(player), level, -beta, -maxab); - if (goodness > best) { - best = goodness; - if (best > maxab) - maxab = best; - } - pop_state(); - if (best > beta) - break; - } - - /* What's good for the other player is bad for this one. */ - return -best; - } -} - -/****************************************************************************/ -/** **/ -/** This function instructs the computer to make a move for the specified **/ -/** player. level specifies the number of levels deep the computer **/ -/** should search the game tree in order to make its decision. This **/ -/** corresponds to the number of "moves" in the game, where each player's **/ -/** turn is considered a move. A value of TRUE is returned if a move was **/ -/** made, or FALSE otherwise (i.e. if the board is full). If a move was **/ -/** made, the column and row where the piece ended up is returned through **/ -/** the column and row pointers (unless a pointer is NULL, in which case **/ -/** it won't be used to return any information). Note that column and **/ -/** row numbering start at 0. Also note that for a standard 7x6 game of **/ -/** Connect-4, the computer is brain-dead at levels of three or less, **/ -/** while at levels of four or more the computer provides a challenge. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_auto_move(int player, int level, int *column, int *row) -{ - int i, best_column = -1, goodness = 0, best_worst = -(0x7FFFFFFF); - int num_of_equal = 0, real_player, current_column, result; - - real_player = real_player(player); - - /* It has been proven that the best first move for a standard 7x6 game */ - /* of connect-4 is the center column. See Victor Allis' masters thesis */ - /* ("ftp://ftp.cs.vu.nl/pub/victor/connect4.ps") for this proof. */ - - if (current_state->num_of_pieces < 2 && (current_state->num_of_pieces == 0 || - current_state->board[3][0] != C4_NONE)) { - if (column) - *column = 3; - if (row) - *row = current_state->num_of_pieces; - drop_piece(real_player, 3); - return TRUE; - } - - /* Simulate a drop in each of the columns and see what the results are. */ - - for (i=0; iwinner == real_player) { - best_column = current_column; - pop_state(); - break; - } - - /* Otherwise, look ahead to see how good this move may turn out */ - /* to be (assuming the opponent makes the best moves possible). */ - else { -// next_poll = clock() + poll_interval; - goodness = evaluate(real_player, level, -(0x7FFFFFFF), -best_worst); - } - - /* If this move looks better than the ones previously considered, */ - /* remember it. */ - if (goodness > best_worst) { - best_worst = goodness; - best_column = current_column; - num_of_equal = 1; - } - - /* If two moves are equally as good, make a random decision. */ - else if (goodness == best_worst) { - num_of_equal++; - if ((rand31()>>4) % num_of_equal == 0) - best_column = current_column; - } - - pop_state(); - if(c4_abort) - return 0; - } - - /* Drop the piece in the column decided upon. */ - - if (best_column >= 0) { - result = drop_piece(real_player, best_column); - if (column) - *column = best_column; - if (row) - *row = result; - return TRUE; - } - else - return FALSE; -} - -/****************************************************************************/ -/** **/ -/** This function returns the "score" of the specified player. This **/ -/** score is a function of how many winning positions are still available **/ -/** to the player and how close he/she is to achieving each of these **/ -/** positions. The scores of both players can be compared to observe how **/ -/** well they are doing relative to each other. **/ -/** **/ -/****************************************************************************/ - -int -c4_score_of_player(int player) -{ - return current_state->score[real_player(player)]; -} - - -/****************************************************************************/ -/** **/ -/** This function returns TRUE if the specified player has won the game, **/ -/** and FALSE otherwise. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_is_winner(int player) -{ - return (current_state->winner == real_player(player)); -} - - -/****************************************************************************/ -/** **/ -/** This function returns TRUE if the board is completely full without a **/ -/** winner, and FALSE otherwise. **/ -/** **/ -/****************************************************************************/ - -Boolean -c4_is_tie(void) -{ - return (current_state->num_of_pieces == C4_TOTALSIZE && - current_state->winner == C4_NONE); -} - - -/****************************************************************************/ -/** **/ -/** This function returns the coordinates of the winning connections of **/ -/** the winning player. It is assumed that a player has indeed won the **/ -/** game. The coordinates are returned in x1, y1, x2, y2, where (x1, y1) **/ -/** specifies the lower-left piece of the winning connection, and **/ -/** (x2, y2) specifies the upper-right piece of the winning connection. **/ -/** If more than one winning connection exists, only one will be **/ -/** returned. **/ -/** **/ -/****************************************************************************/ - - -void -c4_win_coords(int *x1, int *y1, int *x2, int *y2) -{ - register int i, j, k; - int winner, win_pos = 0; - Boolean found; - - winner = current_state->winner; - - while (current_state->score_array[winner][win_pos] != C4_MAGICWIN) - win_pos++; - - found = FALSE; - for (j=0; j=0 && !found; j--) - for (i=C4_SIZEX-1; i>=0 && !found; i--) - for (k=0; map[i][j][k] != -1; k++) - if (map[i][j][k] == win_pos) { - *x2 = i; - *y2 = j; - found = TRUE; - break; - } -} - - -/****************************************************************************/ -/** **/ -/** This function ends the current game. It is assumed that a game is **/ -/** in progress. It is illegal to call any other game function **/ -/** immediately after this one except for c4_new_game(), c4_poll() and **/ -/** c4_reset(). **/ -/** **/ -/****************************************************************************/ - -void -c4_end_game(void) -{ - states_allocated = 0; -} - - -/****************************************************************************/ -/** **/ -/** This function resets the state of the algorithm to the starting state **/ -/** (i.e., no game in progress and a NULL poll function). There should **/ -/** no reason to call this function unless for some reason the calling **/ -/** algorithm loses track of the game state. It is illegal to call any **/ -/** other game function immediately after this one except for **/ -/** c4_new_game(), c4_poll() and c4_reset(). **/ -/** **/ -/****************************************************************************/ - -void -c4_reset(void) -{ - c4_end_game(); -} - -int row, col, ccol; -unsigned int c4_cb, c4_wcb; -unsigned char c4_player, c4_moves, c4_level; - -void draw_stone(unsigned char x, unsigned char y, unsigned char p) -{ - - unsigned char xx, yy; - xx = 10+(x*18); - yy = 46+(y*18); - - switch(p) - { - case 0: - draw_disc(xx, yy, 7, 2, DRAW_PUT); - draw_disc(xx, yy, 5, 3, DRAW_XOR); - draw_disc(xx, yy, 2, 3, DRAW_XOR); - break; - - case 1: - draw_disc(xx, yy, 7, 3, DRAW_PUT); - draw_disc(xx, yy, 5, 1, DRAW_ERASE); - draw_disc(xx, yy, 2, 1, DRAW_PUT); - break; - - case 2: - draw_disc(xx, yy, 8, 3, DRAW_ERASE); - break; - - case 3: - draw_disc(x, y, 7, 2, DRAW_PUT); - draw_disc(x, y, 5, 3, DRAW_XOR); - draw_disc(x, y, 2, 3, DRAW_XOR); - break; - - case 4: - draw_disc(x, y, 7, 3, DRAW_PUT); - draw_disc(x, y, 5, 1, DRAW_ERASE); - draw_disc(x, y, 2, 1, DRAW_PUT); - break; - - case 5: - draw_disc(xx, yy, 7, 3, DRAW_XOR); - break; - } -} - -void progress_callback(unsigned int cb) -{ - static unsigned char step = 0; - unsigned char x; - if(keys[0] || keys[1]) - { - setBacklight(BL_AUTO); - if(KEY_Exit) - c4_abort = 1; - } - - for(x=0;x<6;x++) - { - draw_char(40+(x<<3),24,224+step,3,DRAW_NORCU); - } - draw_hline(40,24,48,3,DRAW_PUT); - step--; - step &= 0x07; -} - -void win_callback(unsigned int cb) -{ - int x1, y1, x2, y2; - - c4_win_coords(&x1, &y1, &x2, &y2); - - if(x1 > x2) - x1 = 1; - else if(x1 < x2) - x1 = -1; - else - x1 = 0; - - if(y1 > y2) - y1 = 1; - else if(y1 < y2) - y1 = -1; - else - y1 = 0; - - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; - draw_stone(x2,5-y2,5); - x2+=x1; - y2+=y1; -} - -void draw_marker(void) -{ - draw_stone(10+(col*18), 22,c4_player+3); - draw_arrow(7+(col*18), 31, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 0, 152, ARROW_LEFT, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 6, 152, ARROW_RIGHT, ARROW_LEN, 3, DRAW_PUT); - draw_string(12,152,"Select",3,DRAW_PUT); - draw_arrow( 75, 153, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_string(84,152,"Play move",3,DRAW_PUT); -} - -void delete_marker(void) -{ - draw_disc(10+(col*18), 22, 7, 3, DRAW_ERASE); - draw_arrow(7+(col*18), 31, ARROW_DOWN, ARROW_LEN, 3, DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); -} - -int checkwin(void) -{ - if(c4_is_winner(0) || c4_is_winner(1) || c4_is_tie()) - { - if(!c4_is_tie()) - { - startCB(c4_wcb); - } - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - delete_marker(); - set_font(BOLDFONT); - if(c4_is_winner(c4_player)) - draw_string(19,14,"Spieler gewinnt!",3,DRAW_PUT); - else if(c4_is_tie()) - draw_string(24,14,"Unentschieden!",3,DRAW_PUT); - else - draw_string(13,14,"Computer gewinnt!",3,DRAW_PUT); - - draw_string(2,25,"OK: Nochmal Exit: Ende",3,DRAW_PUT); - return 1; - } - return 0; -} - -void move(unsigned char p) -{ - unsigned char pp; - if(p) - { - p = 1; - pp = 0; - } - else - pp = 1; - - if(c4_make_move(p, col, &row)) - { - draw_stone(col, 5-row, p); - draw_disc(10+(col*18), 23, 7, 3, DRAW_ERASE); - delete_marker(); - if(!checkwin()) - { - set_font(BOLDFONT); - draw_frame(35,13,57,22,5,5,3,DRAW_PUT); - draw_block(40,18,47,12,3,DRAW_PUT); - draw_string(40, 15, "Berechne", 3, DRAW_ERASE); - draw_string(0, 152, "Exit: Spiel abbrechen", 3, DRAW_PUT); - set_font(SMALLFONT); - progress_callback(0xff); - startCB(c4_cb); - c4_abort = 0; - c4_auto_move(~p, c4_level, &ccol, &row); - setBacklight(BL_AUTO); - stopCB(c4_cb); - draw_block(0,13,128,22,3,DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - draw_stone(ccol, 5-row, pp); - } - draw_marker(); - c4_moves++; - checkwin(); - } -} - -void c4_selplayer(unsigned char p) -{ - draw_string(30, 15, "Chooose Your", 3, DRAW_PUT); - draw_string(25, 26, "Colour & Level", 3, DRAW_PUT); - draw_arrow( 0, 154, ARROW_UP, ARROW_LEN, 3, DRAW_PUT); - draw_arrow(1 * 6, 154, ARROW_DOWN, ARROW_LEN, 3, DRAW_PUT); - draw_string(15,152,"Level",3,DRAW_PUT); - - draw_arrow( 82, 153, ARROW_LEFT, ARROW_LEN, 3, DRAW_PUT); - draw_arrow( 88, 153, ARROW_RIGHT, ARROW_LEN, 3, DRAW_PUT); - draw_string(94,152,"Colour",3,DRAW_PUT); - - draw_frame(1, 15, 19, 19, 1, 3, 3, DRAW_PUT); - draw_frame(108,15, 19, 19, 1, 3, 3, DRAW_PUT); - - draw_disc(10, 24, 7, 3, DRAW_ERASE); - draw_stone(10, 24, p+3); - draw_disc(117, 24, 7, 3, DRAW_ERASE); - draw_stone(117,24, p+3); -} - -void start_connect4(void) -{ - unsigned char x,y; - - Game_state s_stk[C4_MAX_LEVEL+1]; - state_stack = s_stk; - - evaluate = _evaluate; - push_state = _push_state; - drop_piece = _drop_piece; - mcpy = _mcpy; - - seed = 0x86f2a981; - - c4_cb = addTimerCB(progress_callback, 35); - c4_wcb = addTimerCB(win_callback, 100); - - row = 0; ccol = 0; - c4_player = 0; - c4_level = 3; - lcd_fill(0);//Clr screen - - set_font(BOLDFONT); - draw_string(0, 0, "Connect4", 3, DRAW_PUT); - - draw_block(0,10,128,2,3,DRAW_PUT); - draw_block(0,149,128,2,3,DRAW_PUT); - - draw_frame(1,37,127,109,9,9,3,DRAW_PUT); - draw_block(10,46,109,91,3,DRAW_PUT); - -restart: - stopCB(c4_wcb); - col = 3; - draw_block(0,14,128,20,3,DRAW_ERASE); - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - c4_selplayer(c4_player); - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - - c4_moves = 0; - - for(x=0;x<7;x++) - { - for(y=0;y<6;y++) - { - draw_disc(10+(x*18), 46+(y*18),8,3,DRAW_ERASE); - } - } - - c4_reset(); - c4_new_game(C4_SIZEX, C4_SIZEY, 4); - - while(1) - { -wait4c: - waitKeyUpDown(); - - if((KEY_OK || KEY_0) && (c4_is_winner(0) || c4_is_winner(1) || c4_is_tie()) && (c4_moves != 0)) goto restart; - else if(KEY_0) - goto restart; - if(KEY_Exit) - { - stopCB(c4_cb); - stopCB(c4_wcb); - removeTimerCB(c4_cb); - removeTimerCB(c4_wcb); - return; - } - else if(c4_moves == 0) - { - if(KEY_Left || KEY_Right) - { - if(c4_player) c4_player=0; else c4_player = 1; - c4_selplayer(c4_player); - } - else if(KEY_OK && c4_player == 1) - { - delete_marker(); - c4_auto_move(0, c4_level, &ccol, &row); - draw_stone(ccol, 5-row, 0); - draw_marker(); - } - else if(KEY_Up) - { - draw_numU(48,152,c4_level,0,3,DRAW_ERASE); - c4_level++; - if(c4_level > C4_MAX_LEVEL) - c4_level = 1; - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - } - else if(KEY_Down) - { - draw_numU(48,152,c4_level,0,3,DRAW_ERASE); - c4_level--; - if(c4_level < 1) - c4_level = C4_MAX_LEVEL; - draw_numU(48,152,c4_level,0,3,DRAW_PUT); - } - if(KEY_OK) - { - c4_moves++; - draw_block(0, 152, 128, 8, 3, DRAW_ERASE); - delete_marker(); - draw_block(0,13,128,22,3,DRAW_ERASE); - set_font(SMALLFONT); - draw_marker(); - } - goto wait4c; - } - else if(!c4_is_winner(0) && !c4_is_winner(1) && !c4_is_tie()) - { - if(KEY_1 || KEY_2 || KEY_3 || KEY_4 || KEY_5 || KEY_6 || KEY_7) - { - delete_marker(); - if(KEY_1) - col = 0; - else if(KEY_2) - col = 1; - else if(KEY_3) - col = 2; - else if(KEY_4) - col = 3; - else if(KEY_5) - col = 4; - else if(KEY_6) - col = 5; - else if(KEY_7) - col = 6; - draw_marker(); - - move(c4_player); - } - else if(KEY_Left || KEY_Right) - { - delete_marker(); - if(KEY_Left) - col--; - else if(KEY_Right) - col++; - - if(col > 6) - col = 0; - else if(col < 0) - col = 6; - draw_marker(); - } - else if(KEY_Down || KEY_OK) - { - move(c4_player); - if(c4_abort) - { - c4_abort = 0; - goto restart; - } - } - } - } -} - diff --git a/boop/trunk/games/connect4.h b/boop/trunk/games/connect4.h deleted file mode 100644 index 5962d9d..0000000 --- a/boop/trunk/games/connect4.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - connect4.c - game - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef CONNECT4_H -#define CONNECT4_H - -#ifndef Boolean -#define Boolean char -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define C4_NONE 2 -#define C4_MAX_LEVEL 20 - -void start_connect4(void); - -#endif diff --git a/boop/trunk/games/gamesmenu.c b/boop/trunk/games/gamesmenu.c deleted file mode 100644 index 230db87..0000000 --- a/boop/trunk/games/gamesmenu.c +++ /dev/null @@ -1,35 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "menu.h" -#include "tic_tac_toe.h" -#include "sokoban.h" -#include "connect4.h" - -const struct MENU_ENTRY gamesMenuEntries[] = -{ - { &GameTicTacToe, 0, FUNCENTRY, "TicTacToe", "Play TicTacToe" }, - { &GameSokoban, 0, FUNCENTRY, "Sokoban", "Play Sokoban" }, - { &start_connect4, 0, FUNCENTRY, "Connect4", "Play Connect4" } -}; - - -const struct MENU gamesMenu = -{ - 3, (MENU_ENTRY*)&gamesMenuEntries, "Games" -}; diff --git a/boop/trunk/games/gamesmenu.h b/boop/trunk/games/gamesmenu.h deleted file mode 100644 index d84df17..0000000 --- a/boop/trunk/games/gamesmenu.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - mainmenu.h - the main menu for boop - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef MAINMENU_H -#define MAINMENU_H - -extern const struct MENU gamesMenu; - -#endif diff --git a/boop/trunk/games/sokoban.c b/boop/trunk/games/sokoban.c deleted file mode 100644 index db0305b..0000000 --- a/boop/trunk/games/sokoban.c +++ /dev/null @@ -1,614 +0,0 @@ -/* - sokoban.c - game - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" - -#include "sokoban.h" -#include "sokoban_levels.h" - -//#include "stdio.h" - -void GameSokoban_InitGameField(struct _SokobanGameInfo *pGI) -{ - int SizeX; - int SizeY; - int x; - int y; - int Pos; - int i; - - if((pGI->Level < 1) || (pGI->Level > SOKOBAN_LEVELS)) - { - //Invalid level - pGI->Level = 1; - } - - //Empty the game field - for(x=0; xG[x][y] = SPACE; - } - } - - //Find the position to searched level - Pos = 0; - i = 1; - while(iLevel) - { - SizeX = Sokoban_Levels[Pos++]; - SizeY = Sokoban_Levels[Pos++]; - Pos += SizeY * ((SizeX+1)/2); - i++; - } - - //Copy the (may be smaller) level to the center of the game field - SizeX = Sokoban_Levels[Pos++]; - SizeY = Sokoban_Levels[Pos++]; - for(y=0; y lo nibble - pGI->G[x+((SOKOBAN_CELLS_X-SizeX)/2)][y+((SOKOBAN_CELLS_Y-SizeY)/2)] = Sokoban_Levels[Pos + (y * ((SizeX+1)/2)) + (x/2)] & 0x0F; - } - else - { - //Even x -> hi nibble - pGI->G[x+((SOKOBAN_CELLS_X-SizeX)/2)][y+((SOKOBAN_CELLS_Y-SizeY)/2)] = (Sokoban_Levels[Pos + (y * ((SizeX+1)/2)) + (x/2)] >> 4) & 0x0F; - } - } - } -} - - -BOOL GameSokoban_IsSolved(BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]) -{ - //Return true=Solved - int x; - int y; - - for(x=0; xMoves = 0; - pGI->UndoCount = 0; - - GameSokoban_InitGameField(pGI); - - //Game field to display - for(x=0; xG[x][y]); - if(pGI->G[x][y] & PUSHER) - { - pGI->PusherX = x; - pGI->PusherY = y; - } - } - } -} - -void GameSokoban_Move(struct _SokobanGameInfo *pGI) -{ - if(KEY_Up) - { - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 1] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 1] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_UP); - - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY-1] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-1, pGI->G[pGI->PusherX][pGI->PusherY-1]); - - pGI->PusherY--; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX][pGI->PusherY - 2] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_UP); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY - 1] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX][pGI->PusherY-1] ^= PACKET; - pGI->G[pGI->PusherX][pGI->PusherY-2] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-1, pGI->G[pGI->PusherX][pGI->PusherY-1]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY-2, pGI->G[pGI->PusherX][pGI->PusherY-2]); - - pGI->PusherY--; - pGI->Moves++; - } - } - } - } - if(KEY_Down) - { - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 1] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 1] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_DOWN); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY+1] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+1, pGI->G[pGI->PusherX][pGI->PusherY+1]); - - pGI->PusherY++; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX][pGI->PusherY + 2] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_DOWN); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX][pGI->PusherY + 1] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX][pGI->PusherY+1] ^= PACKET; - pGI->G[pGI->PusherX][pGI->PusherY+2] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+1, pGI->G[pGI->PusherX][pGI->PusherY+1]); - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY+2, pGI->G[pGI->PusherX][pGI->PusherY+2]); - - pGI->PusherY++; - pGI->Moves++; - } - } - } - } - if(KEY_Left) - { - if(!(pGI->G[pGI->PusherX - 1][pGI->PusherY] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX - 1][pGI->PusherY] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_LEFT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 1, pGI->PusherY, pGI->G[pGI->PusherX - 1][pGI->PusherY]); - - pGI->PusherX--; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX - 2][pGI->PusherY] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_LEFT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX - 1][pGI->PusherY] ^= PACKET; - pGI->G[pGI->PusherX - 2][pGI->PusherY] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 1, pGI->PusherY, pGI->G[pGI->PusherX - 1][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX - 2, pGI->PusherY, pGI->G[pGI->PusherX - 2][pGI->PusherY]); - - pGI->PusherX--; - pGI->Moves++; - } - } - } - } - if(KEY_Right) - { - if(!(pGI->G[pGI->PusherX + 1][pGI->PusherY] & WALL)) - { - //No wall - if(!(pGI->G[pGI->PusherX + 1][pGI->PusherY] & PACKET)) - { - //No wall and no packet - GameSokoban_SaveUndo(pGI, 2, SOKOBAN_UNDO_DIR_RIGHT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PUSHER; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 1, pGI->PusherY, pGI->G[pGI->PusherX + 1][pGI->PusherY]); - - pGI->PusherX++; - pGI->Moves++; - } - else - { - //Packet -> check if it is space behind the packet - if(!(pGI->G[pGI->PusherX + 2][pGI->PusherY] & (PACKET | WALL))) - { - //No packet or wall behind the packet - GameSokoban_SaveUndo(pGI, 3, SOKOBAN_UNDO_DIR_RIGHT); - //Move pusher - pGI->G[pGI->PusherX][pGI->PusherY] ^= PUSHER; - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PUSHER; - - //Move packet - pGI->G[pGI->PusherX + 1][pGI->PusherY] ^= PACKET; - pGI->G[pGI->PusherX + 2][pGI->PusherY] ^= PACKET; - - //Draw changed cells - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY, pGI->G[pGI->PusherX][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 1, pGI->PusherY, pGI->G[pGI->PusherX + 1][pGI->PusherY]); - GameSokoban_DrawCell(pGI->PusherX + 2, pGI->PusherY, pGI->G[pGI->PusherX + 2][pGI->PusherY]); - - pGI->PusherX++; - pGI->Moves++; - } - } - } - } - -} - -void GameSokoban_UndoAMove(struct _SokobanGameInfo *pGI) -{ - //3 Byte UndoBuffer: - //[ 0 ][ 1 ][ 2 ] - //765432107654321076543210 - //\-x-/\-y-/\/\o0/\o1/\o2/ - - BYTE Object[3]; - BYTE Dir; - int i; - int Count; - - if(pGI->UndoCount <= 0) - { - return;//No more undos available - } - - pGI->UndoCount--; - - pGI->PusherX = (pGI->UndoBuffer[pGI->UndoCount][0] >> 3) & 0x1F; - pGI->PusherY = (pGI->UndoBuffer[pGI->UndoCount][0] << 2) & 0x1F; - pGI->PusherY |= (pGI->UndoBuffer[pGI->UndoCount][1] >> 6) & 0x03; - Dir = (pGI->UndoBuffer[pGI->UndoCount][1] >> 4) & 0x03; - Object[0] = pGI->UndoBuffer[pGI->UndoCount][1] & 0x0F; - Object[1] = (pGI->UndoBuffer[pGI->UndoCount][2] >> 4) & 0x0F; - Object[2] = pGI->UndoBuffer[pGI->UndoCount][2] & 0x0F; - - Count = (Object[2] == 0x0F) ? 2 : 3; - - for(i=0; iG[pGI->PusherX - i][pGI->PusherY] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX - i, pGI->PusherY, pGI->G[pGI->PusherX - i][pGI->PusherY]); - break; - case SOKOBAN_UNDO_DIR_RIGHT: - pGI->G[pGI->PusherX + i][pGI->PusherY] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX + i, pGI->PusherY, pGI->G[pGI->PusherX + i][pGI->PusherY]); - break; - case SOKOBAN_UNDO_DIR_UP: - pGI->G[pGI->PusherX][pGI->PusherY - i] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY - i, pGI->G[pGI->PusherX][pGI->PusherY - i]); - break; - case SOKOBAN_UNDO_DIR_DOWN: - pGI->G[pGI->PusherX][pGI->PusherY + i] = Object[i]; - GameSokoban_DrawCell(pGI->PusherX, pGI->PusherY + i, pGI->G[pGI->PusherX][pGI->PusherY + i]); - break; - } - } - - pGI->Moves--; -} - -void GameSokoban_SaveUndo(struct _SokobanGameInfo *pGI, BYTE Count, BYTE Dir) -{ - //3 Byte UndoBuffer: - //[ 0 ][ 1 ][ 2 ] - //765432107654321076543210 - //\-x-/\-y-/\/\o0/\o1/\o2/ - - BYTE Object[3]; - int i; - -// ASSERT((Count == 2) || (Count == 3)); - - Object[2] = 0x0F;//Default value for not used - - for(i=0; iG[pGI->PusherX - i][pGI->PusherY]; - break; - case SOKOBAN_UNDO_DIR_RIGHT: - Object[i] = pGI->G[pGI->PusherX + i][pGI->PusherY]; - break; - case SOKOBAN_UNDO_DIR_UP: - Object[i] = pGI->G[pGI->PusherX][pGI->PusherY - i]; - break; - case SOKOBAN_UNDO_DIR_DOWN: - Object[i] = pGI->G[pGI->PusherX][pGI->PusherY + i]; - break; - } - } - - if(pGI->UndoCount >= SOKOBAN_MAX_UNDOS) - { - //Undo buffer is full -> free oldest - for(i=0; i<(SOKOBAN_MAX_UNDOS-1); i++) - { - pGI->UndoBuffer[i][0] = pGI->UndoBuffer[i+1][0]; - pGI->UndoBuffer[i][1] = pGI->UndoBuffer[i+1][1]; - pGI->UndoBuffer[i][2] = pGI->UndoBuffer[i+1][2]; - } - pGI->UndoCount--; - } - - pGI->UndoBuffer[pGI->UndoCount][0] = (pGI->PusherX & 0x1F) << 3; - pGI->UndoBuffer[pGI->UndoCount][0] |= ((pGI->PusherY & 0x1F) >> 2) & 0x07; - - pGI->UndoBuffer[pGI->UndoCount][1] = (pGI->PusherY & 0x1F) << 6; - pGI->UndoBuffer[pGI->UndoCount][1] |= (Dir & 3) << 4; - pGI->UndoBuffer[pGI->UndoCount][1] |= Object[0] & 0x0F; - - pGI->UndoBuffer[pGI->UndoCount][2] = (Object[1] & 0x0F) << 4; - pGI->UndoBuffer[pGI->UndoCount][2] |= Object[2] & 0x0F; - - pGI->UndoCount++; -} - -void GameSokoban() -{ - struct _SokobanGameInfo GI; - int i; - - GI.Level = 1; -restart: - //Init the display - lcd_fill(0);//Clr screen - - //Title - draw_string(0, 0, "Sokoban", LCD_COLOR_B, DRAW_PUT); - - //Grid - for(i=0; i<=SOKOBAN_CELLS_X; i++) - { - draw_vline(i*(SOKOBAN_CELL_SIZE+1),16,SOKOBAN_CELLS_Y*(SOKOBAN_CELL_SIZE+1)+1, LCD_COLOR_LG, DRAW_PUT); - } - for(i=0; i<=SOKOBAN_CELLS_Y; i++) - { - draw_hline(0, 16 + i*(SOKOBAN_CELL_SIZE+1),SOKOBAN_CELLS_X*(SOKOBAN_CELL_SIZE+1)+1, LCD_COLOR_LG, DRAW_PUT); - } - - draw_string(0, 8, "Level: Moves:", LCD_COLOR_B, DRAW_PUT); - draw_char(98,8,'0',LCD_COLOR_B,DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*3), "Program +/-:", LCD_COLOR_B, DRAW_PUT); - draw_string(65, LCD_SIZE_Y - (8*3), "Level +/- 1", LCD_COLOR_B, DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*2), "Volume +/-:", LCD_COLOR_B, DRAW_PUT); - draw_string(65, LCD_SIZE_Y - (8*2), "Level +/- 20", LCD_COLOR_B, DRAW_PUT); - draw_arrow( 0, LCD_SIZE_Y - 8, ARROW_UP, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(1 * 6, LCD_SIZE_Y - 8, ARROW_DOWN, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(2 * 6, LCD_SIZE_Y - 8, ARROW_LEFT, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_arrow(3 * 6, LCD_SIZE_Y - 8, ARROW_RIGHT, ARROW_LEN, LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - 8, "Bewegen", LCD_COLOR_B, DRAW_PUT); - -again: - GameSokoban_InitDisplayForNewGame(&GI); - draw_block(32, 8, 30, 8, LCD_COLOR_B, DRAW_ERASE); - draw_numU(32,8,GI.Level,0,LCD_COLOR_B,DRAW_PUT); - - while(1) - { - if(KEY_Up || KEY_Down || KEY_Left || KEY_Right || KEY_8) - { - draw_block(98, 8, 30, 8, LCD_COLOR_B, DRAW_ERASE); - if(KEY_8) - GameSokoban_UndoAMove(&GI); - else - GameSokoban_Move(&GI); - - if(GameSokoban_IsSolved(GI.G) && !KEY_8) - { - //Solved - GI.Level++;//Next level - if(GI.Level > SOKOBAN_LEVELS) - { - GI.Level = 1; - } - waitKeyUp(); - goto restart; - } - draw_numU(98,8,GI.Moves,0,LCD_COLOR_B,DRAW_PUT); - } - - - //Footer - if(GI.Moves == 1) - { - draw_block(0, LCD_SIZE_Y - (8*3), LCD_SIZE_X, 16, LCD_COLOR_B, DRAW_ERASE); - draw_string(0, LCD_SIZE_Y - (8*3), "0", LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - (8*3), "Neues Spiel", LCD_COLOR_B, DRAW_PUT); - draw_string(0, LCD_SIZE_Y - (8*2), "Exit", LCD_COLOR_B, DRAW_PUT); - draw_string(32, LCD_SIZE_Y - (8*2), "Spiel beenden", LCD_COLOR_B, DRAW_PUT); - } - - waitKeyUpDown(); - - if(GI.Moves == 0) - { - if(KEY_Pplus || KEY_Pminus || KEY_Vplus || KEY_Vminus) - { - //Change level - //Program keys +/- 1 - if(KEY_Pplus) - { - GI.Level++; - } - if(KEY_Pminus) - { - GI.Level--; - } - //Volume keys +/- 20 - if(KEY_Vplus) - { - GI.Level += 20; - } - if(KEY_Vminus) - { - GI.Level -= 20; - } - //Wrap around if necessary - if(GI.Level < 1) - { - GI.Level += SOKOBAN_LEVELS; - } - if(GI.Level > SOKOBAN_LEVELS) - { - GI.Level -= SOKOBAN_LEVELS; - } - //New game - goto again; - } - } - if(KEY_0) goto restart; - if(KEY_Exit) return; - } -} - diff --git a/boop/trunk/games/sokoban.h b/boop/trunk/games/sokoban.h deleted file mode 100644 index fe5621a..0000000 --- a/boop/trunk/games/sokoban.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - sokoban.h - game - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SOKOBAN_H -#define SOKOBAN_H - -#include "../global.h" - -#define SOKOBAN_MAX_UNDOS 100 -#define SOKOBAN_UNDO_DIR_LEFT 0 -#define SOKOBAN_UNDO_DIR_RIGHT 1 -#define SOKOBAN_UNDO_DIR_UP 2 -#define SOKOBAN_UNDO_DIR_DOWN 3 - -#define SPACE 0 -#define GOAL 1 -#define PUSHER 2 -#define PACKET 4 -#define WALL 8 -#define PUSHER_ON_GOAL (PUSHER | GOAL) -#define PACKET_ON_GOAL (PACKET | GOAL) - -#define SOKOBAN_CELLS_X 21 -#define SOKOBAN_CELLS_Y 19 -//Size without grid -#define SOKOBAN_CELL_SIZE 5 - -struct _SokobanGameInfo -{ - BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]; - short Level; - int PusherX; - int PusherY; - WORD Moves; - WORD UndoCount; - BYTE UndoBuffer[SOKOBAN_MAX_UNDOS][3]; -}; - -void GameSokoban(void); -void GameSokoban_InitGameField(struct _SokobanGameInfo *pGI); -void GameSokoban_DrawCell(int x, int y, BYTE Object); -BOOL GameSokoban_IsSolved(BYTE G[SOKOBAN_CELLS_X][SOKOBAN_CELLS_Y]); -void GameSokoban_InitDisplayForNewGame(struct _SokobanGameInfo *pGI); -void GameSokoban_Move(struct _SokobanGameInfo *pGI); -void GameSokoban_SaveUndo(struct _SokobanGameInfo *pGI, BYTE Count, BYTE Dir); -void GameSokoban_UndoAMove(struct _SokobanGameInfo *pGI); - - -#endif diff --git a/boop/trunk/games/sokoban_levels.h b/boop/trunk/games/sokoban_levels.h deleted file mode 100644 index 437c9e1..0000000 --- a/boop/trunk/games/sokoban_levels.h +++ /dev/null @@ -1,4968 +0,0 @@ -/* - sokoban.h - game - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SOKOBAN_LEVELS_H -#define SOKOBAN_LEVELS_H - -#ifndef DEBUGMODE -#define SOKOBAN_LEVELS 375 -const unsigned char Sokoban_Levels[] = { -//Level: 1 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #$ # -0x00, 0x88, 0x80, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ### $## -0x00, 0x80, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x80, 0x88, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, //### # ## # ###### -0x80, 0x00, 0x80, 0x88, 0x08, 0x88, 0x88, 0x00, 0x11, 0x80, //# # ## ##### ..# -0x80, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, //# $ $ ..# -0x88, 0x88, 0x80, 0x88, 0x80, 0x82, 0x88, 0x00, 0x11, 0x80, //##### ### #@## ..# -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 2 -0x0E, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############ -0x81, 0x10, 0x08, 0x00, 0x00, 0x08, 0x88, //#.. # ### -0x81, 0x10, 0x08, 0x04, 0x00, 0x40, 0x08, //#.. # $ $ # -0x81, 0x10, 0x08, 0x48, 0x88, 0x80, 0x08, //#.. #$#### # -0x81, 0x10, 0x00, 0x02, 0x08, 0x80, 0x08, //#.. @ ## # -0x81, 0x10, 0x08, 0x08, 0x00, 0x40, 0x88, //#.. # # $ ## -0x88, 0x88, 0x88, 0x08, 0x84, 0x04, 0x08, //###### ##$ $ # -0x00, 0x80, 0x40, 0x04, 0x04, 0x04, 0x08, // # $ $ $ $ # -0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, // # # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, // ############ -//Level: 3 -0x11, 0x0A,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x28, 0x00, // # @# -0x00, 0x00, 0x00, 0x00, 0x80, 0x48, 0x40, 0x88, 0x00, // # $#$ ## -0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x04, 0x80, 0x00, // # $ $# -0x00, 0x00, 0x00, 0x00, 0x88, 0x40, 0x40, 0x80, 0x00, // ##$ $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x40, 0x80, 0x88, 0x80, //######### $ # ### -0x81, 0x11, 0x10, 0x08, 0x80, 0x40, 0x04, 0x00, 0x80, //#.... ## $ $ # -0x88, 0x11, 0x10, 0x00, 0x04, 0x00, 0x40, 0x00, 0x80, //##... $ $ # -0x81, 0x11, 0x10, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, //#.... ########## -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 4 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x00, 0x08, 0x00, 0x00, 0x80, //# # # -0x80, 0x42, 0x44, 0x44, 0x40, 0x80, //# $@$$$$$ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x80, 0x88, 0x88, 0x80, //##### ##### -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, // #...# -0x00, 0x08, 0x10, 0x08, 0x00, 0x00, // #. # -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 5 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, //# # # # -0x80, 0x40, 0x08, 0x88, 0x80, 0x40, 0x80, //# $ #### $ # -0x80, 0x40, 0x00, 0x00, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x08, 0x88, 0x28, 0x88, 0x40, 0x80, //# ###@###$ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x88, //########## ### -0x81, 0x10, 0x00, 0x88, 0x00, 0x00, 0x08, //#.. ## # -0x81, 0x10, 0x00, 0x88, 0x40, 0x00, 0x08, //#.. ##$ # -0x81, 0x10, 0x00, 0x88, 0x04, 0x00, 0x08, //#.. ## $ # -0x81, 0x10, 0x00, 0x88, 0x04, 0x00, 0x08, //#.. ## $ # -0x81, 0x10, 0x00, 0x00, 0x40, 0x40, 0x08, //#.. $ $ # -0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, //### ######### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 6 -0x0B, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x00, 0x00, 0x80, 0x00, 0x80, //# # # -0x80, 0x00, 0x40, 0x04, 0x00, 0x80, //# $ $ # -0x88, 0x88, 0x80, 0x80, 0x00, 0x80, //##### # # -0x88, 0x88, 0x80, 0x88, 0x81, 0x80, //##### ###.# -0x80, 0x08, 0x00, 0x00, 0x81, 0x80, //# # #.# -0x80, 0x40, 0x00, 0x40, 0x81, 0x80, //# $ $ #.# -0x80, 0x08, 0x88, 0x08, 0x81, 0x80, //# ### ##.# -0x88, 0x08, 0x88, 0x00, 0x81, 0x80, //## ### #.# -0x80, 0x40, 0x00, 0x40, 0x81, 0x80, //# $ $ #.# -0x80, 0x00, 0x88, 0x00, 0x81, 0x80, //# ## #.# -0x88, 0x80, 0x88, 0x88, 0x81, 0x80, //### #####.# -0x88, 0x80, 0x80, 0x00, 0x20, 0x80, //### # @ # -0x80, 0x04, 0x00, 0x00, 0x40, 0x80, //# $ $ # -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, //# ## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 7 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x02, 0x88, //#### @## -0x88, 0x88, 0x00, 0x08, //#### # -0x81, 0x08, 0x44, 0x08, //#. #$$ # -0x80, 0x00, 0x00, 0x88, //# ## -0x81, 0x00, 0x48, 0x88, //#. $### -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 8 -0x0C, 0x06,//Size x and y -0x08, 0x88, 0x80, 0x08, 0x88, 0x88, // #### ##### -0x88, 0x00, 0x80, 0x08, 0x00, 0x08, //## # # # -0x80, 0x40, 0x88, 0x88, 0x40, 0x08, //# $ ####$ # -0x80, 0x04, 0x11, 0x11, 0x04, 0x08, //# $.... $ # -0x88, 0x00, 0x00, 0x80, 0x20, 0x88, //## # @ ## -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 9 -0x07, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x04, 0x01, 0x80, //# $ .# -0x80, 0x02, 0x40, 0x80, //# @$ # -0x80, 0x08, 0x41, 0x80, //# #$.# -0x80, 0x01, 0x08, 0x80, //# . ## -0x88, 0x88, 0x88, 0x00, //###### -//Level: 10 -0x07, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x80, 0x08, 0x80, //### ## -0x80, 0x00, 0x40, 0x80, //# $ # -0x80, 0x81, 0x82, 0x80, //# #.#@# -0x80, 0x84, 0x01, 0x80, //# #$ .# -0x80, 0x01, 0x40, 0x80, //# .$ # -0x88, 0x00, 0x08, 0x80, //## ## -0x08, 0x88, 0x88, 0x00, // ##### -//Level: 11 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x80, 0x00, //# #### -0x80, 0x00, 0x00, 0x88, 0x80, //# ### -0x80, 0x08, 0x40, 0x10, 0x80, //# #$ . # -0x88, 0x08, 0x18, 0x40, 0x80, //## #.#$ # -0x80, 0x08, 0x02, 0x50, 0x80, //# # @* # -0x80, 0x00, 0x50, 0x08, 0x80, //# * ## -0x88, 0x88, 0x00, 0x88, 0x00, //#### ## -0x00, 0x08, 0x88, 0x80, 0x00, // #### -//Level: 12 -0x09, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, // #### -0x00, 0x82, 0x08, 0x00, 0x00, // #@ # -0x88, 0x80, 0x08, 0x88, 0x80, //### #### -0x80, 0x01, 0x50, 0x00, 0x80, //# .* # -0x80, 0x41, 0x10, 0x40, 0x80, //# $.. $ # -0x88, 0x80, 0x48, 0x88, 0x80, //### $#### -0x00, 0x80, 0x08, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 13 -0x0D, 0x11,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, // ### -0x00, 0x00, 0x88, 0x18, 0x80, 0x00, 0x00, // ##.## -0x00, 0x00, 0x81, 0x11, 0x80, 0x00, 0x00, // #...# -0x00, 0x88, 0x81, 0x12, 0x88, 0x80, 0x00, // ###..@### -0x00, 0x80, 0x01, 0x11, 0x00, 0x80, 0x00, // # ... # -0x88, 0x80, 0x88, 0x18, 0x80, 0x88, 0x80, //### ##.## ### -0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //# $ # -0x80, 0x08, 0x00, 0x40, 0x08, 0x00, 0x80, //# # $ # # -0x88, 0x48, 0x48, 0x88, 0x48, 0x48, 0x80, //##$#$###$#$## -0x80, 0x08, 0x00, 0x40, 0x08, 0x00, 0x80, //# # $ # # -0x80, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //# $ # -0x88, 0x80, 0x08, 0x08, 0x00, 0x88, 0x80, //### # # ### -0x00, 0x80, 0x88, 0x08, 0x80, 0x80, 0x00, // # ## ## # -0x00, 0x80, 0x04, 0x04, 0x00, 0x80, 0x00, // # $ $ # -0x00, 0x80, 0x88, 0x08, 0x80, 0x80, 0x00, // # ## ## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 14 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x21, 0x80, 0x08, //# @.# # -0x80, 0x14, 0x01, 0x08, //# .$ . # -0x80, 0x08, 0x40, 0x08, //# #$ # -0x80, 0x04, 0x00, 0x88, //# $ ## -0x88, 0x80, 0x08, 0x80, //### ## -0x00, 0x80, 0x08, 0x00, // # # -0x00, 0x88, 0x88, 0x00, // #### -//Level: 15 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x80, 0x00, 0x00, 0x08, 0x00, //# # -0x80, 0x84, 0x40, 0x08, 0x00, //# #$$ # -0x80, 0x11, 0x18, 0x08, 0x00, //# ...# # -0x88, 0x11, 0x14, 0x08, 0x80, //##...$ ## -0x08, 0x08, 0x80, 0x40, 0x80, // # ## $ # -0x08, 0x40, 0x04, 0x00, 0x80, // #$ $ # -0x08, 0x00, 0x80, 0x02, 0x80, // # # @# -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 16 -0x0B, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x88, 0x84, 0x14, 0x88, 0x88, 0x80, //###$.$##### -0x80, 0x00, 0x10, 0x40, 0x00, 0x80, //# . $ # -0x80, 0x88, 0x48, 0x80, 0x20, 0x80, //# ##$## @ # -0x80, 0x00, 0x10, 0x88, 0x88, 0x80, //# . ##### -0x88, 0x80, 0x10, 0x80, 0x00, 0x00, //### . # -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 17 -0x0C, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x80, //###### ### -0x81, 0x10, 0x08, 0x08, 0x82, 0x88, //#.. # ##@## -0x81, 0x10, 0x08, 0x88, 0x00, 0x08, //#.. ### # -0x81, 0x10, 0x00, 0x00, 0x44, 0x08, //#.. $$ # -0x81, 0x10, 0x08, 0x08, 0x04, 0x08, //#.. # # $ # -0x81, 0x18, 0x88, 0x08, 0x04, 0x08, //#..### # $ # -0x88, 0x88, 0x04, 0x08, 0x40, 0x08, //#### $ #$ # -0x00, 0x08, 0x00, 0x48, 0x04, 0x08, // # $# $ # -0x00, 0x08, 0x04, 0x00, 0x40, 0x08, // # $ $ # -0x00, 0x08, 0x00, 0x88, 0x00, 0x08, // # ## # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -//Level: 18 -0x10, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, //# ########## -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x88, //# # # ## -0x80, 0x40, 0x00, 0x80, 0x00, 0x40, 0x40, 0x08, //# $ # $ $ # -0x80, 0x04, 0x00, 0x80, 0x04, 0x08, 0x80, 0x08, //# $ # $ ## # -0x80, 0x44, 0x00, 0x88, 0x40, 0x40, 0x00, 0x08, //# $$ ##$ $ # -0x88, 0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x88, //## # ## ####### -0x88, 0x08, 0x00, 0x88, 0x00, 0x00, 0x11, 0x18, //## # ## ...# -0x80, 0x08, 0x40, 0x00, 0x00, 0x00, 0x11, 0x18, //# #$ ...# -0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x11, 0x18, //# $$ ...# -0x80, 0x00, 0x00, 0x88, 0x28, 0x00, 0x11, 0x18, //# ##@# ...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 19 -0x0D, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -0x08, 0x00, 0x00, 0x10, 0x80, 0x00, 0x80, // # . # # -0x08, 0x00, 0x04, 0x50, 0x80, 0x40, 0x80, // # $* # $ # -0x08, 0x00, 0x08, 0x10, 0x80, 0x88, 0x80, // # #. # ### -0x08, 0x00, 0x88, 0x18, 0x00, 0x08, 0x00, // # ##.# # -0x88, 0x00, 0x88, 0x18, 0x04, 0x08, 0x80, //## ##.# $ ## -0x80, 0x00, 0x80, 0x18, 0x48, 0x00, 0x80, //# # .#$# # -0x80, 0x20, 0x80, 0x10, 0x00, 0x40, 0x80, //# @ # . $ # -0x80, 0x08, 0x80, 0x54, 0x48, 0x00, 0x80, //# ## *$$# # -0x80, 0x00, 0x80, 0x10, 0x00, 0x08, 0x80, //# # . ## -0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, //# ######## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //##### -//Level: 20 -0x0D, 0x0C,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x00, 0x00, 0x08, 0x00, 0x80, 0x08, 0x00, // # # # -0x00, 0x00, 0x08, 0x00, 0x44, 0x08, 0x00, // # $$ # -0x88, 0x88, 0x88, 0x04, 0x80, 0x08, 0x00, //###### $# # -0x81, 0x11, 0x88, 0x80, 0x80, 0x08, 0x80, //#...### # ## -0x81, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //#. # $ # # -0x81, 0x00, 0x00, 0x40, 0x40, 0x40, 0x80, //#. $ $ $ # -0x81, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //#. # $ # # -0x81, 0x11, 0x88, 0x80, 0x80, 0x08, 0x80, //#...### # ## -0x88, 0x88, 0x88, 0x04, 0x00, 0x08, 0x00, //###### $ # -0x00, 0x00, 0x08, 0x20, 0x80, 0x08, 0x00, // #@ # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 21 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x81, 0x18, 0x00, // #..# -0x08, 0x80, 0x18, 0x80, // ## .## -0x08, 0x00, 0x41, 0x80, // # $.# -0x88, 0x04, 0x00, 0x88, //## $ ## -0x80, 0x08, 0x44, 0x08, //# #$$ # -0x80, 0x02, 0x00, 0x08, //# @ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 22 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x88, 0x00, 0x00, 0x08, 0x80, //## ## -0x80, 0x81, 0x40, 0x40, 0x80, //# #.$ $ # -0x80, 0x15, 0x14, 0x00, 0x80, //# .*.$ # -0x80, 0x41, 0x81, 0x40, 0x80, //# $.#.$ # -0x80, 0x04, 0x18, 0x10, 0x80, //# $.#. # -0x80, 0x40, 0x41, 0x80, 0x80, //# $ $.# # -0x88, 0x00, 0x20, 0x08, 0x80, //## @ ## -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 23 -0x10, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x88, 0x88, 0x88, 0x88, 0x28, 0x80, 0x01, 0x18, //########@## ..# -0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x18, //# $ ..# -0x80, 0x40, 0x84, 0x08, 0x48, 0x80, 0x01, 0x18, //# $ #$ #$## ..# -0x88, 0x08, 0x80, 0x00, 0x08, 0x88, 0x81, 0x18, //## ## ####..# -0x08, 0x04, 0x04, 0x88, 0x08, 0x00, 0x88, 0x88, // # $ $## # #### -0x08, 0x08, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // # ## # # -0x88, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, //## # ## -0x80, 0x04, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //# $ ## -0x80, 0x08, 0x84, 0x08, 0x00, 0x00, 0x00, 0x00, //# ##$ # -0x80, 0x08, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# ## # -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 24 -0x0F, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00, 0x80, // # $ $ # -0x88, 0x88, 0x80, 0x04, 0x08, 0x44, 0x00, 0x80, //##### $ #$$ # -0x80, 0x00, 0x80, 0x88, 0x00, 0x00, 0x88, 0x80, //# # ## ### -0x81, 0x11, 0x00, 0x08, 0x80, 0x04, 0x80, 0x00, //#... ## $# -0x81, 0x11, 0x84, 0x40, 0x04, 0x00, 0x80, 0x00, //#...#$$ $ # -0x81, 0x11, 0x80, 0x02, 0x80, 0x08, 0x80, 0x00, //#...# @# ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //############ -//Level: 25 -0x09, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x02, 0x11, 0x18, 0x00, // # @...# -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x88, 0x84, 0x00, 0x00, 0x80, //###$ # -0x80, 0x00, 0x84, 0x80, 0x80, //# #$# # -0x80, 0x40, 0x80, 0x00, 0x80, //# $ # # -0x80, 0x00, 0x88, 0x88, 0x80, //# ##### -0x88, 0x88, 0x80, 0x00, 0x00, //##### -//Level: 26 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x80, 0x44, 0x00, 0x40, 0x00, 0x40, 0x40, 0x80, //# $$ $ $ $ # -0x80, 0x04, 0x08, 0x88, 0x88, 0x80, 0x80, 0x80, //# $ ###### # # -0x80, 0x44, 0x08, 0x20, 0x08, 0x00, 0x40, 0x80, //# $$ #@ # $ # -0x80, 0x00, 0x08, 0x00, 0x40, 0x00, 0x08, 0x80, //# # $ ## -0x88, 0x88, 0x88, 0x48, 0x80, 0x08, 0x81, 0x80, //######$## ##.# -0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x11, 0x80, // # # $ #..# -0x08, 0x00, 0x00, 0x40, 0x00, 0x81, 0x11, 0x80, // # $ #...# -0x08, 0x80, 0x88, 0x88, 0x08, 0x01, 0x11, 0x80, // ## #### # ...# -0x08, 0x00, 0x40, 0x00, 0x45, 0x11, 0x11, 0x80, // # $ $*....# -0x08, 0x00, 0x08, 0x00, 0x08, 0x10, 0x01, 0x80, // # # #. .# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -//Level: 27 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x00, 0x00, //# # -0x80, 0x44, 0x48, 0x80, 0x00, //# $$$## -0x80, 0x08, 0x11, 0x88, 0x80, //# #..### -0x88, 0x00, 0x11, 0x40, 0x80, //## ..$ # -0x08, 0x02, 0x00, 0x00, 0x80, // # @ # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 28 -0x0E, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, //###### ##### -0x80, 0x00, 0x08, 0x88, 0x08, 0x00, 0x18, //# ### # .# -0x80, 0x04, 0x04, 0x08, 0x08, 0x11, 0x18, //# $ $ # #...# -0x80, 0x80, 0x04, 0x08, 0x88, 0x00, 0x18, //# # $ ### .# -0x80, 0x04, 0x44, 0x00, 0x04, 0x02, 0x18, //# $$$ $ @.# -0x88, 0x80, 0x04, 0x00, 0x48, 0x00, 0x18, //### $ $# .# -0x00, 0x80, 0x04, 0x84, 0x08, 0x11, 0x18, // # $#$ #...# -0x00, 0x88, 0x00, 0x00, 0x08, 0x00, 0x18, // ## # .# -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // ########### -//Level: 29 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, //####### -0x80, 0x01, 0x40, 0x88, 0x80, //# .$ ### -0x80, 0x14, 0x14, 0x00, 0x80, //# .$.$ # -0x85, 0x41, 0x41, 0x20, 0x80, //#*$.$.@ # -0x80, 0x14, 0x14, 0x08, 0x80, //# .$.$ ## -0x80, 0x01, 0x40, 0x08, 0x00, //# .$ # -0x88, 0x88, 0x88, 0x88, 0x00, //######## -//Level: 30 -0x0A, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x81, 0x11, 0x88, 0x00, 0x80, //#...## # -0x81, 0x51, 0x00, 0x42, 0x80, //#.*. $@# -0x80, 0x04, 0x80, 0x08, 0x80, //# $# ## -0x88, 0x80, 0x88, 0x08, 0x88, //### ## ### -0x80, 0x00, 0x40, 0x00, 0x08, //# $ # -0x80, 0x04, 0x88, 0x48, 0x08, //# $##$# # -0x80, 0x00, 0x04, 0x00, 0x18, //# $ .# -0x88, 0x88, 0x88, 0x88, 0x88, //########## -//Level: 31 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x02, 0x80, //### @# -0x80, 0x04, 0x10, 0x88, //# $. ## -0x80, 0x01, 0x41, 0x08, //# .$. # -0x88, 0x80, 0x54, 0x08, //### *$ # -0x00, 0x80, 0x00, 0x88, // # ## -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 32 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, // #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, //######## #### -0x80, 0x00, 0x88, 0x11, 0x11, 0x10, 0x08, //# ##..... # -0x80, 0x04, 0x00, 0x88, 0x11, 0x18, 0x08, //# $ ##...# # -0x88, 0x00, 0x40, 0x08, 0x88, 0x08, 0x08, //## $ ### # # -0x08, 0x08, 0x04, 0x00, 0x80, 0x00, 0x08, // # # $ # # -0x08, 0x00, 0x80, 0x40, 0x08, 0x00, 0x08, // # # $ # # -0x08, 0x00, 0x08, 0x04, 0x00, 0x80, 0x08, // # # $ # # -0x08, 0x00, 0x00, 0x80, 0x40, 0x80, 0x88, // # # $ # ## -0x08, 0x88, 0x80, 0x08, 0x04, 0x00, 0x80, // #### # $ # -0x00, 0x00, 0x88, 0x00, 0x80, 0x40, 0x80, // ## # $ # -0x00, 0x00, 0x08, 0x82, 0x80, 0x00, 0x80, // ##@# # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 33 -0x0A, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x88, //### #### -0x80, 0x00, 0x40, 0x40, 0x08, //# $ $ # -0x80, 0x40, 0x00, 0x40, 0x28, //# $ $ @# -0x88, 0x84, 0x48, 0x88, 0x88, //###$$##### -0x00, 0x80, 0x01, 0x18, 0x00, // # ..# -0x00, 0x81, 0x11, 0x18, 0x00, // #....# -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 34 -0x09, 0x0C,//Size x and y -0x88, 0x88, 0x08, 0x88, 0x80, //#### #### -0x80, 0x08, 0x88, 0x00, 0x80, //# ### # -0x80, 0x00, 0x04, 0x00, 0x80, //# $ # -0x80, 0x08, 0x08, 0x00, 0x80, //# # # # -0x88, 0x08, 0x08, 0x48, 0x80, //## # #$## -0x80, 0x08, 0x18, 0x00, 0x80, //# #.# # -0x80, 0x05, 0x15, 0x02, 0x80, //# *.* @# -0x80, 0x08, 0x18, 0x08, 0x80, //# #.# ## -0x88, 0x88, 0x00, 0x08, 0x00, //#### # -0x00, 0x08, 0x08, 0x48, 0x00, // # #$# -0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 35 -0x0A, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x40, 0x11, 0x00, 0x80, //# $ .. # -0x82, 0x44, 0x11, 0x04, 0x88, //#@$$.. $## -0x80, 0x40, 0x11, 0x04, 0x08, //# $ .. $ # -0x88, 0x88, 0x88, 0x00, 0x08, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 36 -0x0F, 0x07,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, //##### ###### -0x80, 0x00, 0x80, 0x00, 0x20, 0x08, 0x00, 0x80, //# # @ # # -0x80, 0x04, 0x15, 0x55, 0x55, 0x51, 0x40, 0x80, //# $.******.$ # -0x88, 0x88, 0x00, 0x00, 0x80, 0x08, 0x00, 0x80, //#### # # # -0x00, 0x08, 0x80, 0x00, 0x80, 0x00, 0x08, 0x80, // ## # ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -//Level: 37 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x20, 0x88, 0x80, //### @ ### -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x51, 0x51, 0x50, 0x80, //# *.*.* # -0x80, 0x14, 0x04, 0x10, 0x80, //# .$ $. # -0x80, 0x51, 0x51, 0x50, 0x80, //# *.*.* # -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x88, 0x88, 0x88, 0x00, 0x80, //###### # -0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 38 -0x11, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x01, 0x11, 0x80, // ##### ...# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x01, 0x80, // # . .# -0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x01, 0x11, 0x80, // # ## ...# -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, // ## ## ...# -0x00, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, // ### ######## -0x00, 0x00, 0x08, 0x04, 0x44, 0x08, 0x80, 0x00, 0x00, // # $$$ ## -0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x88, 0x88, 0x80, // ##### $ $ ##### -0x88, 0x00, 0x08, 0x40, 0x40, 0x00, 0x80, 0x00, 0x80, //## #$ $ # # -0x82, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@ $ $ $ $ # -0x88, 0x88, 0x88, 0x04, 0x40, 0x40, 0x88, 0x88, 0x80, //###### $$ $ ##### -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -//Level: 39 -0x0A, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x00, 0x00, 0x80, // ### # -0x88, 0x10, 0x48, 0x80, 0x88, //##. $## ## -0x81, 0x14, 0x04, 0x00, 0x28, //#..$ $ @# -0x81, 0x10, 0x40, 0x40, 0x88, //#.. $ $ ## -0x88, 0x88, 0x80, 0x00, 0x80, //##### # -0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 40 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x04, 0x08, 0x00, // # $ $ # -0x08, 0x88, 0x88, 0x88, 0x80, 0x40, 0x40, 0x08, 0x00, // ######## $ $ # -0x88, 0x11, 0x10, 0x08, 0x88, 0x80, 0x88, 0x08, 0x00, //##... #### ## # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x88, 0x08, 0x00, //#.... ## # -0x88, 0x11, 0x10, 0x08, 0x80, 0x44, 0x88, 0x08, 0x80, //##... ## $$## ## -0x08, 0x88, 0x88, 0x88, 0x80, 0x40, 0x00, 0x02, 0x80, // ######## $ @# -0x00, 0x00, 0x00, 0x88, 0x80, 0x88, 0x88, 0x08, 0x80, // ### #### ## -0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x00, 0x08, 0x00, // # $ $ # -0x00, 0x00, 0x00, 0x80, 0x04, 0x08, 0x88, 0x88, 0x00, // # $ ##### -0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, // ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 41 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x00, 0x00, 0x80, //# # -0x80, 0x00, 0x00, 0x80, //# # -0x80, 0x08, 0x00, 0x80, //# # # -0x84, 0x44, 0x44, 0x80, //#$$$$$# -0x81, 0x13, 0x11, 0x80, //#..+..# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 42 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x80, // ###### ##### -0x88, 0x28, 0x00, 0x88, 0x80, 0x00, 0x88, //##@# ### ## -0x80, 0x00, 0x04, 0x00, 0x80, 0x40, 0x08, //# $ # $ # -0x80, 0x04, 0x00, 0x80, 0x00, 0x04, 0x08, //# $ # $ # -0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x08, //### ###### # -0x88, 0x80, 0x88, 0x00, 0x88, 0x48, 0x88, //### ## ##$### -0x80, 0x40, 0x08, 0x88, 0x80, 0x11, 0x80, //# $ #### ..# -0x80, 0x40, 0x40, 0x40, 0x01, 0x11, 0x80, //# $ $ $ ...# -0x80, 0x00, 0x08, 0x88, 0x81, 0x11, 0x80, //# ####...# -0x80, 0x44, 0x08, 0x00, 0x81, 0x11, 0x80, //# $$ # #...# -0x80, 0x08, 0x88, 0x00, 0x88, 0x88, 0x80, //# ### ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 43 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x05, 0x02, 0x80, //# * @# -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x84, 0x15, 0x10, 0x80, //#$.*. # -0x81, 0x01, 0x41, 0x80, //#. .$.# -0x80, 0x41, 0x00, 0x80, //# $. # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 44 -0x13, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x40, 0x08, 0x00, // # $ $ # -0x88, 0x88, 0x88, 0x08, 0x04, 0x08, 0x88, 0x88, 0x08, 0x00, //###### # $ ##### # -0x80, 0x00, 0x08, 0x88, 0x88, 0x04, 0x00, 0x88, 0x48, 0x00, //# ##### $ ##$# -0x80, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x08, 0x00, //# $ $ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x88, 0x08, 0x00, //# ## ## # -0x80, 0x00, 0x08, 0x82, 0x88, 0x88, 0x80, 0x88, 0x08, 0x00, //# ##@##### ## # -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, 0x88, 0x08, 0x80, //# #### # ## ## -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x80, //#....# # $ # -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, //#....# # # -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, //###### ####### -//Level: 45 -0x12, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x88, 0x88, // ##### #### -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x80, 0x08, // # #### # -0x08, 0x88, 0x88, 0x88, 0x08, 0x00, 0x04, 0x04, 0x08, // ####### # $ $ # -0x08, 0x00, 0x08, 0x80, 0x04, 0x08, 0x80, 0x80, 0x08, // # ## $ ## # # -0x08, 0x04, 0x00, 0x01, 0x18, 0x18, 0x80, 0x40, 0x88, // # $ ..#.## $ ## -0x08, 0x04, 0x08, 0x81, 0x11, 0x10, 0x40, 0x80, 0x80, // # $ ##.... $ # # -0x08, 0x08, 0x00, 0x41, 0x11, 0x18, 0x80, 0x40, 0x80, // # # $....## $ # -0x88, 0x44, 0x08, 0x81, 0x81, 0x10, 0x00, 0x40, 0x80, //##$$ ##.#.. $ # -0x80, 0x08, 0x08, 0x80, 0x40, 0x08, 0x80, 0x20, 0x80, //# # ## $ ## @ # -0x80, 0x00, 0x00, 0x40, 0x80, 0x88, 0x88, 0x88, 0x80, //# $ # ####### -0x80, 0x08, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, //# #### # -0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //#### ##### -//Level: 46 -0x0A, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x00, 0x00, 0x08, 0x88, // # ### -0x88, 0x48, 0x88, 0x00, 0x08, //##$### # -0x80, 0x20, 0x40, 0x04, 0x08, //# @ $ $ # -0x80, 0x11, 0x80, 0x40, 0x88, //# ..# $ ## -0x88, 0x11, 0x80, 0x00, 0x80, //##..# # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 47 -0x11, 0x0C,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######## -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x80, 0x04, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // # $ ##### -0x00, 0x88, 0x88, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, // #### $ # -0x00, 0x80, 0x08, 0x84, 0x80, 0x40, 0x08, 0x00, 0x00, // # ##$# $ # -0x00, 0x80, 0x00, 0x02, 0x80, 0x80, 0x88, 0x88, 0x80, // # @# # ##### -0x08, 0x80, 0x88, 0x04, 0x04, 0x04, 0x40, 0x00, 0x80, // ## ## $ $ $$ # -0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // # # # # # -0x88, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //## ############ -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#....# -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#....# -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 48 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x84, 0x04, 0x44, 0x00, 0x80, // #$ $$$ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x40, 0x80, // # # $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x42, 0x40, 0x80, // # $@$ # -0x00, 0x00, 0x88, 0x84, 0x04, 0x08, 0x08, 0x80, // ###$ $ # ## -0x00, 0x00, 0x80, 0x00, 0x48, 0x48, 0x08, 0x00, // # $#$# # -0x88, 0x88, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, //##### # # # -0x81, 0x11, 0x00, 0x80, 0x48, 0x08, 0x88, 0x00, //#... # $# ### -0x81, 0x11, 0x11, 0x00, 0x08, 0x08, 0x00, 0x00, //#..... # # -0x81, 0x11, 0x11, 0x80, 0x48, 0x08, 0x00, 0x00, //#.....# $# # -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, //######## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 49 -0x0C, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x88, 0x88, // # ###### -0x88, 0x84, 0x81, 0x00, 0x00, 0x08, //###$#. # -0x80, 0x40, 0x11, 0x18, 0x04, 0x08, //# $ ...# $ # -0x82, 0x04, 0x18, 0x54, 0x00, 0x08, //#@ $.#*$ # -0x88, 0x88, 0x00, 0x00, 0x88, 0x88, //#### #### -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -//Level: 50 -0x07, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x01, 0x02, 0x80, //## . @# -0x80, 0x40, 0x40, 0x80, //# $ $ # -0x81, 0x05, 0x01, 0x80, //#. * .# -0x80, 0x40, 0x40, 0x80, //# $ $ # -0x80, 0x01, 0x08, 0x80, //# . ## -0x88, 0x88, 0x88, 0x00, //###### -//Level: 51 -0x08, 0x07,//Size x and y -0x00, 0x00, 0x88, 0x88, // #### -0x00, 0x00, 0x82, 0x08, // #@ # -0x88, 0x88, 0x80, 0x18, //##### .# -0x80, 0x40, 0x40, 0x48, //# $ $ $# -0x80, 0x00, 0x10, 0x08, //# . # -0x88, 0x80, 0x10, 0x08, //### . # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 52 -0x13, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ################# -0x88, 0x82, 0x88, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //###@## ...# -0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# # ...# -0x80, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $ # ...# -0x80, 0x44, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $$ # ...# -0x88, 0x04, 0x08, 0x88, 0x48, 0x88, 0x88, 0x88, 0x88, 0x80, //## $ ###$########## -0x08, 0x08, 0x88, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, // # ### $ # -0x88, 0x00, 0x04, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, //## $ $ # -0x80, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # $ # -0x80, 0x40, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x04, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -//Level: 53 -0x10, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, // # ## -0x00, 0x08, 0x04, 0x04, 0x08, 0x80, 0x00, 0x00, // # $ $ ## -0x88, 0x88, 0x08, 0x48, 0x00, 0x88, 0x88, 0x00, //#### #$# #### -0x80, 0x40, 0x00, 0x04, 0x00, 0x80, 0x08, 0x88, //# $ $ # ### -0x80, 0x00, 0x04, 0x08, 0x04, 0x11, 0x11, 0x18, //# $ # $.....# -0x88, 0x80, 0x80, 0x88, 0x88, 0x11, 0x11, 0x18, //### # ####.....# -0x08, 0x80, 0x84, 0x04, 0x00, 0x11, 0x88, 0x88, // ## #$ $ ..#### -0x08, 0x00, 0x80, 0x00, 0x48, 0x00, 0x80, 0x00, // # # $# # -0x08, 0x24, 0x00, 0x40, 0x08, 0x88, 0x80, 0x00, // #@$ $ #### -0x08, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // # ###### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 54 -0x0C, 0x06,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x88, // # ### -0x88, 0x88, 0x88, 0x80, 0x00, 0x08, //####### # -0x80, 0x40, 0x51, 0x05, 0x14, 0x28, //# $ *. *.$@# -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 55 -0x0D, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x08, 0x80, // ####### ## -0x88, 0x08, 0x02, 0x88, 0x04, 0x40, 0x80, //## # @## $$ # -0x80, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, //# $ # -0x80, 0x04, 0x00, 0x88, 0x80, 0x00, 0x80, //# $ ### # -0x88, 0x80, 0x88, 0x88, 0x84, 0x88, 0x80, //### #####$### -0x80, 0x40, 0x08, 0x88, 0x01, 0x18, 0x00, //# $ ### ..# -0x80, 0x40, 0x40, 0x40, 0x11, 0x18, 0x00, //# $ $ $ ...# -0x80, 0x00, 0x08, 0x88, 0x11, 0x18, 0x00, //# ###...# -0x80, 0x44, 0x08, 0x08, 0x11, 0x18, 0x00, //# $$ # #...# -0x80, 0x08, 0x88, 0x08, 0x88, 0x88, 0x00, //# ### ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 56 -0x0D, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, // #### -0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, // ##### # -0x08, 0x80, 0x00, 0x00, 0x48, 0x00, 0x00, // ## $# -0x88, 0x04, 0x00, 0x88, 0x08, 0x88, 0x00, //## $ ## ### -0x82, 0x40, 0x40, 0x80, 0x40, 0x08, 0x00, //#@$ $ # $ # -0x88, 0x88, 0x08, 0x80, 0x00, 0x48, 0x00, //#### ## $# -0x08, 0x11, 0x11, 0x84, 0x04, 0x08, 0x00, // #....#$ $ # -0x08, 0x11, 0x11, 0x80, 0x00, 0x48, 0x00, // #....# $# -0x08, 0x11, 0x11, 0x00, 0x44, 0x08, 0x80, // #.... $$ ## -0x08, 0x11, 0x10, 0x80, 0x40, 0x00, 0x80, // #... # $ # -0x08, 0x88, 0x88, 0x84, 0x04, 0x00, 0x80, // ######$ $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x00, 0x00, 0x00, 0x84, 0x08, 0x88, 0x00, // #$ ### -0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 57 -0x0A, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x08, 0x11, 0x11, 0x08, 0x00, // #.... # -0x88, 0x81, 0x11, 0x48, 0x88, //###...$### -0x80, 0x04, 0x84, 0x04, 0x08, //# $#$ $ # -0x80, 0x44, 0x00, 0x84, 0x08, //# $$ #$ # -0x80, 0x00, 0x08, 0x00, 0x08, //# # # -0x88, 0x88, 0x02, 0x08, 0x88, //#### @ ### -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 58 -0x0D, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, //# #### # -0x80, 0x40, 0x00, 0x40, 0x00, 0x80, 0x80, //# $ $ # # -0x88, 0x00, 0x80, 0x88, 0x80, 0x40, 0x80, //## # ### $ # -0x08, 0x44, 0x00, 0x88, 0x84, 0x80, 0x80, // #$$ ###$# # -0x88, 0x00, 0x08, 0x00, 0x11, 0x10, 0x80, //## # ... # -0x80, 0x08, 0x04, 0x00, 0x41, 0x11, 0x80, //# # $ $...# -0x80, 0x08, 0x88, 0x88, 0x11, 0x88, 0x80, //# #####..### -0x80, 0x28, 0x00, 0x08, 0x88, 0x80, 0x00, //# @# #### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 59 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x00, 0x00, 0x88, 0x88, 0x11, 0x11, 0x18, // ####.....# -0x88, 0x88, 0x80, 0x00, 0x11, 0x11, 0x18, //##### .....# -0x80, 0x00, 0x80, 0x08, 0x10, 0x11, 0x18, //# # #. ...# -0x80, 0x42, 0x88, 0x08, 0x88, 0x08, 0x88, //# $@## ### ### -0x80, 0x04, 0x00, 0x04, 0x00, 0x44, 0x08, //# $ $ $$ # -0x80, 0x00, 0x84, 0x00, 0x04, 0x00, 0x08, //# #$ $ # -0x80, 0x40, 0x80, 0x88, 0x40, 0x04, 0x08, //# $ # ##$ $ # -0x88, 0x80, 0x00, 0x04, 0x08, 0x80, 0x08, //### $ ## # -0x00, 0x80, 0x40, 0x40, 0x40, 0x00, 0x88, // # $ $ $ ## -0x00, 0x88, 0x80, 0x00, 0x08, 0x88, 0x80, // ### #### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -//Level: 60 -0x0B, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, //##### # -0x80, 0x40, 0x01, 0x00, 0x80, 0x00, //# $ . # -0x80, 0x40, 0x11, 0x88, 0x80, 0x00, //# $ ..### -0x82, 0x40, 0x44, 0x88, 0x80, 0x00, //#@$ $$### -0x88, 0x80, 0x14, 0x10, 0x88, 0x80, //### .$. ### -0x08, 0x84, 0x11, 0x14, 0x00, 0x80, // ##$...$ # -0x08, 0x04, 0x18, 0x80, 0x00, 0x80, // # $.## # -0x08, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###### -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 61 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x80, 0x04, 0x00, 0x80, //# $ # -0x88, 0x44, 0x01, 0x80, //##$$ .# -0x08, 0x20, 0x10, 0x80, // #@ . # -0x08, 0x80, 0x80, 0x80, // ## # # -0x00, 0x80, 0x01, 0x80, // # .# -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 62 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x80, 0x08, //# # # -0x80, 0x81, 0x40, 0x48, //# #.$ $# -0x80, 0x00, 0x40, 0x08, //# $ # -0x88, 0x88, 0x81, 0x08, //#####. # -0x00, 0x80, 0x00, 0x28, // # @# -0x00, 0x80, 0x00, 0x18, // # .# -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 63 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x00, 0x08, //# # # -0x80, 0x41, 0x14, 0x08, //# $..$ # -0x82, 0x41, 0x50, 0x88, //#@$.* ## -0x80, 0x41, 0x14, 0x08, //# $..$ # -0x80, 0x08, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 64 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x00, 0x08, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, // ### # -0x00, 0x08, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x00, 0x40, 0x08, 0x88, 0x88, 0x80, // ### $ ###### -0x08, 0x00, 0x84, 0x80, 0x08, 0x00, 0x00, 0x80, // # #$# # # -0x08, 0x40, 0x40, 0x88, 0x00, 0x04, 0x00, 0x80, // #$ $ ## $ # -0x88, 0x00, 0x80, 0x00, 0x04, 0x44, 0x88, 0x80, //## # $$$### -0x80, 0x00, 0x08, 0x88, 0x40, 0x00, 0x80, 0x00, //# ###$ # -0x80, 0x48, 0x44, 0x11, 0x18, 0x88, 0x80, 0x00, //# $#$$...#### -0x80, 0x00, 0x08, 0x11, 0x11, 0x80, 0x00, 0x00, //# #....# -0x80, 0x80, 0x20, 0x81, 0x11, 0x80, 0x00, 0x00, //# # @ #...# -0x80, 0x00, 0x00, 0x41, 0x11, 0x80, 0x00, 0x00, //# $...# -0x88, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, //## # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ########## -//Level: 65 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //# # -0x80, 0x04, 0x04, 0x04, 0x80, 0x00, //# $ $ $# -0x88, 0x08, 0x48, 0x80, 0x80, 0x00, //## #$## # -0x08, 0x01, 0x10, 0x11, 0x88, 0x00, // # .. ..## -0x08, 0x81, 0x10, 0x11, 0x08, 0x00, // ##.. .. # -0x00, 0x80, 0x88, 0x48, 0x08, 0x80, // # ##$# ## -0x00, 0x84, 0x04, 0x04, 0x00, 0x80, // #$ $ $ # -0x00, 0x80, 0x00, 0x00, 0x02, 0x80, // # @# -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 66 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x81, 0x11, 0x11, 0x18, 0x00, //#......# -0x80, 0x04, 0x08, 0x08, 0x80, //# $ # ## -0x80, 0x40, 0x80, 0x40, 0x80, //# $ # $ # -0x88, 0x40, 0x40, 0x40, 0x80, //##$ $ $ # -0x08, 0x00, 0x20, 0x00, 0x80, // # @ # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 67 -0x0A, 0x08,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x88, 0x11, 0x18, //######...# -0x80, 0x00, 0x42, 0x04, 0x88, //# $@ $## -0x80, 0x04, 0x08, 0x04, 0x08, //# $ # $ # -0x81, 0x04, 0x08, 0x40, 0x08, //#. $ #$ # -0x80, 0x88, 0x88, 0x08, 0x18, //# #### #.# -0x81, 0x00, 0x00, 0x04, 0x18, //#. $.# -0x88, 0x88, 0x88, 0x88, 0x88, //########## -//Level: 68 -0x0B, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x88, 0x88, 0x20, 0x00, 0x10, 0x80, //####@ . # -0x80, 0x04, 0x04, 0x04, 0x10, 0x80, //# $ $ $. # -0x80, 0x01, 0x88, 0x80, 0x18, 0x80, //# .### .## -0x80, 0x41, 0x40, 0x40, 0x08, 0x00, //# $.$ $ # -0x80, 0x01, 0x00, 0x88, 0x88, 0x00, //# . #### -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -//Level: 69 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x08, 0x02, 0x08, // # @ # -0x08, 0x88, 0x00, 0x08, // ### # -0x08, 0x04, 0x04, 0x88, // # $ $## -0x88, 0x04, 0x00, 0x80, //## $ # -0x81, 0x00, 0x80, 0x80, //#. # # -0x81, 0x10, 0x00, 0x80, //#.. # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 70 -0x10, 0x0E,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ########## -0x00, 0x08, 0x11, 0x00, 0x80, 0x00, 0x80, 0x00, // #.. # # -0x00, 0x08, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, // #.. # -0x00, 0x08, 0x11, 0x00, 0x80, 0x08, 0x88, 0x80, // #.. # #### -0x00, 0x88, 0x88, 0x88, 0x80, 0x08, 0x00, 0x88, // ####### # ## -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x80, 0x08, 0x00, 0x88, 0x00, 0x80, 0x08, // # # ## # # -0x88, 0x88, 0x08, 0x80, 0x08, 0x88, 0x80, 0x88, //#### ## #### ## -0x80, 0x04, 0x00, 0x88, 0x88, 0x80, 0x80, 0x08, //# $ ##### # # -0x80, 0x80, 0x40, 0x04, 0x00, 0x80, 0x40, 0x08, //# # $ $ # $ # -0x80, 0x24, 0x00, 0x40, 0x00, 0x80, 0x00, 0x88, //# @$ $ # ## -0x88, 0x88, 0x08, 0x80, 0x88, 0x88, 0x88, 0x80, //#### ## ####### -0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, // # # -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -//Level: 71 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, // ######## -0x00, 0x80, 0x00, 0x81, 0x08, // # #. # -0x08, 0x80, 0x04, 0x11, 0x18, // ## $...# -0x08, 0x00, 0x40, 0x85, 0x18, // # $ #*.# -0x88, 0x08, 0x84, 0x80, 0x88, //## ##$# ## -0x80, 0x00, 0x40, 0x04, 0x08, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x82, 0x08, //#######@ # -0x00, 0x00, 0x00, 0x88, 0x88, // #### -//Level: 72 -0x13, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //############# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# # -0x80, 0x88, 0x80, 0x44, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# ### $$ # -0x80, 0x00, 0x80, 0x40, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, //# # $ $ # -0x80, 0x04, 0x88, 0x88, 0x48, 0x88, 0x88, 0x80, 0x00, 0x00, //# $####$###### -0x80, 0x40, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, //# $ ## ##### -0x80, 0x04, 0x40, 0x40, 0x00, 0x00, 0x00, 0x01, 0x11, 0x80, //# $$ $ ...# -0x88, 0x80, 0x88, 0x04, 0x48, 0x00, 0x00, 0x01, 0x11, 0x80, //### ## $$# ...# -0x00, 0x80, 0x88, 0x00, 0x08, 0x00, 0x00, 0x01, 0x11, 0x80, // # ## # ...# -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x11, 0x80, // # # ...# -0x00, 0x88, 0x82, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ###@############# -0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 73 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ###### -0x08, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // #### # -0x08, 0x00, 0x00, 0x88, 0x08, 0x00, 0x00, 0x00, 0x00, // # ## # -0x08, 0x04, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # $ # -0x88, 0x80, 0x88, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, //### #### ######## -0x80, 0x04, 0x00, 0x04, 0x08, 0x80, 0x01, 0x11, 0x80, //# $ $ ## ...# -0x80, 0x00, 0x44, 0x04, 0x40, 0x00, 0x01, 0x11, 0x80, //# $$ $$ ...# -0x80, 0x00, 0x04, 0x00, 0x48, 0x80, 0x01, 0x11, 0x80, //# $ $## ...# -0x88, 0x28, 0x80, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, //##@## ## ## ...# -0x08, 0x88, 0x00, 0x40, 0x08, 0x88, 0x88, 0x88, 0x80, // ### $ ######## -0x08, 0x00, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, // # $$ # -0x08, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -//Level: 74 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, //# ##### # -0x80, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x80, //# . . # -0x81, 0x81, 0x88, 0x08, 0x81, 0x88, 0x80, 0x80, //#.#.## ##.### # -0x81, 0x11, 0x00, 0x40, 0x01, 0x11, 0x10, 0x80, //#... $ .... # -0x88, 0x11, 0x08, 0x08, 0x01, 0x18, 0x80, 0x80, //##.. # # ..## # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, 0x80, //###### ###### # -0x80, 0x00, 0x08, 0x08, 0x00, 0x00, 0x80, 0x80, //# # # # # -0x80, 0x44, 0x08, 0x48, 0x04, 0x40, 0x80, 0x80, //# $$ #$# $$ # # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, //# $ $ $ $ $ # # -0x80, 0x44, 0x08, 0x48, 0x04, 0x40, 0x80, 0x80, //# $$ #$# $$ # # -0x80, 0x00, 0x08, 0x28, 0x00, 0x00, 0x80, 0x80, //# #@# # # -0x80, 0x88, 0x88, 0x08, 0x88, 0x08, 0x80, 0x80, //# #### ### ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 75 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, //##### -0x82, 0x00, 0x80, 0x00, 0x00, //#@ # -0x80, 0x44, 0x80, 0x88, 0x80, //# $$# ### -0x80, 0x40, 0x80, 0x81, 0x80, //# $ # #.# -0x88, 0x80, 0x88, 0x81, 0x80, //### ###.# -0x08, 0x80, 0x00, 0x01, 0x80, // ## .# -0x08, 0x00, 0x08, 0x00, 0x80, // # # # -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 76 -0x0A, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, //########## -0x81, 0x10, 0x00, 0x00, 0x08, //#.. # -0x81, 0x14, 0x00, 0x80, 0x08, //#..$ # # -0x80, 0x08, 0x48, 0x80, 0x88, //# #$## ## -0x80, 0x40, 0x00, 0x00, 0x80, //# $ # -0x88, 0x88, 0x80, 0x80, 0x80, //##### # # -0x00, 0x80, 0x40, 0x20, 0x80, // # $ @ # -0x00, 0x80, 0x00, 0x00, 0x80, // # # -0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 77 -0x0C, 0x0D,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x88, 0x00, // # ###### -0x08, 0x00, 0x00, 0x04, 0x28, 0x00, // # $@# -0x88, 0x08, 0x81, 0x88, 0x48, 0x00, //## ##.##$# -0x80, 0x08, 0x01, 0x08, 0x08, 0x88, //# # . # ### -0x80, 0x00, 0x51, 0x18, 0x00, 0x08, //# *..# # -0x88, 0x08, 0x01, 0x04, 0x08, 0x08, //## # . $ # # -0x88, 0x08, 0x81, 0x80, 0x04, 0x08, //## ##.# $ # -0x80, 0x08, 0x81, 0x80, 0x88, 0x88, //# ##.# #### -0x80, 0x44, 0x04, 0x80, 0x08, 0x00, //# $$ $# # -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, //# # # -0x88, 0x88, 0x88, 0x80, 0x08, 0x00, //####### # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 78 -0x0D, 0x0A,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, // ### ### -0x08, 0x81, 0x40, 0x00, 0x00, 0x88, 0x00, // ##.$ ## -0x08, 0x10, 0x44, 0x44, 0x40, 0x08, 0x00, // #. $$$$$ # -0x88, 0x00, 0x80, 0x00, 0x80, 0x08, 0x80, //## # # ## -0x80, 0x08, 0x58, 0x28, 0x58, 0x00, 0x80, //# #*#@#*# # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x01, 0x44, 0x44, 0x41, 0x08, 0x80, //## .$$$$$. ## -0x08, 0x81, 0x11, 0x11, 0x11, 0x88, 0x00, // ##.......## -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 79 -0x10, 0x09,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x05, 0x08, 0x88, //########## * ### -0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, //# . # -0x80, 0x44, 0x44, 0x55, 0x55, 0x41, 0x11, 0x28, //# $$$$****$...@# -0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, //# . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x05, 0x08, 0x88, //########## * ### -0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 80 -0x11, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //################ -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, //# # -0x80, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, //# # ###### # -0x80, 0x80, 0x04, 0x04, 0x04, 0x04, 0x80, 0x08, 0x00, //# # $ $ $ $# # -0x80, 0x80, 0x00, 0x42, 0x40, 0x00, 0x88, 0x08, 0x80, //# # $@$ ## ## -0x80, 0x80, 0x04, 0x04, 0x04, 0x88, 0x81, 0x11, 0x80, //# # $ $ $###...# -0x80, 0x80, 0x00, 0x40, 0x40, 0x08, 0x81, 0x11, 0x80, //# # $ $ ##...# -0x80, 0x88, 0x84, 0x44, 0x04, 0x08, 0x81, 0x11, 0x80, //# ###$$$ $ ##...# -0x80, 0x00, 0x00, 0x80, 0x88, 0x08, 0x81, 0x11, 0x80, //# # ## ##...# -0x88, 0x88, 0x80, 0x00, 0x88, 0x08, 0x81, 0x11, 0x80, //##### ## ##...# -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x80, // ##### ### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, // ####### -//Level: 81 -0x06, 0x08,//Size x and y -0x08, 0x88, 0x80, // #### -0x88, 0x00, 0x80, //## # -0x82, 0x40, 0x80, //#@$ # -0x88, 0x40, 0x88, //##$ ## -0x88, 0x04, 0x08, //## $ # -0x81, 0x40, 0x08, //#.$ # -0x81, 0x15, 0x18, //#..*.# -0x88, 0x88, 0x88, //###### -//Level: 82 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -0x00, 0x88, 0x80, 0x00, 0x08, 0x88, 0x00, // ### ### -0x00, 0x80, 0x00, 0x84, 0x00, 0x08, 0x88, // # #$ ### -0x00, 0x80, 0x00, 0x40, 0x00, 0x44, 0x08, // # $ $$ # -0x00, 0x80, 0x44, 0x08, 0x40, 0x00, 0x08, // # $$ #$ # -0x00, 0x88, 0x00, 0x04, 0x00, 0x04, 0x08, // ## $ $ # -0x88, 0x88, 0x88, 0x08, 0x48, 0x88, 0x88, //###### #$##### -0x81, 0x12, 0x08, 0x40, 0x08, 0x00, 0x00, //#..@ #$ # -0x81, 0x81, 0x10, 0x04, 0x88, 0x00, 0x00, //#.#.. $## -0x81, 0x11, 0x14, 0x80, 0x80, 0x00, 0x00, //#....$# # -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //######### -//Level: 83 -0x0D, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x00, 0x88, 0x88, 0x88, 0x00, //#### ###### -0x80, 0x00, 0x00, 0x88, 0x00, 0x08, 0x00, //# ## # -0x80, 0x48, 0x04, 0x00, 0x00, 0x48, 0x00, //# $# $ $# -0x88, 0x08, 0x88, 0x04, 0x80, 0x08, 0x00, //## ### $# # -0x08, 0x04, 0x04, 0x00, 0x88, 0x08, 0x00, // # $ $ ## # -0x08, 0x00, 0x04, 0x08, 0x80, 0x08, 0x80, // # $ ## ## -0x08, 0x40, 0x81, 0x11, 0x50, 0x40, 0x80, // #$ #...* $ # -0x08, 0x02, 0x80, 0x11, 0x11, 0x11, 0x80, // # @# ......# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -//Level: 84 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x80, 0x08, 0x00, // # # -0x00, 0x80, 0x08, 0x88, // # ### -0x88, 0x80, 0x11, 0x08, //### .. # -0x80, 0x04, 0x80, 0x08, //# $# # -0x80, 0x01, 0x44, 0x08, //# .$$ # -0x88, 0x88, 0x02, 0x08, //#### @ # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 85 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x20, 0x00, 0x88, // #@ ## -0x08, 0x84, 0x00, 0x08, // ##$ # -0x88, 0x80, 0x10, 0x08, //### . # -0x80, 0x40, 0x84, 0x88, //# $ #$## -0x80, 0x10, 0x01, 0x80, //# . .# -0x88, 0x88, 0x00, 0x80, //#### # -0x00, 0x08, 0x88, 0x80, // #### -//Level: 86 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# # -0x80, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, //# #### -0x88, 0x08, 0x88, 0x80, 0x80, 0x08, 0x00, 0x00, //## #### # # -0x88, 0x08, 0x28, 0x80, 0x00, 0x08, 0x00, 0x00, //## #@## # -0x80, 0x44, 0x40, 0x40, 0x04, 0x48, 0x00, 0x00, //# $$$ $ $$# -0x80, 0x08, 0x08, 0x80, 0x40, 0x08, 0x00, 0x00, //# # ## $ # -0x80, 0x08, 0x08, 0x80, 0x04, 0x08, 0x88, 0x80, //# # ## $ #### -0x88, 0x88, 0x00, 0x44, 0x40, 0x48, 0x00, 0x80, //#### $$$ $# # -0x08, 0x00, 0x08, 0x80, 0x00, 0x11, 0x11, 0x80, // # ## ....# -0x08, 0x08, 0x00, 0x08, 0x08, 0x11, 0x01, 0x80, // # # # #.. .# -0x08, 0x00, 0x08, 0x08, 0x08, 0x81, 0x11, 0x80, // # # # ##...# -0x08, 0x88, 0x88, 0x04, 0x00, 0x81, 0x11, 0x80, // ##### $ #...# -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x88, 0x80, // ## ##### -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 87 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x08, 0x80, 0x00, // ## ## -0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, // ## # -0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x44, 0x00, 0x80, 0x00, // ## $$ # -0x00, 0x00, 0x00, 0x08, 0x80, 0x44, 0x00, 0x40, 0x80, 0x00, // ## $$ $ # -0x00, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x40, 0x80, 0x00, // # $ $ # -0x88, 0x88, 0x00, 0x08, 0x00, 0x04, 0x40, 0x88, 0x88, 0x80, //#### # $$ ##### -0x80, 0x08, 0x88, 0x88, 0x88, 0x80, 0x88, 0x00, 0x00, 0x80, //# ######## ## # -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x42, 0x80, //#. $$$@# -0x81, 0x80, 0x88, 0x88, 0x88, 0x80, 0x88, 0x00, 0x08, 0x80, //#.# ####### ## ## -0x81, 0x80, 0x88, 0x88, 0x88, 0x81, 0x08, 0x40, 0x48, 0x80, //#.# #######. #$ $## -0x81, 0x11, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, 0x00, 0x80, //#........... # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x40, 0x80, //############## $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x80, // ## ## -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 88 -0x0D, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -0x80, 0x01, 0x01, 0x01, 0x01, 0x00, 0x80, //# . . . . # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x81, 0x40, 0x80, 0x40, 0x80, 0x41, 0x80, //#.$ # $ # $.# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x84, 0x44, 0x84, 0x44, 0x80, 0x80, //# #$$$#$$$# # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x81, 0x40, 0x80, 0x40, 0x80, 0x40, 0x80, //#.$ # $ # $ # -0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, //# # # # # #.# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # -0x80, 0x01, 0x01, 0x21, 0x01, 0x00, 0x80, //# . .@. . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 89 -0x0A, 0x06,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x88, 0x20, 0x00, 0x00, 0x08, //##@ # -0x80, 0x00, 0x84, 0x84, 0x08, //# #$#$ # -0x80, 0x44, 0x00, 0x14, 0x18, //# $$ .$.# -0x80, 0x08, 0x88, 0x11, 0x18, //# ###...# -0x88, 0x88, 0x08, 0x88, 0x88, //#### ##### -//Level: 90 -0x11, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x88, 0x80, //####### ######### -0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x88, 0x00, 0x80, //# # # ## # -0x80, 0x88, 0x80, 0x80, 0x80, 0x00, 0x40, 0x00, 0x80, //# ### # # $ # -0x80, 0x80, 0x40, 0x88, 0x80, 0x00, 0x40, 0x00, 0x80, //# # $ ### $ # -0x80, 0x00, 0x44, 0x00, 0x00, 0x00, 0x88, 0x40, 0x80, //# $$ ##$ # -0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x88, 0x00, 0x80, //# #### ## # -0x82, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //#@############ ## -0x88, 0x81, 0x10, 0x00, 0x08, 0x88, 0x88, 0x40, 0x80, //###.. #####$ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x88, 0x80, 0x00, 0x80, // #.. #### # -0x00, 0x81, 0x10, 0x00, 0x00, 0x00, 0x44, 0x00, 0x80, // #.. $$ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x88, 0x80, 0x40, 0x80, // #.. #### $ # -0x00, 0x81, 0x10, 0x00, 0x08, 0x00, 0x80, 0x00, 0x80, // #.. # # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, // ######## ##### -//Level: 91 -0x10, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // # # # # # -0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x48, 0x08, // # $ $# # -0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, // # $ # -0x00, 0x00, 0x00, 0x08, 0x80, 0x40, 0x48, 0x08, // ## $ $# # -0x08, 0x88, 0x00, 0x00, 0x80, 0x40, 0x40, 0x08, // ### # $ $ # -0x88, 0x18, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, //##.###### ###### -0x81, 0x11, 0x00, 0x80, 0x40, 0x40, 0x80, 0x00, //#... # $ $ # -0x88, 0x11, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, //##.. $ # -0x81, 0x11, 0x00, 0x80, 0x02, 0x88, 0x80, 0x00, //#... # @### -0x88, 0x18, 0x88, 0x80, 0x08, 0x80, 0x00, 0x00, //##.#### ## -0x08, 0x88, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // ### #### -//Level: 92 -0x12, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ########### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x88, // # # ## -0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x00, 0x01, 0x18, // # $ ..# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x84, 0x81, 0x18, // # #$#..# -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x01, 0x18, // ########### ..# -0x00, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x01, 0x18, // # $ ..# -0x00, 0x80, 0x80, 0x80, 0x48, 0x80, 0x80, 0x81, 0x18, // # # # $## # #..# -0x00, 0x80, 0x00, 0x84, 0x00, 0x00, 0x80, 0x01, 0x18, // # #$ # ..# -0x08, 0x84, 0x80, 0x40, 0x88, 0x88, 0x88, 0x80, 0x08, // ##$# $ ####### # -0x88, 0x00, 0x04, 0x00, 0x80, 0x00, 0x08, 0x04, 0x08, //## $ # # $ # -0x80, 0x00, 0x48, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, //# $# # # # -0x80, 0x04, 0x00, 0x08, 0x80, 0x00, 0x08, 0x88, 0x88, //# $ ## ##### -0x80, 0x48, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //# $##### -0x80, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# @# -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 93 -0x12, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -0x80, 0x00, 0x00, 0x00, 0x00, 0x88, 0x08, 0x11, 0x18, //# ## #...# -0x80, 0x40, 0x44, 0x80, 0x00, 0x04, 0x08, 0x11, 0x18, //# $ $$# $ #...# -0x80, 0x40, 0x00, 0x84, 0x88, 0x44, 0x08, 0x11, 0x18, //# $ #$##$$ #...# -0x80, 0x44, 0x84, 0x00, 0x00, 0x00, 0x02, 0x11, 0x18, //# $$#$ @...# -0x80, 0x40, 0x40, 0x48, 0x40, 0x88, 0x88, 0x00, 0x18, //# $ $ $#$ #### .# -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x04, 0x11, 0x18, //# ## $...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -//Level: 94 -0x0A, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x00, 0x88, 0x00, 0x80, //# ## # -0x80, 0x80, 0x40, 0x40, 0x80, //# # $ $ # -0x80, 0x05, 0x18, 0x00, 0x80, //# *.# # -0x88, 0x08, 0x12, 0x18, 0x80, //## #.@.## -0x88, 0x48, 0x88, 0x58, 0x88, //##$###*### -0x80, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x00, 0x88, 0x08, 0x08, //# ## # # -0x88, 0x88, 0x88, 0x00, 0x08, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 95 -0x0E, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######## -0x00, 0x80, 0x00, 0x80, 0x08, 0x88, 0x00, // # # ### -0x88, 0x80, 0x80, 0x40, 0x04, 0x08, 0x88, //### # $ $ ### -0x80, 0x00, 0x08, 0x44, 0x08, 0x00, 0x08, //# #$$ # # -0x80, 0x88, 0x48, 0x00, 0x20, 0x04, 0x08, //# ##$# @ $ # -0x80, 0x00, 0x04, 0x48, 0x88, 0x40, 0x88, //# $$###$ ## -0x80, 0x00, 0x48, 0x08, 0x80, 0x08, 0x80, //# $# ## ## -0x80, 0x84, 0x08, 0x01, 0x11, 0x88, 0x00, //# #$ # ...## -0x80, 0x40, 0x81, 0x11, 0x11, 0x80, 0x00, //# $ #.....# -0x88, 0x00, 0x11, 0x11, 0x18, 0x80, 0x00, //## .....## -0x08, 0x04, 0x80, 0x88, 0x88, 0x00, 0x00, // # $# #### -0x08, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, // ## # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -//Level: 96 -0x0C, 0x08,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, //######## # -0x80, 0x11, 0x11, 0x11, 0x40, 0x08, //# ......$ # -0x80, 0x08, 0x48, 0x88, 0x00, 0x08, //# #$### # -0x88, 0x04, 0x24, 0x08, 0x00, 0x08, //## $@$ # # -0x08, 0x04, 0x04, 0x08, 0x00, 0x08, // # $ $ # # -0x08, 0x00, 0x00, 0x08, 0x88, 0x88, // # ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 97 -0x14, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //# ### ###### -0x80, 0x80, 0x04, 0x08, 0x00, 0x88, 0x88, 0x00, 0x11, 0x80, //# # $ # #### ..# -0x80, 0x80, 0x04, 0x08, 0x88, 0x82, 0x88, 0x00, 0x11, 0x88, //# # $ ####@## ..## -0x80, 0x04, 0x44, 0x00, 0x04, 0x00, 0x00, 0x00, 0x11, 0x18, //# $$$ $ ...# -0x88, 0x80, 0x04, 0x00, 0x48, 0x88, 0x88, 0x00, 0x11, 0x88, //### $ $##### ..## -0x00, 0x84, 0x04, 0x04, 0x08, 0x00, 0x08, 0x00, 0x11, 0x80, // #$ $ $ # # ..# -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, // # # ###### -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 98 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x00, //##### ###### -0x80, 0x00, 0x00, 0x80, 0x08, 0x80, 0x08, 0x80, //# # ## ## -0x80, 0x80, 0x44, 0x00, 0x04, 0x00, 0x00, 0x80, //# # $$ $ # -0x80, 0x08, 0x00, 0x08, 0x80, 0x80, 0x80, 0x80, //# # ## # # # -0x80, 0x40, 0x80, 0x88, 0x00, 0x04, 0x00, 0x80, //# $ # ## $ # -0x80, 0x00, 0x04, 0x04, 0x00, 0x08, 0x08, 0x80, //# $ $ # ## -0x88, 0x04, 0x08, 0x00, 0x84, 0x88, 0x08, 0x00, //## $ # #$## # -0x08, 0x88, 0x00, 0x80, 0x80, 0x80, 0x48, 0x00, // ### # # # $# -0x00, 0x08, 0x04, 0x00, 0x20, 0x11, 0x18, 0x00, // # $ @ ...# -0x00, 0x08, 0x04, 0x88, 0x48, 0x11, 0x18, 0x00, // # $##$#...# -0x00, 0x08, 0x80, 0x00, 0x11, 0x11, 0x88, 0x00, // ## ....## -0x00, 0x00, 0x88, 0x80, 0x11, 0x18, 0x80, 0x00, // ### ...## -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, // ###### -//Level: 99 -0x0B, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x00, 0x00, 0x08, 0x80, // # ## -0x08, 0x40, 0x88, 0x88, 0x00, 0x80, // #$ #### # -0x88, 0x08, 0x01, 0x50, 0x80, 0x80, //## # .* # # -0x80, 0x00, 0x45, 0x10, 0x80, 0x80, //# $*. # # -0x80, 0x84, 0x21, 0x50, 0x80, 0x80, //# #$@.* # # -0x80, 0x00, 0x04, 0x00, 0x00, 0x80, //# $ # -0x88, 0x88, 0x48, 0x84, 0x08, 0x80, //####$##$ ## -0x00, 0x08, 0x01, 0x11, 0x08, 0x00, // # ... # -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 100 -0x09, 0x0C,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x20, 0x80, 0x00, // # @ # -0x00, 0x80, 0x40, 0x80, 0x00, // # $ # -0x88, 0x80, 0x10, 0x88, 0x80, //### . ### -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x80, 0x55, 0x55, 0x50, 0x80, //# ***** # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x84, 0x54, 0x88, 0x80, //###$*$### -0x00, 0x80, 0x10, 0x80, 0x00, // # . # -0x00, 0x80, 0x50, 0x80, 0x00, // # * # -0x00, 0x80, 0x10, 0x80, 0x00, // # . # -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 101 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x84, 0x88, 0x00, 0x80, // # #$## # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, // # $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x88, 0x80, 0x00, 0x80, //######### ### # -0x81, 0x11, 0x10, 0x08, 0x80, 0x40, 0x04, 0x88, 0x80, //#.... ## $ $### -0x81, 0x11, 0x10, 0x00, 0x04, 0x04, 0x40, 0x88, 0x00, //#.... $ $$ ## -0x81, 0x11, 0x10, 0x08, 0x84, 0x00, 0x40, 0x28, 0x00, //#.... ##$ $ @# -0x88, 0x88, 0x88, 0x88, 0x80, 0x04, 0x00, 0x88, 0x00, //######### $ ## -0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x08, 0x00, // # $ $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x88, 0x08, 0x00, // ### ## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 102 -0x13, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x08, 0x08, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // # # ####### -0x08, 0x00, 0x00, 0x00, 0x42, 0x88, 0x88, 0x88, 0x00, 0x00, // # $@###### -0x08, 0x04, 0x08, 0x84, 0x08, 0x88, 0x00, 0x08, 0x00, 0x00, // # $ ##$ ### # -0x08, 0x08, 0x88, 0x80, 0x40, 0x00, 0x04, 0x08, 0x00, 0x00, // # #### $ $ # -0x08, 0x08, 0x88, 0x88, 0x08, 0x00, 0x84, 0x08, 0x88, 0x80, // # ##### # #$ #### -0x88, 0x00, 0x88, 0x88, 0x08, 0x84, 0x00, 0x00, 0x00, 0x80, //## #### ##$ # -0x80, 0x04, 0x80, 0x04, 0x00, 0x80, 0x88, 0x08, 0x80, 0x80, //# $# $ # ## ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0x11, 0x80, 0x80, //# # #...# # -0x88, 0x88, 0x88, 0x00, 0x88, 0x80, 0x01, 0x11, 0x00, 0x80, //###### ### ... # -0x00, 0x00, 0x08, 0x88, 0x80, 0x80, 0x81, 0x11, 0x80, 0x80, // #### # #...# # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x88, 0x80, 0x80, 0x80, // # ### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 103 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x88, // ###### -0x00, 0x80, 0x00, 0x08, // # # -0x88, 0x84, 0x44, 0x08, //###$$$ # -0x82, 0x04, 0x11, 0x08, //#@ $.. # -0x80, 0x41, 0x11, 0x88, //# $...## -0x88, 0x88, 0x00, 0x80, //#### # -0x00, 0x08, 0x88, 0x80, // #### -//Level: 104 -0x0C, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x80, 0x11, 0x11, 0x80, 0x00, 0x00, //# ....# -0x88, 0x48, 0x88, 0x88, 0x88, 0x88, //##$######### -0x80, 0x40, 0x40, 0x00, 0x00, 0x08, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # -0x88, 0x80, 0x80, 0x44, 0x04, 0x08, //### # $$ $ # -0x00, 0x80, 0x80, 0x00, 0x84, 0x08, // # # #$ # -0x00, 0x80, 0x80, 0x44, 0x00, 0x08, // # # $$ # -0x00, 0x80, 0x80, 0x80, 0x44, 0x08, // # # # $$ # -0x00, 0x80, 0x80, 0x04, 0x08, 0x88, // # # $ ### -0x00, 0x80, 0x88, 0x80, 0x08, 0x00, // # ### # -0x00, 0x80, 0x00, 0x08, 0x28, 0x00, // # #@# -0x00, 0x88, 0x88, 0x00, 0x08, 0x00, // #### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 105 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x00, 0x08, 0x88, 0x00, 0x00, 0x88, 0x00, // ### ## -0x00, 0x08, 0x00, 0x08, 0x80, 0x08, 0x00, // # ## # -0x08, 0x88, 0x48, 0x80, 0x08, 0x08, 0x00, // ###$## # # -0x88, 0x00, 0x00, 0x01, 0x18, 0x08, 0x00, //## ..# # -0x80, 0x04, 0x84, 0x85, 0x18, 0x08, 0x00, //# $#$#*.# # -0x80, 0x44, 0x20, 0x81, 0x58, 0x08, 0x88, //# $$@ #.*# ### -0x80, 0x04, 0x40, 0x81, 0x18, 0x00, 0x08, //# $$ #..# # -0x88, 0x00, 0x00, 0x81, 0x14, 0x00, 0x08, //## #..$ # -0x08, 0x88, 0x48, 0x81, 0x08, 0x08, 0x88, // ###$##. # ### -0x00, 0x08, 0x00, 0x88, 0x80, 0x08, 0x00, // # ### # -0x00, 0x08, 0x80, 0x00, 0x00, 0x88, 0x00, // ## ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, // ####### -//Level: 106 -0x0D, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //######### # # -0x80, 0x40, 0x40, 0x40, 0x40, 0x00, 0x80, //# $ $ $ $ # -0x80, 0x81, 0x81, 0x81, 0x82, 0x48, 0x80, //# #.#.#.#@$## -0x81, 0x11, 0x11, 0x11, 0x00, 0x08, 0x00, //#....... # -0x80, 0x80, 0x80, 0x80, 0x84, 0x88, 0x80, //# # # # #$### -0x80, 0x40, 0x40, 0x40, 0x40, 0x00, 0x80, //# $ $ $ $ # -0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //######### # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 107 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x80, 0x00, // #### -0x08, 0x20, 0x88, 0x80, // #@ ### -0x08, 0x04, 0x00, 0x80, // # $ # -0x88, 0x80, 0x80, 0x88, //### # ## -0x81, 0x80, 0x80, 0x08, //#.# # # -0x81, 0x40, 0x08, 0x08, //#.$ # # -0x81, 0x00, 0x04, 0x08, //#. $ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 108 -0x0B, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x00, 0x00, 0x08, 0x20, 0x80, // #@ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x80, // ##### # -0x88, 0x88, 0x00, 0x00, 0x00, 0x80, //#### # -0x80, 0x00, 0x18, 0x88, 0x08, 0x80, //# .### ## -0x80, 0x80, 0x80, 0x00, 0x08, 0x80, //# # # ## -0x80, 0x80, 0x40, 0x48, 0x10, 0x80, //# # $ $#. # -0x80, 0x80, 0x05, 0x00, 0x80, 0x80, //# # * # # -0x80, 0x18, 0x40, 0x40, 0x80, 0x80, //# .#$ $ # # -0x88, 0x00, 0x00, 0x80, 0x80, 0x80, //## # # # -0x08, 0x08, 0x88, 0x10, 0x00, 0x80, // # ###. # -0x08, 0x00, 0x00, 0x08, 0x88, 0x80, // # #### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 109 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x40, 0x44, 0x80, 0x88, 0x88, 0x00, // #$$ $$# #### -0x88, 0x88, 0x80, 0x08, 0x00, 0x40, 0x80, 0x08, 0x00, //##### # $ # # -0x81, 0x18, 0x00, 0x88, 0x04, 0x00, 0x40, 0x08, 0x00, //#..# ## $ $ # -0x81, 0x18, 0x04, 0x40, 0x00, 0x00, 0x80, 0x08, 0x00, //#..# $$ # # -0x81, 0x18, 0x00, 0x88, 0x48, 0x88, 0x80, 0x88, 0x00, //#..# ##$#### ## -0x81, 0x18, 0x80, 0x88, 0x00, 0x00, 0x80, 0x80, 0x00, //#..## ## # # -0x81, 0x11, 0x00, 0x08, 0x80, 0x88, 0x80, 0x88, 0x80, //#... ## ### ### -0x80, 0x00, 0x88, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, //# ## $ # -0x88, 0x88, 0x88, 0x28, 0x00, 0x08, 0x80, 0x80, 0x80, //######@# ## # # -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, // ######## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 110 -0x0F, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //### ## -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x44, 0x08, 0x48, 0x88, 0x88, 0x88, 0x80, //# $$ #$######## -0x88, 0x08, 0x40, 0x40, 0x40, 0x80, 0x00, 0x80, //## #$ $ $ # # -0x81, 0x11, 0x18, 0x00, 0x04, 0x00, 0x00, 0x80, //#....# $ # -0x81, 0x11, 0x12, 0x80, 0x08, 0x88, 0x48, 0x80, //#....@# ###$## -0x81, 0x11, 0x14, 0x80, 0x00, 0x40, 0x40, 0x80, //#....$# $ $ # -0x81, 0x11, 0x14, 0x04, 0x80, 0x00, 0x00, 0x80, //#....$ $# # -0x88, 0x88, 0x80, 0x00, 0x80, 0x48, 0x48, 0x80, //##### # $#$## -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x40, 0x80, // ##### $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, // ### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 111 -0x0A, 0x08,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x08, 0x88, 0x88, 0x00, 0x08, // ##### # -0x08, 0x01, 0x10, 0x48, 0x08, // # .. $# # -0x08, 0x08, 0x15, 0x00, 0x08, // # #.* # -0x88, 0x05, 0x18, 0x40, 0x88, //## *.#$ ## -0x80, 0x40, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x00, 0x88, 0x02, 0x80, //# ## @# -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 112 -0x0E, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x08, 0x11, 0x11, 0x00, 0x08, 0x80, 0x00, // #.... ## -0x08, 0x18, 0x18, 0x00, 0x40, 0x88, 0x00, // #.#.# $ ## -0x88, 0x11, 0x11, 0x80, 0x80, 0x28, 0x80, //##....# # @## -0x80, 0x11, 0x11, 0x80, 0x08, 0x00, 0x88, //# ....# # ## -0x80, 0x00, 0x00, 0x84, 0x08, 0x84, 0x08, //# #$ ##$ # -0x88, 0x08, 0x88, 0x00, 0x40, 0x00, 0x08, //## ### $ # -0x08, 0x40, 0x04, 0x04, 0x04, 0x80, 0x08, // #$ $ $ $# # -0x08, 0x08, 0x00, 0x40, 0x40, 0x88, 0x08, // # # $ $ ## # -0x08, 0x00, 0x88, 0x80, 0x08, 0x80, 0x08, // # ### ## # -0x08, 0x00, 0x00, 0x88, 0x08, 0x80, 0x88, // # ## ## ## -0x08, 0x00, 0x40, 0x80, 0x04, 0x00, 0x80, // # $ # $ # -0x08, 0x88, 0x40, 0x40, 0x00, 0x88, 0x80, // ###$ $ ### -0x00, 0x08, 0x00, 0x88, 0x88, 0x80, 0x00, // # ##### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 113 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // # # -0x08, 0x04, 0x04, 0x40, 0x48, 0x00, 0x00, // # $ $$ $# -0x88, 0x80, 0x80, 0x04, 0x08, 0x00, 0x00, //### # $ # -0x81, 0x80, 0x00, 0x44, 0x08, 0x80, 0x00, //#.# $$ ## -0x81, 0x88, 0x80, 0x00, 0x40, 0x80, 0x00, //#.### $ # -0x81, 0x81, 0x04, 0x08, 0x80, 0x88, 0x88, //#.#. $ ## #### -0x81, 0x11, 0x00, 0x48, 0x80, 0x40, 0x08, //#... $## $ # -0x81, 0x11, 0x40, 0x00, 0x40, 0x00, 0x08, //#...$ $ # -0x81, 0x18, 0x88, 0x48, 0x88, 0x08, 0x28, //#..###$### #@# -0x81, 0x18, 0x08, 0x00, 0x00, 0x08, 0x88, //#..# # ### -0x88, 0x88, 0x08, 0x88, 0x88, 0x88, 0x00, //#### ####### -//Level: 114 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x81, 0x14, 0x11, 0x80, //#..$..# -0x81, 0x18, 0x11, 0x80, //#..#..# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x80, 0x04, 0x00, 0x80, //# $ # -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x80, 0x08, 0x20, 0x80, //# #@ # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 115 -0x08, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x08, 0x00, 0x08, // # # -0x88, 0x88, 0x40, 0x08, //####$ # -0x81, 0x10, 0x40, 0x08, //#.. $ # -0x81, 0x14, 0x00, 0x88, //#..$ ## -0x81, 0x18, 0x04, 0x80, //#..# $# -0x80, 0x18, 0x40, 0x88, //# .#$ ## -0x88, 0x88, 0x04, 0x08, //#### $ # -0x00, 0x80, 0x40, 0x08, // # $ # -0x00, 0x80, 0x02, 0x08, // # @ # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 116 -0x0C, 0x05,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x80, 0x00, 0x01, 0x11, 0x04, 0x08, //# ... $ # -0x80, 0x44, 0x45, 0x55, 0x04, 0x28, //# $$$*** $@# -0x80, 0x00, 0x01, 0x11, 0x04, 0x08, //# ... $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 117 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x02, 0x00, 0x08, //# @ # -0x80, 0x88, 0x48, 0x08, //# ##$# # -0x80, 0x40, 0x04, 0x08, //# $ $ # -0x88, 0x40, 0x08, 0x88, //##$ ### -0x08, 0x14, 0x01, 0x80, // #.$ .# -0x08, 0x11, 0x01, 0x80, // #.. .# -0x08, 0x88, 0x88, 0x80, // ###### -//Level: 118 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, // ####### -0x88, 0x00, 0x01, 0x08, //## . # -0x80, 0x40, 0x04, 0x28, //# $ $@# -0x81, 0x41, 0x88, 0x88, //#.$.#### -0x80, 0x08, 0x80, 0x00, //# ## -0x80, 0x08, 0x00, 0x00, //# # -0x80, 0x08, 0x00, 0x00, //# # -0x88, 0x88, 0x00, 0x00, //#### -//Level: 119 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, // ########## # -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # # -0x00, 0x00, 0x08, 0x00, 0x40, 0x40, 0x00, 0x04, 0x40, 0x80, // # $ $ $$ # -0x00, 0x00, 0x08, 0x08, 0x88, 0x88, 0x08, 0x80, 0x40, 0x80, // # ##### ## $ # -0x00, 0x00, 0x08, 0x44, 0x00, 0x08, 0x48, 0x80, 0x40, 0x80, // #$$ #$## $ # -0x00, 0x00, 0x08, 0x08, 0x88, 0x08, 0x08, 0x84, 0x00, 0x80, // # ### # ##$ # -0x88, 0x88, 0x88, 0x08, 0x88, 0x04, 0x04, 0x00, 0x00, 0x80, //###### ### $ $ # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x80, //#.... ## # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //#.... ###### -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x88, 0x82, 0x88, 0x00, 0x00, 0x00, //###########@## -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, // ### -//Level: 120 -0x10, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############## -0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x18, 0x00, //# ### #.# -0x80, 0x40, 0x00, 0x00, 0x40, 0x08, 0x18, 0x00, //# $ $ #.# -0x80, 0x40, 0x08, 0x08, 0x00, 0x08, 0x18, 0x80, //# $ # # #.## -0x88, 0x08, 0x88, 0x08, 0x84, 0x88, 0x11, 0x88, //## ### ##$##..## -0x80, 0x40, 0x08, 0x48, 0x00, 0x08, 0x02, 0x18, //# $ #$# # @.# -0x80, 0x04, 0x04, 0x00, 0x04, 0x00, 0x11, 0x18, //# $ $ $ ...# -0x80, 0x40, 0x08, 0x48, 0x00, 0x08, 0x11, 0x08, //# $ #$# #.. # -0x88, 0x08, 0x88, 0x08, 0x80, 0x88, 0x11, 0x88, //## ### ## ##..## -0x80, 0x04, 0x08, 0x08, 0x04, 0x08, 0x18, 0x80, //# $ # # $ #.## -0x80, 0x44, 0x00, 0x00, 0x04, 0x08, 0x18, 0x00, //# $$ $ #.# -0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x18, 0x00, //# ### #.# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //############## -//Level: 121 -0x0F, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, // # # # # # -0x00, 0x00, 0x00, 0x80, 0x04, 0x04, 0x80, 0x80, // # $ $# # -0x88, 0x88, 0x88, 0x80, 0x00, 0x40, 0x00, 0x80, //####### $ # -0x81, 0x18, 0x00, 0x88, 0x04, 0x04, 0x80, 0x80, //#..# ## $ $# # -0x81, 0x10, 0x00, 0x88, 0x04, 0x04, 0x00, 0x80, //#.. ## $ $ # -0x81, 0x18, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, //#..# ## ###### -0x81, 0x18, 0x08, 0x04, 0x04, 0x08, 0x00, 0x00, //#..# # $ $ # -0x81, 0x10, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, //#.. $ # -0x80, 0x08, 0x88, 0x02, 0x08, 0x88, 0x00, 0x00, //# ### @ ### -0x88, 0x88, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, //#### ##### -//Level: 122 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x08, 0x00, 0x48, 0x48, 0x08, // # $#$# # -0x08, 0x88, 0x88, 0x80, 0x08, 0x04, 0x08, // ###### # $ # -0x08, 0x00, 0x08, 0x04, 0x00, 0x40, 0x08, // # # $ $ # -0x88, 0x04, 0x00, 0x00, 0x08, 0x88, 0x08, //## $ ### # -0x80, 0x00, 0x84, 0x88, 0x88, 0x00, 0x08, //# #$#### # -0x80, 0x00, 0x04, 0x08, 0x88, 0x08, 0x88, //# $ ### ### -0x88, 0x88, 0x81, 0x10, 0x28, 0x08, 0x80, //#####.. @# ## -0x00, 0x08, 0x11, 0x14, 0x04, 0x40, 0x80, // #...$ $$ # -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, 0x80, // #...# # -0x00, 0x08, 0x11, 0x18, 0x88, 0x88, 0x80, // #...###### -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 123 -0x0D, 0x0A,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x82, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@$ $ $ # -0x84, 0x88, 0x80, 0x40, 0x80, 0x80, 0x80, //#$### $ # # # -0x80, 0x08, 0x00, 0x80, 0x40, 0x00, 0x80, //# # # $ # -0x80, 0x48, 0x00, 0x00, 0x80, 0x88, 0x80, //# $# # ### -0x80, 0x04, 0x08, 0x48, 0x00, 0x08, 0x00, //# $ #$# # -0x81, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, //#......... # -0x88, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, //######## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 124 -0x09, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x00, 0x00, 0x80, //#@ # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x41, 0x51, 0x40, 0x80, //# $.*.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 125 -0x09, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x00, 0x12, 0x88, 0x00, //## .@## -0x80, 0x50, 0x80, 0x08, 0x80, //# * # ## -0x80, 0x00, 0x80, 0x00, 0x80, //# # # -0x80, 0x48, 0x80, 0x80, 0x80, //# $## # # -0x80, 0x04, 0x04, 0x51, 0x80, //# $ $*.# -0x80, 0x01, 0x80, 0x00, 0x80, //# .# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 126 -0x13, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -0x80, 0x00, 0x11, 0x10, 0x02, 0x00, 0x11, 0x10, 0x00, 0x80, //# ... @ ... # -0x80, 0x44, 0x40, 0x08, 0x88, 0x88, 0x00, 0x44, 0x40, 0x80, //# $$$ ##### $$$ # -0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x00, 0x08, 0x80, //## ### ### ## -0x08, 0x80, 0x08, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x00, // ## # ## # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### #### -//Level: 127 -0x10, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // # ########### -0x00, 0x80, 0x00, 0x04, 0x00, 0x04, 0x04, 0x08, // # $ $ $ # -0x00, 0x80, 0x48, 0x04, 0x08, 0x00, 0x40, 0x08, // # $# $ # $ # -0x00, 0x80, 0x04, 0x04, 0x00, 0x80, 0x00, 0x08, // # $ $ # # -0x88, 0x80, 0x48, 0x08, 0x00, 0x88, 0x88, 0x08, //### $# # #### # -0x82, 0x84, 0x04, 0x04, 0x00, 0x88, 0x00, 0x08, //#@#$ $ $ ## # -0x80, 0x00, 0x04, 0x08, 0x48, 0x00, 0x08, 0x08, //# $ #$# # # -0x80, 0x00, 0x40, 0x00, 0x04, 0x04, 0x04, 0x08, //# $ $ $ $ # -0x88, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, //##### ######### -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x00, 0x00, // #......# -0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ######## -//Level: 128 -0x0B, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x88, 0x88, 0x80, 0x28, 0x00, //####### @# -0x80, 0x00, 0x00, 0x40, 0x08, 0x00, //# $ # -0x80, 0x00, 0x48, 0x80, 0x48, 0x00, //# $## $# -0x88, 0x48, 0x11, 0x18, 0x08, 0x00, //##$#...# # -0x08, 0x04, 0x11, 0x10, 0x08, 0x00, // # $... # -0x08, 0x08, 0x10, 0x18, 0x08, 0x80, // # #. .# ## -0x08, 0x00, 0x08, 0x08, 0x40, 0x80, // # # #$ # -0x08, 0x40, 0x04, 0x00, 0x00, 0x80, // #$ $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x80, // # ####### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 129 -0x11, 0x10,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############ -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, // # ## -0x00, 0x00, 0x80, 0x08, 0x08, 0x44, 0x04, 0x00, 0x80, // # # #$$ $ # -0x00, 0x00, 0x84, 0x08, 0x48, 0x00, 0x88, 0x02, 0x80, // #$ #$# ## @# -0x00, 0x08, 0x80, 0x88, 0x08, 0x04, 0x08, 0x08, 0x80, // ## ## # $ # ## -0x00, 0x08, 0x00, 0x04, 0x08, 0x40, 0x08, 0x08, 0x00, // # $ #$ # # -0x00, 0x08, 0x00, 0x08, 0x04, 0x00, 0x08, 0x08, 0x00, // # # $ # # -0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x88, 0x08, 0x00, // ## $ $ ## # -0x00, 0x08, 0x00, 0x80, 0x08, 0x80, 0x04, 0x08, 0x00, // # # ## $ # -0x00, 0x08, 0x00, 0x00, 0x88, 0x04, 0x48, 0x08, 0x00, // # ## $$# # -0x88, 0x88, 0x88, 0x44, 0x00, 0x08, 0x00, 0x08, 0x00, //######$$ # # -0x81, 0x11, 0x18, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, //#....# ######## -0x81, 0x81, 0x11, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, //#.#... ## -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#.... # -0x81, 0x11, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#.... # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //######### -//Level: 130 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, //# ### -0x80, 0x48, 0x00, 0x04, 0x08, 0x80, 0x04, 0x00, 0x00, 0x88, //# $# $ ## $ ## -0x80, 0x00, 0x04, 0x88, 0x80, 0x00, 0x08, 0x04, 0x40, 0x88, //# $### # $$ ## -0x81, 0x88, 0x80, 0x00, 0x00, 0x40, 0x40, 0x88, 0x00, 0x88, //#.### $ $ ## ## -0x81, 0x11, 0x80, 0x08, 0x00, 0x80, 0x00, 0x08, 0x40, 0x08, //#...# # # #$ # -0x81, 0x18, 0x84, 0x48, 0x88, 0x80, 0x40, 0x08, 0x00, 0x08, //#..##$$#### $ # # -0x81, 0x11, 0x80, 0x00, 0x00, 0x04, 0x08, 0x80, 0x08, 0x88, //#...# $ ## ### -0x81, 0x11, 0x40, 0x08, 0x88, 0x00, 0x80, 0x00, 0x08, 0x08, //#...$ ### # # # -0x88, 0x11, 0x00, 0x48, 0x00, 0x88, 0x00, 0x08, 0x82, 0x08, //##.. $# ## ##@ # -0x88, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //###.# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 131 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x11, 0x18, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#....### # -0x81, 0x11, 0x18, 0x88, 0x88, 0x08, 0x00, 0x84, 0x80, 0x88, //#....##### # #$# ## -0x81, 0x11, 0x18, 0x88, 0x00, 0x08, 0x40, 0x04, 0x00, 0x08, //#....### #$ $ # -0x81, 0x11, 0x18, 0x88, 0x00, 0x00, 0x40, 0x08, 0x44, 0x88, //#....### $ #$$## -0x88, 0x00, 0x88, 0x88, 0x04, 0x80, 0x08, 0x40, 0x40, 0x08, //## #### $# #$ $ # -0x88, 0x00, 0x88, 0x88, 0x00, 0x40, 0x04, 0x00, 0x80, 0x08, //## #### $ $ # # -0x82, 0x00, 0x88, 0x88, 0x48, 0x88, 0x48, 0x80, 0x40, 0x08, //#@ ####$###$## $ # -0x88, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x40, 0x08, //## # # $ # -0x88, 0x00, 0x08, 0x88, 0x00, 0x80, 0x04, 0x00, 0x88, 0x88, //## ### # $ #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, //######## # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 132 -0x0C, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, // ########## -0x88, 0x82, 0x00, 0x10, 0x00, 0x08, //###@ . # -0x80, 0x00, 0x88, 0x48, 0x80, 0x08, //# ##$## # -0x80, 0x04, 0x10, 0x10, 0x14, 0x88, //# $. . .$## -0x88, 0x04, 0x88, 0x48, 0x80, 0x80, //## $##$## # -0x08, 0x00, 0x00, 0x10, 0x00, 0x80, // # . # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 133 -0x08, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x00, 0x80, //### # -0x80, 0x40, 0x80, 0x88, //# $ # ## -0x80, 0x41, 0x41, 0x08, //# $.$. # -0x80, 0x88, 0x10, 0x08, //# ##. # -0x80, 0x02, 0x08, 0x88, //# @ ### -0x88, 0x88, 0x88, 0x00, //###### -//Level: 134 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -0x00, 0x80, 0x00, 0x08, 0x88, // # ### -0x00, 0x80, 0x40, 0x00, 0x08, // # $ # -0x88, 0x80, 0x40, 0x88, 0x08, //### $ ## # -0x81, 0x11, 0x04, 0x00, 0x08, //#... $ # -0x81, 0x11, 0x48, 0x40, 0x88, //#...$#$ ## -0x88, 0x88, 0x08, 0x04, 0x08, //#### # $ # -0x00, 0x08, 0x00, 0x20, 0x08, // # @ # -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -//Level: 135 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //###### # -0x80, 0x00, 0x04, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //# $ ########### -0x80, 0x88, 0x04, 0x00, 0x88, 0x00, 0x80, 0x11, 0x11, 0x80, //# ## $ ## # ....# -0x80, 0x40, 0x40, 0x04, 0x00, 0x00, 0x80, 0x11, 0x11, 0x80, //# $ $ $ # ....# -0x80, 0x80, 0x04, 0x40, 0x88, 0x80, 0x80, 0x11, 0x11, 0x80, //# # $$ ### # ....# -0x80, 0x24, 0x40, 0x00, 0x08, 0x80, 0x80, 0x11, 0x11, 0x80, //# @$$ ## # ....# -0x88, 0x88, 0x00, 0x80, 0x08, 0x00, 0x88, 0x08, 0x88, 0x80, //#### # # ## #### -0x00, 0x08, 0x04, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, // # $#### # -0x00, 0x08, 0x40, 0x40, 0x88, 0x88, 0x48, 0x08, 0x00, 0x00, // #$ $ ####$# # -0x00, 0x88, 0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x00, 0x00, // ## # # # # # -0x00, 0x80, 0x04, 0x44, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, // # $$$ # -0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, // # ##### # -0x00, 0x80, 0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, 0x00, // # #### #### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 136 -0x0B, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x08, 0x00, 0x08, 0x00, // # # # -0x08, 0x04, 0x44, 0x44, 0x08, 0x00, // # $$$$$ # -0x88, 0x04, 0x04, 0x04, 0x08, 0x00, //## $ $ $ # -0x80, 0x40, 0x02, 0x00, 0x08, 0x00, //# $ @ # -0x80, 0x40, 0x88, 0x88, 0x08, 0x80, //# $ #### ## -0x80, 0x08, 0x11, 0x11, 0x10, 0x80, //# #..... # -0x88, 0x00, 0x11, 0x11, 0x10, 0x80, //## ..... # -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -//Level: 137 -0x0E, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x08, 0x80, 0x00, 0x00, 0x88, // ## ## -0x00, 0x00, 0x88, 0x00, 0x48, 0x80, 0x08, // ## $## # -0x00, 0x00, 0x80, 0x08, 0x00, 0x04, 0x08, // # # $ # -0x00, 0x00, 0x80, 0x80, 0x08, 0x08, 0x08, // # # # # # -0x00, 0x00, 0x80, 0x40, 0x40, 0x04, 0x08, // # $ $ $ # -0x88, 0x88, 0x88, 0x80, 0x84, 0x80, 0x08, //####### #$# # -0x80, 0x04, 0x04, 0x00, 0x00, 0x00, 0x88, //# $ $ ## -0x82, 0x11, 0x40, 0x55, 0x18, 0x88, 0x80, //#@..$ **.#### -0x88, 0x11, 0x11, 0x11, 0x88, 0x00, 0x00, //##......## -0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -//Level: 138 -0x0D, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x88, 0x80, 0x80, 0x88, 0x88, 0x80, // #### # ##### -0x88, 0x00, 0x04, 0x04, 0x00, 0x00, 0x80, //## $ $ # -0x80, 0x48, 0x08, 0x11, 0x18, 0x40, 0x80, //# $# #...#$ # -0x82, 0x40, 0x01, 0x11, 0x80, 0x08, 0x80, //#@$ ...# ## -0x80, 0x48, 0x01, 0x18, 0x04, 0x00, 0x80, //# $# ..# $ # -0x88, 0x00, 0x01, 0x80, 0x00, 0x00, 0x80, //## .# # -0x08, 0x88, 0x04, 0x04, 0x08, 0x00, 0x80, // ### $ $ # # -0x00, 0x08, 0x88, 0x00, 0x08, 0x88, 0x80, // ### #### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 139 -0x09, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x28, 0x00, 0x00, //# @# -0x80, 0x40, 0x08, 0x88, 0x80, //# $ #### -0x80, 0x45, 0x11, 0x50, 0x80, //# $*..* # -0x80, 0x51, 0x15, 0x40, 0x80, //# *..*$ # -0x88, 0x88, 0x00, 0x40, 0x80, //#### $ # -0x00, 0x08, 0x00, 0x00, 0x80, // # # -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -//Level: 140 -0x09, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x88, 0x00, 0x00, 0x88, 0x00, //## ## -0x80, 0x08, 0x80, 0x08, 0x00, //# ## # -0x80, 0x80, 0x08, 0x08, 0x00, //# # # # -0x81, 0x00, 0x18, 0x48, 0x80, //#. .#$## -0x80, 0x80, 0x50, 0x40, 0x80, //# # * $ # -0x80, 0x80, 0x50, 0x42, 0x80, //# # * $@# -0x80, 0x01, 0x10, 0x40, 0x80, //# .. $ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 141 -0x0B, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, // ######### -0x08, 0x00, 0x88, 0x00, 0x08, 0x00, // # ## # -0x08, 0x00, 0x04, 0x00, 0x08, 0x00, // # $ # -0x08, 0x40, 0x88, 0x80, 0x48, 0x00, // #$ ### $# -0x08, 0x08, 0x11, 0x18, 0x08, 0x00, // # #...# # -0x88, 0x08, 0x11, 0x18, 0x08, 0x80, //## #...# ## -0x80, 0x40, 0x04, 0x00, 0x40, 0x80, //# $ $ $ # -0x80, 0x00, 0x00, 0x80, 0x20, 0x80, //# # @ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 142 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x20, 0x08, 0x88, 0x80, // #@ #### -0x00, 0x88, 0x88, 0x84, 0x00, 0x00, 0x80, // #####$ # -0x00, 0x81, 0x11, 0x80, 0x08, 0x04, 0x88, // #...# # $## -0x00, 0x81, 0x51, 0x84, 0x08, 0x40, 0x08, // #.*.#$ #$ # -0x88, 0x81, 0x11, 0x04, 0x08, 0x08, 0x08, //###... $ # # # -0x80, 0x01, 0x18, 0x84, 0x80, 0x00, 0x08, //# ..##$# # -0x80, 0x08, 0x88, 0x80, 0x08, 0x04, 0x08, //# #### # $ # -0x88, 0x00, 0x04, 0x00, 0x08, 0x44, 0x08, //## $ #$$ # -0x08, 0x00, 0x88, 0x08, 0x80, 0x00, 0x88, // # ## ## ## -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, // ##### # -0x00, 0x00, 0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 143 -0x11, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, // ##### # -0x00, 0x00, 0x88, 0x04, 0x00, 0x40, 0x08, 0x88, 0x80, // ## $ $ #### -0x88, 0x88, 0x80, 0x40, 0x04, 0x04, 0x08, 0x81, 0x80, //##### $ $ $ ##.# -0x80, 0x00, 0x00, 0x00, 0x44, 0x00, 0x88, 0x11, 0x80, //# $$ ##..# -0x80, 0x08, 0x88, 0x88, 0x80, 0x88, 0x81, 0x10, 0x80, //# ###### ###.. # -0x88, 0x08, 0x00, 0x80, 0x00, 0x08, 0x11, 0x10, 0x80, //## # # #... # -0x80, 0x40, 0x00, 0x80, 0x00, 0x08, 0x11, 0x10, 0x80, //# $ # #... # -0x82, 0x08, 0x40, 0x88, 0x08, 0x88, 0x81, 0x11, 0x80, //#@ #$ ## ####...# -0x88, 0x88, 0x00, 0x40, 0x44, 0x00, 0x88, 0x11, 0x80, //#### $ $$ ##..# -0x00, 0x08, 0x80, 0x04, 0x04, 0x00, 0x41, 0x11, 0x80, // ## $ $ $...# -0x00, 0x00, 0x80, 0x44, 0x00, 0x40, 0x80, 0x01, 0x80, // # $$ $ # .# -0x00, 0x00, 0x80, 0x00, 0x40, 0x40, 0x08, 0x88, 0x80, // # $ $ #### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, // ###### # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 144 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x01, 0x11, 0x18, 0x00, 0x00, 0x88, 0x88, //# ....# #### -0x80, 0x00, 0x00, 0x01, 0x11, 0x10, 0x00, 0x00, 0x00, 0x08, //# .... # -0x80, 0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, //# # ########## # -0x80, 0x84, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x81, 0x18, //# #$ # ###..# -0x80, 0x04, 0x00, 0x08, 0x44, 0x88, 0x80, 0x00, 0x81, 0x18, //# $ #$$### #..# -0x80, 0x40, 0x88, 0x80, 0x40, 0x00, 0x40, 0x00, 0x81, 0x18, //# $ ### $ $ #..# -0x80, 0x40, 0x80, 0x00, 0x40, 0x40, 0x80, 0x08, 0x81, 0x18, //# $ # $ $ # ##..# -0x80, 0x08, 0x00, 0x44, 0x08, 0x04, 0x08, 0x80, 0x00, 0x88, //# # $$ # $ ## ## -0x82, 0x88, 0x04, 0x80, 0x04, 0x00, 0x40, 0x00, 0x00, 0x88, //#@## $# $ $ ## -0x88, 0x00, 0x00, 0x00, 0x08, 0x80, 0x00, 0x80, 0x08, 0x88, //## ## # ### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 145 -0x11, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //################ -0x80, 0x00, 0x00, 0x00, 0x82, 0x08, 0x00, 0x08, 0x00, //# #@ # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x04, 0x48, 0x00, //# # # # # $ $$# -0x80, 0x81, 0x11, 0x80, 0x84, 0x44, 0x00, 0x08, 0x00, //# #...# #$$$ # -0x80, 0x01, 0x11, 0x80, 0x80, 0x40, 0x04, 0x48, 0x80, //# ...# # $ $$## -0x80, 0x88, 0x18, 0x80, 0x80, 0x88, 0x00, 0x00, 0x80, //# ##.## # ## # -0x80, 0x81, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x80, //# #... $ # -0x80, 0x88, 0x08, 0x88, 0x00, 0x88, 0x88, 0x88, 0x80, //# ## ### ####### -0x80, 0x00, 0x08, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, //# # #### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 146 -0x0A, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x00, 0x88, 0x00, 0x80, 0x28, // ## # @# -0x00, 0x80, 0x00, 0x80, 0x08, // # # # -0x00, 0x84, 0x04, 0x04, 0x08, // #$ $ $ # -0x00, 0x80, 0x48, 0x80, 0x08, // # $## # -0x88, 0x80, 0x40, 0x80, 0x88, //### $ # ## -0x81, 0x11, 0x11, 0x00, 0x80, //#..... # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 147 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x01, 0x11, 0x80, // ##### ...# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x11, 0x80, // # ...# -0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x01, 0x11, 0x80, // # ## ...# -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x01, 0x11, 0x80, // ## ## ...# -0x00, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x80, // ### ######## -0x00, 0x00, 0x08, 0x04, 0x44, 0x08, 0x80, 0x00, 0x00, // # $$$ ## -0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x88, 0x88, 0x80, // ##### $ $ ##### -0x88, 0x00, 0x08, 0x40, 0x40, 0x00, 0x80, 0x00, 0x80, //## #$ $ # # -0x82, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x40, 0x80, //#@ $ $ $ $ # -0x88, 0x88, 0x88, 0x04, 0x40, 0x40, 0x88, 0x88, 0x80, //###### $$ $ ##### -0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, 0x00, 0x00, // # $ # -0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x80, 0x00, 0x00, // #### ### -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 148 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, 0x00, 0x80, // ### # # -0x00, 0x00, 0x00, 0x82, 0x40, 0x04, 0x04, 0x40, 0x80, // #@$ $ $$ # -0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, //### ###### # -0x81, 0x88, 0x80, 0x00, 0x88, 0x00, 0x88, 0x40, 0x80, //#.### ## ##$ # -0x81, 0x11, 0x11, 0x51, 0x00, 0x88, 0x04, 0x00, 0x80, //#.....*. ## $ # -0x80, 0x58, 0x80, 0x08, 0x40, 0x80, 0x04, 0x00, 0x80, //# *## #$ # $ # -0x80, 0x00, 0x80, 0x04, 0x00, 0x11, 0x11, 0x11, 0x80, //# # $ ......# -0x88, 0x04, 0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, //## $## ######### -0x08, 0x04, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # $ #### -0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 149 -0x0B, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x08, 0x02, 0x08, 0x88, 0x88, 0x80, // # @ ###### -0x08, 0x08, 0x11, 0x50, 0x00, 0x80, // # #..* # -0x08, 0x01, 0x11, 0x80, 0x00, 0x80, // # ...# # -0x88, 0x48, 0x80, 0x40, 0x40, 0x80, //##$## $ $ # -0x80, 0x00, 0x84, 0x88, 0x88, 0x80, //# #$##### -0x80, 0x00, 0x40, 0x00, 0x80, 0x00, //# $ # -0x88, 0x88, 0x80, 0x80, 0x80, 0x00, //##### # # -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, // # # -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 150 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x01, 0x02, 0x80, //# . @# -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x51, 0x40, 0x80, //# *.$ # -0x81, 0x45, 0x41, 0x80, //#.$*$.# -0x80, 0x41, 0x50, 0x80, //# $.* # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 151 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x50, 0x00, 0x80, //#@ * # -0x80, 0x41, 0x41, 0x40, 0x80, //# $.$.$ # -0x80, 0x14, 0x14, 0x10, 0x80, //# .$.$. # -0x80, 0x01, 0x41, 0x40, 0x80, //# .$.$ # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 152 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x02, 0x88, //#### @## -0x80, 0x05, 0x40, 0x88, //# *$ ## -0x80, 0x00, 0x00, 0x88, //# ## -0x88, 0x01, 0x88, 0x88, //## .#### -0x88, 0x40, 0x88, 0x88, //##$ #### -0x88, 0x01, 0x88, 0x88, //## .#### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 153 -0x09, 0x0C,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x00, // # #### -0x08, 0x40, 0x20, 0x08, 0x00, // #$ @ # -0x88, 0x00, 0x88, 0x48, 0x80, //## ##$## -0x80, 0x58, 0x18, 0x00, 0x80, //# *#.# # -0x80, 0x11, 0x54, 0x40, 0x80, //# ..*$$ # -0x80, 0x18, 0x18, 0x00, 0x80, //# .#.# # -0x88, 0x00, 0x08, 0x08, 0x80, //## # ## -0x08, 0x88, 0x04, 0x00, 0x80, // ### $ # -0x00, 0x08, 0x08, 0x00, 0x80, // # # # -0x00, 0x08, 0x00, 0x08, 0x80, // # ## -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 154 -0x0C, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x81, 0x11, 0x08, 0x00, 0x00, 0x08, //#... # # -0x81, 0x10, 0x08, 0x08, 0x80, 0x08, //#.. # ## # -0x81, 0x10, 0x00, 0x00, 0x80, 0x08, //#.. # # -0x81, 0x10, 0x08, 0x04, 0x88, 0x08, //#.. # $## # -0x81, 0x11, 0x08, 0x40, 0x40, 0x08, //#... #$ $ # -0x88, 0x88, 0x88, 0x00, 0x44, 0x08, //###### $$ # -0x08, 0x80, 0x04, 0x04, 0x40, 0x08, // ## $ $$ # -0x08, 0x20, 0x44, 0x40, 0x08, 0x08, // #@ $$$ # # -0x08, 0x80, 0x40, 0x88, 0x00, 0x08, // ## $ ## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, // ########## -//Level: 155 -0x0B, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -0x80, 0x00, 0x00, 0x80, 0x08, 0x00, //# # # -0x80, 0x04, 0x04, 0x80, 0x08, 0x80, //# $ $# ## -0x80, 0x08, 0x81, 0x80, 0x00, 0x80, //# ##.# # -0x88, 0x48, 0x81, 0x88, 0x40, 0x80, //##$##.##$ # -0x80, 0x41, 0x11, 0x11, 0x00, 0x80, //# $..... # -0x82, 0x48, 0x81, 0x88, 0x48, 0x80, //#@$##.##$## -0x88, 0x08, 0x81, 0x80, 0x00, 0x80, //## ##.# # -0x80, 0x00, 0x40, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x00, 0x80, 0x00, 0x88, 0x80, //# # ### -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //######### -//Level: 156 -0x0F, 0x0C,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, //##### # -0x80, 0x00, 0x40, 0x20, 0x80, 0x00, 0x00, 0x00, //# $ @ # -0x80, 0x04, 0x08, 0x18, 0x88, 0x88, 0x00, 0x00, //# $ #.##### -0x88, 0x40, 0x88, 0x18, 0x80, 0x08, 0x88, 0x80, //##$ ##.## #### -0x08, 0x00, 0x11, 0x11, 0x10, 0x48, 0x00, 0x80, // # ..... $# # -0x08, 0x04, 0x88, 0x18, 0x80, 0x08, 0x40, 0x80, // # $##.## #$ # -0x08, 0x00, 0x08, 0x18, 0x80, 0x00, 0x00, 0x80, // # #.## # -0x08, 0x88, 0x04, 0x08, 0x88, 0x88, 0x08, 0x80, // ### $ ##### ## -0x00, 0x08, 0x08, 0x40, 0x00, 0x00, 0x40, 0x80, // # #$ $ # -0x00, 0x08, 0x00, 0x00, 0x88, 0x80, 0x00, 0x80, // # ### # -0x00, 0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x80, // ###### ##### -//Level: 157 -0x12, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // # ######### -0x08, 0x80, 0x08, 0x80, 0x08, 0x00, 0x08, 0x00, 0x00, // ## ## # # -0x08, 0x00, 0x48, 0x04, 0x24, 0x00, 0x08, 0x88, 0x80, // # $# $@$ #### -0x08, 0x40, 0x04, 0x00, 0x80, 0x40, 0x48, 0x00, 0x88, // #$ $ # $ $# ## -0x88, 0x00, 0x48, 0x80, 0x84, 0x04, 0x00, 0x00, 0x08, //## $## #$ $ # -0x80, 0x08, 0x00, 0x80, 0x80, 0x00, 0x44, 0x40, 0x08, //# # # # $$$ # -0x80, 0x40, 0x00, 0x04, 0x00, 0x48, 0x80, 0x88, 0x88, //# $ $ $## #### -0x80, 0x40, 0x40, 0x84, 0x80, 0x08, 0x00, 0x80, 0x00, //# $ $ #$# # # -0x88, 0x00, 0x88, 0x80, 0x08, 0x88, 0x40, 0x80, 0x00, //## ### ###$ # -0x08, 0x00, 0x81, 0x11, 0x10, 0x00, 0x00, 0x80, 0x00, // # #.... # -0x08, 0x88, 0x81, 0x11, 0x11, 0x18, 0x88, 0x80, 0x00, // ####......#### -0x00, 0x08, 0x11, 0x11, 0x88, 0x88, 0x00, 0x00, 0x00, // #....#### -0x00, 0x08, 0x11, 0x18, 0x80, 0x00, 0x00, 0x00, 0x00, // #...## -0x00, 0x08, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, // #...# -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 158 -0x09, 0x0C,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x40, 0x88, 0x80, 0x00, // #$ ### -0x08, 0x00, 0x02, 0x80, 0x00, // # @# -0x88, 0x08, 0x10, 0x88, 0x80, //## #. ### -0x80, 0x08, 0x51, 0x40, 0x80, //# #*.$ # -0x80, 0x44, 0x11, 0x80, 0x80, //# $$..# # -0x88, 0x08, 0x81, 0x00, 0x80, //## ##. # -0x08, 0x04, 0x00, 0x88, 0x80, // # $ ### -0x08, 0x00, 0x88, 0x80, 0x00, // # ### -0x08, 0x00, 0x80, 0x00, 0x00, // # # -0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 159 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ##### # -0x08, 0x88, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, // #### $ $ $ $ # -0x08, 0x00, 0x80, 0x04, 0x08, 0x88, 0x00, 0x80, // # # $ ### # -0x08, 0x00, 0x00, 0x20, 0x00, 0x08, 0x40, 0x80, // # @ #$ # -0x08, 0x08, 0x88, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### ### # -0x08, 0x08, 0x11, 0x11, 0x18, 0x04, 0x40, 0x80, // # #.....# $$ # -0x08, 0x08, 0x11, 0x11, 0x18, 0x00, 0x48, 0x80, // # #.....# $## -0x88, 0x48, 0x11, 0x11, 0x14, 0x00, 0x08, 0x00, //##$#.....$ # -0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x88, 0x00, //# ## # ### -0x80, 0x40, 0x40, 0x00, 0x44, 0x08, 0x00, 0x00, //# $ $ $$ # -0x88, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x00, //## ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, 0x00, // #### #### -//Level: 160 -0x10, 0x0C,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -0x81, 0x11, 0x80, 0x88, 0x88, 0x80, 0x00, 0x00, //#...# ##### -0x81, 0x11, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, //#...### # -0x81, 0x11, 0x10, 0x00, 0x44, 0x88, 0x88, 0x80, //#.... $$##### -0x81, 0x11, 0x10, 0x08, 0x00, 0x80, 0x00, 0x88, //#.... # # ## -0x81, 0x18, 0x48, 0x88, 0x80, 0x84, 0x80, 0x08, //#..#$#### #$# # -0x88, 0x04, 0x00, 0x80, 0x00, 0x00, 0x44, 0x08, //## $ # $$ # -0x80, 0x04, 0x80, 0x20, 0x40, 0x44, 0x80, 0x08, //# $# @ $ $$# # -0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x40, 0x88, //# $ $ $ # $ ## -0x80, 0x00, 0x80, 0x04, 0x08, 0x80, 0x00, 0x80, //# # $ ## # -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, 0x80, //###### ###### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 161 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x11, 0x11, 0x80, // # ....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x11, 0x11, 0x80, //############ ....# -0x80, 0x00, 0x08, 0x00, 0x40, 0x40, 0x00, 0x11, 0x11, 0x80, //# # $ $ ....# -0x80, 0x44, 0x48, 0x40, 0x04, 0x08, 0x00, 0x11, 0x11, 0x80, //# $$$#$ $ # ....# -0x80, 0x04, 0x00, 0x00, 0x04, 0x08, 0x00, 0x11, 0x11, 0x80, //# $ $ # ....# -0x80, 0x44, 0x08, 0x40, 0x40, 0x48, 0x88, 0x88, 0x88, 0x80, //# $$ #$ $ $######## -0x80, 0x04, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# $ # # -0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //## ######### -0x80, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# # ## -0x80, 0x00, 0x00, 0x40, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# $ ## -0x80, 0x04, 0x48, 0x44, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, //# $$#$$ @# -0x80, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -//Level: 162 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x00, 0x88, 0x88, 0x80, 0x00, 0x08, //# # ##### # -0x88, 0x04, 0x00, 0x80, 0x00, 0x88, 0x88, 0x00, 0x40, 0x08, //## $ # #### $ # -0x88, 0x88, 0x04, 0x40, 0x00, 0x81, 0x18, 0x00, 0x80, 0x08, //#### $$ #..# # # -0x80, 0x04, 0x00, 0x40, 0x08, 0x81, 0x18, 0x88, 0x80, 0x88, //# $ $ ##..#### ## -0x80, 0x40, 0x00, 0x88, 0x81, 0x11, 0x10, 0x00, 0x44, 0x08, //# $ ###.... $$ # -0x80, 0x08, 0x48, 0x00, 0x01, 0x11, 0x18, 0x08, 0x04, 0x08, //# #$# ....# # $ # -0x80, 0x80, 0x08, 0x04, 0x01, 0x18, 0x88, 0x48, 0x00, 0x08, //# # # $ ..###$# # -0x80, 0x80, 0x00, 0x40, 0x81, 0x18, 0x00, 0x08, 0x80, 0x08, //# # $ #..# ## # -0x80, 0x00, 0x48, 0x00, 0x88, 0x88, 0x00, 0x08, 0x04, 0x88, //# $# #### # $## -0x80, 0x80, 0x08, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x88, //# # # @# ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 163 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x18, 0x88, 0x18, //##.###.# -0x88, 0x08, 0x00, 0x18, //## # .# -0x88, 0x04, 0x40, 0x28, //## $$ @# -0x88, 0x00, 0x40, 0x08, //## $ # -0x88, 0x00, 0x80, 0x08, //## # # -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 164 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x80, 0x00, 0x88, 0x01, 0x11, 0x11, 0x18, //# ## ......# -0x80, 0x08, 0x88, 0x01, 0x18, 0x18, 0x08, //# ### ..#.# # -0x80, 0x48, 0x00, 0x11, 0x88, 0x10, 0x18, //# $# ..##. .# -0x88, 0x08, 0x04, 0x80, 0x80, 0x00, 0x08, //## # $# # # -0x80, 0x40, 0x04, 0x00, 0x00, 0x80, 0x88, //# $ $ # ## -0x80, 0x48, 0x08, 0x04, 0x88, 0x84, 0x08, //# $# # $###$ # -0x82, 0x08, 0x08, 0x04, 0x00, 0x80, 0x08, //#@ # # $ # # -0x80, 0x48, 0x08, 0x84, 0x80, 0x84, 0x08, //# $# ##$# #$ # -0x80, 0x40, 0x00, 0x80, 0x00, 0x00, 0x08, //# $ # # -0x88, 0x80, 0x00, 0x80, 0x88, 0x40, 0x88, //### # ##$ ## -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ##### # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 165 -0x0F, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x80, 0x80, //# $.$.$.$.$.# # -0x80, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x80, //# .$.$.$.$.$ # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x82, 0x80, //# $.$.$.$.$.#@# -0x80, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x80, //# .$.$.$.$.$ # -0x80, 0x41, 0x41, 0x41, 0x41, 0x41, 0x80, 0x80, //# $.$.$.$.$.# # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 166 -0x0F, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x08, 0x04, 0x04, 0x08, 0x80, 0x00, 0x00, // # $ $ ## -0x00, 0x08, 0x88, 0x88, 0x11, 0x88, 0x88, 0x80, // #####..##### -0x88, 0x88, 0x88, 0x11, 0x51, 0x00, 0x40, 0x80, //######..*. $ # -0x80, 0x04, 0x24, 0x11, 0x11, 0x84, 0x40, 0x80, //# $@$....#$$ # -0x80, 0x00, 0x40, 0x84, 0x88, 0x80, 0x00, 0x80, //# $ #$### # -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x88, 0x80, //##### ### -0x00, 0x00, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, // ### #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 167 -0x09, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x88, 0x81, 0x80, 0x00, 0x80, //###.# # -0x80, 0x41, 0x40, 0x80, 0x80, //# $.$ # # -0x80, 0x85, 0x04, 0x00, 0x80, //# #* $ # -0x82, 0x01, 0x08, 0x88, 0x80, //#@ . #### -0x88, 0x88, 0x88, 0x00, 0x00, //###### -//Level: 168 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -0x00, 0x00, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // # # #### -0x88, 0x88, 0x80, 0x48, 0x40, 0x80, 0x08, 0x80, 0x00, 0x00, //##### $#$ # ## -0x81, 0x10, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, //#.. # # # # -0x81, 0x10, 0x80, 0x48, 0x40, 0x80, 0x04, 0x88, 0x88, 0x00, //#.. # $#$ # $#### -0x81, 0x00, 0x80, 0x00, 0x00, 0x84, 0x00, 0x80, 0x08, 0x00, //#. # #$ # # -0x81, 0x10, 0x00, 0x48, 0x00, 0x80, 0x40, 0x00, 0x08, 0x00, //#.. $# # $ # -0x81, 0x12, 0x80, 0x08, 0x40, 0x84, 0x00, 0x80, 0x08, 0x00, //#..@# #$ #$ # # -0x81, 0x10, 0x80, 0x48, 0x00, 0x00, 0x04, 0x80, 0x08, 0x00, //#.. # $# $# # -0x81, 0x10, 0x80, 0x08, 0x44, 0x84, 0x00, 0x80, 0x08, 0x80, //#.. # #$$#$ # ## -0x81, 0x10, 0x80, 0x48, 0x00, 0x80, 0x04, 0x84, 0x00, 0x80, //#.. # $# # $#$ # -0x81, 0x10, 0x80, 0x08, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //#.. # # # # # -0x88, 0x10, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, //##. #### ##### # -0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x80, // #### #### ##### -//Level: 169 -0x10, 0x0E,//Size x and y -0x88, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, //##### #### -0x81, 0x11, 0x80, 0x80, 0x08, 0x88, 0x80, 0x00, //#...# # #### -0x81, 0x11, 0x88, 0x80, 0x04, 0x00, 0x80, 0x00, //#...### $ # -0x81, 0x11, 0x18, 0x80, 0x40, 0x04, 0x88, 0x80, //#....## $ $### -0x88, 0x11, 0x11, 0x88, 0x00, 0x04, 0x00, 0x80, //##....## $ # -0x88, 0x81, 0x11, 0x08, 0x80, 0x40, 0x40, 0x80, //###... ## $ $ # -0x80, 0x88, 0x00, 0x00, 0x80, 0x04, 0x00, 0x80, //# ## # $ # -0x80, 0x08, 0x80, 0x80, 0x88, 0x80, 0x88, 0x88, //# ## # ### #### -0x80, 0x40, 0x80, 0x84, 0x00, 0x40, 0x00, 0x08, //# $ # #$ $ # -0x80, 0x04, 0x02, 0x04, 0x00, 0x00, 0x40, 0x08, //# $ @ $ $ # -0x80, 0x00, 0x80, 0x40, 0x44, 0x04, 0x08, 0x88, //# # $ $$ $ ### -0x80, 0x08, 0x88, 0x88, 0x80, 0x08, 0x88, 0x00, //# ###### ### -0x80, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, //# ## #### -0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //### -//Level: 170 -0x0D, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, // # # -0x08, 0x84, 0x04, 0x04, 0x04, 0x88, 0x00, // ##$ $ $ $## -0x88, 0x00, 0x40, 0x40, 0x40, 0x08, 0x80, //## $ $ $ ## -0x80, 0x40, 0x08, 0x08, 0x00, 0x40, 0x80, //# $ # # $ # -0x80, 0x00, 0x81, 0x11, 0x80, 0x00, 0x80, //# #...# # -0x88, 0x08, 0x11, 0x11, 0x18, 0x08, 0x80, //## #.....# ## -0x08, 0x08, 0x11, 0x11, 0x18, 0x08, 0x00, // # #.....# # -0x08, 0x00, 0x81, 0x81, 0x80, 0x08, 0x00, // # #.#.# # -0x08, 0x40, 0x40, 0x44, 0x40, 0x48, 0x00, // #$ $ $$$ $# -0x08, 0x00, 0x80, 0x00, 0x80, 0x08, 0x00, // # # # # -0x08, 0x88, 0x80, 0x28, 0x88, 0x88, 0x00, // #### @##### -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -//Level: 171 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x82, 0x00, 0x00, 0x08, 0x88, 0x00, 0x08, 0x00, 0x80, 0x08, //#@ ### # # # -0x80, 0x80, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, //# # # # $ $ # -0x88, 0x88, 0x80, 0x00, 0x00, 0x80, 0x40, 0x48, 0x48, 0x08, //##### # $ $#$# # -0x81, 0x81, 0x18, 0x00, 0x00, 0x88, 0x40, 0x40, 0x00, 0x08, //#.#..# ##$ $ # -0x81, 0x11, 0x11, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x88, //#..... $ # ## -0x81, 0x11, 0x11, 0x00, 0x00, 0x88, 0x84, 0x88, 0x48, 0x88, //#..... ###$##$### -0x81, 0x81, 0x18, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x08, //#.#..# $ # # -0x88, 0x88, 0x80, 0x00, 0x00, 0x80, 0x08, 0x40, 0x04, 0x08, //##### # #$ $ # -0x88, 0x88, 0x80, 0x08, 0x00, 0x40, 0x00, 0x04, 0x04, 0x08, //##### # $ $ $ # -0x88, 0x88, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, //##### # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 172 -0x0E, 0x0E,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -0x08, 0x80, 0x08, 0x00, 0x80, 0x08, 0x80, // ## # # ## -0x88, 0x00, 0x48, 0x00, 0x00, 0x00, 0x88, //## $# ## -0x80, 0x00, 0x00, 0x04, 0x80, 0x40, 0x08, //# $# $ # -0x80, 0x44, 0x08, 0x11, 0x80, 0x40, 0x08, //# $$ #..# $ # -0x88, 0x80, 0x83, 0x51, 0x18, 0x80, 0x88, //### #+*..## ## -0x80, 0x00, 0x15, 0x88, 0x11, 0x40, 0x08, //# .*##..$ # -0x80, 0x04, 0x11, 0x88, 0x51, 0x40, 0x08, //# $..##*.$ # -0x88, 0x08, 0x81, 0x15, 0x58, 0x08, 0x88, //## ##..**# ### -0x80, 0x44, 0x08, 0x11, 0x80, 0x04, 0x08, //# $$ #..# $ # -0x80, 0x00, 0x08, 0x00, 0x04, 0x00, 0x08, //# # $ # -0x88, 0x00, 0x00, 0x40, 0x84, 0x00, 0x88, //## $ #$ ## -0x08, 0x80, 0x08, 0x00, 0x80, 0x08, 0x80, // ## # # ## -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########## -//Level: 173 -0x0F, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x40, 0x08, 0x04, 0x08, 0x00, 0x00, 0x80, //# $ # $ # # -0x80, 0x40, 0x80, 0x48, 0x40, 0x80, 0x00, 0x80, //# $ # $#$ # # -0x80, 0x48, 0x04, 0x00, 0x04, 0x00, 0x00, 0x80, //# $# $ $ # -0x80, 0x00, 0x40, 0x00, 0x80, 0x48, 0x00, 0x80, //# $ # $# # -0x84, 0x80, 0x40, 0x08, 0x00, 0x40, 0x84, 0x80, //#$# $ # $ #$# -0x80, 0x08, 0x40, 0x80, 0x00, 0x40, 0x00, 0x80, //# #$ # $ # -0x80, 0x00, 0x04, 0x00, 0x04, 0x08, 0x40, 0x80, //# $ $ #$ # -0x80, 0x00, 0x80, 0x48, 0x40, 0x80, 0x40, 0x80, //# # $#$ # $ # -0x80, 0x00, 0x08, 0x04, 0x08, 0x00, 0x40, 0x80, //# # $ # $ # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, 0x80, //# #####@##### # -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x11, 0x80, //#..... .......# -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x11, 0x80, //#..... .......# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 174 -0x0A, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, // ####### -0x08, 0x88, 0x00, 0x00, 0x08, // ### # -0x88, 0x00, 0x08, 0x08, 0x08, //## # # # -0x80, 0x08, 0x14, 0x44, 0x08, //# #.$$$ # -0x80, 0x81, 0x58, 0x08, 0x88, //# #.*# ### -0x80, 0x01, 0x18, 0x08, 0x00, //# ..# # -0x88, 0x81, 0x14, 0x08, 0x80, //###..$ ## -0x00, 0x81, 0x80, 0x40, 0x80, // #.# $ # -0x08, 0x80, 0x80, 0x82, 0x80, // ## # #@# -0x08, 0x04, 0x00, 0x40, 0x80, // # $ $ # -0x08, 0x00, 0x00, 0x08, 0x80, // # ## -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 175 -0x0A, 0x09,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x88, 0x40, 0x88, 0x00, 0x80, //##$ ## # -0x80, 0x04, 0x24, 0x00, 0x80, //# $@$ # -0x80, 0x00, 0x88, 0x40, 0x80, //# ##$ # -0x88, 0x81, 0x88, 0x08, 0x88, //###.## ### -0x08, 0x11, 0x14, 0x04, 0x08, // #...$ $ # -0x08, 0x81, 0x10, 0x00, 0x08, // ##.. # -0x00, 0x88, 0x88, 0x88, 0x88, // ######## -//Level: 176 -0x0B, 0x09,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x08, 0x02, 0x08, 0x00, 0x00, // # @ # -0x00, 0x08, 0x04, 0x08, 0x00, 0x00, // # $ # -0x00, 0x08, 0x41, 0x48, 0x00, 0x00, // #$.$# -0x00, 0x88, 0x14, 0x18, 0x80, 0x00, // ##.$.## -0x88, 0x81, 0x41, 0x41, 0x88, 0x80, //###.$.$.### -0x80, 0x04, 0x14, 0x14, 0x00, 0x80, //# $.$.$ # -0x80, 0x00, 0x01, 0x00, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 177 -0x0B, 0x0B,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x00, 0x08, 0x00, 0x08, 0x00, 0x00, // # # -0x00, 0x08, 0x04, 0x48, 0x00, 0x00, // # $$# -0x88, 0x88, 0x01, 0x08, 0x88, 0x80, //#### . #### -0x80, 0x40, 0x51, 0x50, 0x00, 0x80, //# $ *.* # -0x80, 0x41, 0x11, 0x11, 0x40, 0x80, //# $.....$ # -0x80, 0x00, 0x51, 0x50, 0x40, 0x80, //# *.* $ # -0x88, 0x88, 0x01, 0x08, 0x88, 0x80, //#### . #### -0x00, 0x08, 0x44, 0x48, 0x00, 0x00, // #$$$# -0x00, 0x08, 0x02, 0x08, 0x00, 0x00, // # @ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 178 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x80, // ##### -0x88, 0x80, 0x00, 0x88, //### ## -0x80, 0x01, 0x05, 0x08, //# . * # -0x80, 0x14, 0x18, 0x28, //# .$.#@# -0x88, 0x08, 0x04, 0x08, //## # $ # -0x08, 0x04, 0x08, 0x08, // # $ # # -0x08, 0x88, 0x00, 0x08, // ### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 179 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x88, //# #### -0x80, 0x44, 0x00, 0x08, //# $$ # -0x80, 0x18, 0x10, 0x08, //# .#. # -0x80, 0x08, 0x80, 0x88, //# ## ## -0x80, 0x08, 0x84, 0x80, //# ##$# -0x80, 0x20, 0x01, 0x80, //# @ .# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 180 -0x14, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, //######## ##### -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, //# # # -0x80, 0x00, 0x08, 0x08, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, //# # ## # #### -0x88, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x88, //## # # ### -0x08, 0x00, 0x08, 0x80, 0x00, 0x80, 0x44, 0x48, 0x00, 0x08, // # ## # $$$# # -0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x04, 0x08, // # # $ $ # -0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x48, 0x02, 0x80, 0x88, // # # # # #$# @# ## -0x08, 0x88, 0x80, 0x04, 0x04, 0x08, 0x00, 0x04, 0x00, 0x80, // #### $ $ # $ # -0x00, 0x80, 0x40, 0x88, 0x88, 0x80, 0x88, 0x80, 0x48, 0x80, // # $ ##### ### $## -0x00, 0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x08, 0x00, // # ........... # -0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x00, 0x88, 0x00, // ### ####### ## -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, // #### #### -//Level: 181 -0x0A, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, //###### -0x80, 0x00, 0x08, 0x00, 0x00, //# # -0x80, 0x04, 0x08, 0x88, 0x80, //# $ #### -0x80, 0x44, 0x08, 0x00, 0x88, //# $$ # ## -0x80, 0x80, 0x88, 0x40, 0x08, //# # ##$ # -0x81, 0x11, 0x00, 0x11, 0x08, //#... .. # -0x88, 0x88, 0x88, 0x80, 0x88, //####### ## -0x80, 0x00, 0x88, 0x00, 0x08, //# ## # -0x82, 0x40, 0x00, 0x14, 0x08, //#@$ .$ # -0x80, 0x00, 0x88, 0x00, 0x08, //# ## # -0x80, 0x00, 0x88, 0x88, 0x88, //# ###### -0x88, 0x88, 0x80, 0x00, 0x00, //##### -//Level: 182 -0x13, 0x0D,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -0x00, 0x88, 0x00, 0x08, 0x80, 0x08, 0x88, 0x88, 0x80, 0x00, // ## ## ###### -0x88, 0x80, 0x00, 0x00, 0x80, 0x08, 0x00, 0x00, 0x88, 0x80, //### # # ### -0x80, 0x04, 0x08, 0x40, 0x80, 0x08, 0x00, 0x11, 0x10, 0x80, //# $ #$ # # ... # -0x80, 0x80, 0x48, 0x24, 0x88, 0x08, 0x08, 0x18, 0x10, 0x80, //# # $#@$## # #.#. # -0x80, 0x08, 0x08, 0x40, 0x08, 0x00, 0x00, 0x10, 0x10, 0x80, //# # #$ # . . # -0x80, 0x40, 0x00, 0x04, 0x08, 0x08, 0x08, 0x18, 0x10, 0x80, //# $ $ # # #.#. # -0x80, 0x00, 0x88, 0x00, 0x88, 0x40, 0x40, 0x10, 0x10, 0x80, //# ## ##$ $ . . # -0x80, 0x40, 0x80, 0x00, 0x80, 0x08, 0x48, 0x18, 0x10, 0x80, //# $ # # #$#.#. # -0x88, 0x04, 0x00, 0x40, 0x00, 0x40, 0x04, 0x11, 0x10, 0x80, //## $ $ $ $... # -0x08, 0x40, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x00, 0x80, // #$ ###### ## # -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // # # ########## -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 183 -0x11, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -0x80, 0x00, 0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, //# #.......# -0x80, 0x44, 0x40, 0x80, 0x41, 0x81, 0x11, 0x11, 0x80, //# $$$ # $.#.....# -0x80, 0x08, 0x04, 0x01, 0x11, 0x11, 0x18, 0x11, 0x80, //# # $ ......#..# -0x80, 0x40, 0x08, 0x08, 0x88, 0x18, 0x11, 0x00, 0x80, //# $ # ###.#.. # -0x80, 0x04, 0x04, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ $$ # # -0x80, 0x08, 0x04, 0x00, 0x04, 0x40, 0x08, 0x00, 0x80, //# # $ $$ # # -0x80, 0x88, 0x00, 0x80, 0x80, 0x80, 0x08, 0x80, 0x80, //# ## # # # ## # -0x80, 0x40, 0x48, 0x80, 0x80, 0x88, 0x00, 0x00, 0x80, //# $ $## # ## # -0x80, 0x42, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $@$ $ # # -0x80, 0x40, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ $ # # -0x80, 0x08, 0x84, 0x40, 0x80, 0x08, 0x80, 0x00, 0x80, //# ##$$ # ## # -0x80, 0x44, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, //# $$ $ # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -//Level: 184 -0x0F, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //############# -0x81, 0x11, 0x18, 0x00, 0x88, 0x00, 0x80, 0x00, //#....# ## # -0x81, 0x10, 0x18, 0x04, 0x04, 0x40, 0x80, 0x00, //#.. .# $ $$ # -0x81, 0x11, 0x11, 0x20, 0x88, 0x00, 0x80, 0x00, //#.....@ ## # -0x81, 0x11, 0x18, 0x80, 0x80, 0x08, 0x80, 0x00, //#....## # ## -0x88, 0x18, 0x88, 0x84, 0x80, 0x08, 0x00, 0x00, //##.####$# # -0x80, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, //# # # -0x80, 0x40, 0x04, 0x08, 0x88, 0x48, 0x88, 0x80, //# $ $ ###$#### -0x88, 0x08, 0x88, 0x00, 0x00, 0x40, 0x00, 0x80, //## ### $ # -0x80, 0x40, 0x80, 0x48, 0x08, 0x80, 0x40, 0x80, //# $ # $# ## $ # -0x80, 0x00, 0x04, 0x00, 0x40, 0x88, 0x08, 0x80, //# $ $ ## ## -0x88, 0x88, 0x88, 0x80, 0x04, 0x88, 0x08, 0x80, //####### $## ## -0x00, 0x00, 0x88, 0x84, 0x04, 0x00, 0x00, 0x80, // ###$ $ # -0x00, 0x00, 0x80, 0x00, 0x04, 0x80, 0x00, 0x80, // # $# # -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -//Level: 185 -0x0B, 0x0A,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x88, 0x10, 0x00, 0x80, // #####. # -0x08, 0x00, 0x81, 0x18, 0x80, 0x80, // # #..## # -0x08, 0x00, 0x41, 0x10, 0x00, 0x80, // # $.. # -0x08, 0x00, 0x80, 0x18, 0x08, 0x80, // # # .# ## -0x88, 0x80, 0x88, 0x48, 0x00, 0x80, //### ##$# # -0x80, 0x40, 0x00, 0x04, 0x40, 0x80, //# $ $$ # -0x80, 0x84, 0x80, 0x08, 0x00, 0x80, //# #$# # # -0x82, 0x00, 0x88, 0x88, 0x88, 0x80, //#@ ####### -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //##### -//Level: 186 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x82, 0x05, 0x00, 0x80, //#@ * # -0x80, 0x41, 0x04, 0x80, //# $. $# -0x84, 0x05, 0x00, 0x80, //#$ * # -0x81, 0x51, 0x51, 0x80, //#.*.*.# -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x05, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 187 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x08, 0x28, 0x08, 0x80, 0x08, 0x88, 0x88, //# # #@# ## ##### -0x80, 0x80, 0x80, 0x04, 0x00, 0x00, 0x40, 0x08, 0x88, 0x88, //# # # $ $ ##### -0x80, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x40, 0x08, 0x88, //# # ###### $ ### -0x80, 0x00, 0x80, 0x08, 0x11, 0x11, 0x80, 0x04, 0x40, 0x08, //# # #....# $$ # -0x88, 0x48, 0x84, 0x88, 0x11, 0x11, 0x80, 0x00, 0x00, 0x08, //##$##$##....# # -0x80, 0x00, 0x00, 0x08, 0x11, 0x11, 0x88, 0x48, 0x84, 0x88, //# #....##$##$## -0x80, 0x04, 0x40, 0x08, 0x11, 0x11, 0x80, 0x00, 0x00, 0x08, //# $$ #....# # -0x80, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x88, 0x80, 0x08, //# $ $ # # ### # -0x88, 0x88, 0x80, 0x04, 0x00, 0x04, 0x00, 0x00, 0x40, 0x08, //##### $ $ $ # -0x88, 0x88, 0x80, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //##### # # # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 188 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x88, //# # # # ## -0x80, 0x48, 0x04, 0x04, 0x08, 0x81, 0x11, 0x40, 0x04, 0x08, //# $# $ $ ##...$ $ # -0x80, 0x04, 0x00, 0x80, 0x88, 0x11, 0x11, 0x80, 0x40, 0x08, //# $ # ##....# $ # -0x80, 0x88, 0x04, 0x08, 0x81, 0x11, 0x18, 0x00, 0x04, 0x08, //# ## $ ##....# $ # -0x80, 0x40, 0x00, 0x08, 0x11, 0x11, 0x88, 0x04, 0x00, 0x08, //# $ #....## $ # -0x80, 0x48, 0x80, 0x08, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, //# $## #...# # -0x80, 0x00, 0x44, 0x48, 0x84, 0x88, 0x00, 0x88, 0x80, 0x88, //# $$$##$## ### ## -0x80, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, //# # # # # # # -0x80, 0x40, 0x80, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08, //# $ # $ ## # -0x80, 0x00, 0x08, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x08, //# # #@ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 189 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x08, 0x88, 0x80, //##### #### -0x82, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, //#@ ######## # -0x88, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, //## $ $ # -0x08, 0x08, 0x08, 0x00, 0x88, 0x88, 0x00, 0x80, // # # # #### # -0x08, 0x00, 0x40, 0x00, 0x88, 0x88, 0x48, 0x80, // # $ ####$## -0x08, 0x40, 0x88, 0x08, 0x04, 0x04, 0x08, 0x00, // #$ ## # $ $ # -0x88, 0x04, 0x00, 0x48, 0x00, 0x00, 0x08, 0x00, //## $ $# # -0x80, 0x00, 0x80, 0x00, 0x00, 0x08, 0x08, 0x00, //# # # # -0x80, 0x00, 0x88, 0x88, 0x84, 0x88, 0x88, 0x00, //# #####$#### -0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, //##### # # -0x00, 0x00, 0x81, 0x11, 0x00, 0x40, 0x80, 0x00, // #... $ # -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x00, 0x00, 0x81, 0x11, 0x18, 0x88, 0x80, 0x00, // #....#### -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -//Level: 190 -0x14, 0x10,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //## ### -0x82, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#@$ # -0x88, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //### $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # ####### -0x08, 0x00, 0x40, 0x11, 0x11, 0x88, 0x88, 0x00, 0x00, 0x00, // # $ ....#### -0x08, 0x00, 0x88, 0x81, 0x11, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###... ###### -0x08, 0x80, 0x88, 0x01, 0x11, 0x80, 0x08, 0x00, 0x00, 0x88, // ## ## ...# # ## -0x08, 0x04, 0x88, 0x01, 0x11, 0x80, 0x88, 0x00, 0x40, 0x08, // # $## ...# ## $ # -0x08, 0x00, 0x00, 0x88, 0x88, 0x80, 0x88, 0x80, 0x84, 0x08, // # ##### ### #$ # -0x08, 0x00, 0x80, 0x08, 0x08, 0x80, 0x80, 0x00, 0x80, 0x08, // # # # ## # # # -0x08, 0x88, 0x88, 0x00, 0x00, 0x80, 0x84, 0x08, 0x04, 0x08, // ##### # #$ # $ # -0x00, 0x00, 0x08, 0x80, 0x80, 0x00, 0x00, 0x40, 0x40, 0x08, // ## # $ $ # -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x84, 0x04, 0x04, 0x08, // ### #$ $ $ # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, 0x08, // ##### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, // ######## -//Level: 191 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //# ########## -0x80, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, 0x00, //# ## # -0x81, 0x18, 0x00, 0x00, 0x44, 0x80, 0x80, 0x00, //#..# $$# # -0x81, 0x10, 0x08, 0x80, 0x00, 0x40, 0x88, 0x80, //#.. ## $ ### -0x81, 0x18, 0x00, 0x88, 0x48, 0x04, 0x00, 0x80, //#..# ##$# $ # -0x81, 0x10, 0x00, 0x80, 0x24, 0x04, 0x00, 0x80, //#.. # @$ $ # -0x81, 0x18, 0x00, 0x80, 0x40, 0x40, 0x00, 0x80, //#..# # $ $ # -0x80, 0x10, 0x00, 0x80, 0x40, 0x40, 0x88, 0x80, //# . # $ $ ### -0x80, 0x08, 0x00, 0x80, 0x00, 0x88, 0x80, 0x00, //# # # ### -0x80, 0x08, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, //# # ### -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //######### -//Level: 192 -0x08, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x01, 0x08, //#### . # -0x80, 0x52, 0x01, 0x08, //# *@ . # -0x80, 0x40, 0x80, 0x08, //# $ # # -0x80, 0x80, 0x04, 0x08, //# # $ # -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x80, 0x00, //##### -//Level: 193 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -0x00, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, 0x88, 0x88, 0x00, // ##### # #### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x08, 0x00, // # # $ # -0x08, 0x88, 0x80, 0x84, 0x40, 0x88, 0x08, 0x80, 0x08, 0x00, // #### #$$ ## ## # -0x88, 0x00, 0x00, 0x00, 0x80, 0x80, 0x08, 0x80, 0x88, 0x80, //## # # ## ### -0x80, 0x08, 0x88, 0x04, 0x84, 0x00, 0x40, 0x04, 0x00, 0x80, //# ### $#$ $ $ # -0x81, 0x11, 0x00, 0x00, 0x80, 0x88, 0x00, 0x80, 0x00, 0x80, //#... # ## # # -0x81, 0x11, 0x80, 0x00, 0x02, 0x08, 0x08, 0x88, 0x08, 0x80, //#...# @ # ### ## -0x81, 0x11, 0x80, 0x08, 0x88, 0x00, 0x40, 0x04, 0x00, 0x80, //#...# ### $ $ # -0x88, 0x88, 0x88, 0x88, 0x08, 0x80, 0x00, 0x80, 0x00, 0x80, //######## ## # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -//Level: 194 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x01, 0x88, //### .## -0x80, 0x40, 0x80, 0x88, //# $ # ## -0x80, 0x54, 0x00, 0x88, //# *$ ## -0x80, 0x18, 0x20, 0x88, //# .#@ ## -0x80, 0x00, 0x08, 0x88, //# ### -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 195 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, // # # -0x00, 0x88, 0x80, 0x88, 0x08, 0x00, 0x00, 0x00, // ### ## # -0x88, 0x80, 0x04, 0x00, 0x48, 0x88, 0x88, 0x88, //### $ $####### -0x80, 0x00, 0x40, 0x40, 0x08, 0x00, 0x11, 0x18, //# $ $ # ...# -0x80, 0x84, 0x08, 0x00, 0x48, 0x00, 0x11, 0x18, //# #$ # $# ...# -0x80, 0x80, 0x08, 0x40, 0x00, 0x00, 0x11, 0x18, //# # #$ ...# -0x80, 0x84, 0x08, 0x00, 0x08, 0x00, 0x11, 0x18, //# #$ # # ...# -0x80, 0x80, 0x48, 0x04, 0x48, 0x00, 0x11, 0x18, //# # $# $$# ...# -0x80, 0x82, 0x08, 0x40, 0x08, 0x88, 0x88, 0x88, //# #@ #$ ####### -0x80, 0x80, 0x40, 0x40, 0x88, 0x00, 0x00, 0x00, //# # $ $ ## -0x80, 0x80, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, //# # $ # -0x80, 0x88, 0x80, 0x88, 0x80, 0x00, 0x00, 0x00, //# ### ### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -//Level: 196 -0x0C, 0x0C,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -0x00, 0x88, 0x88, 0x88, 0x00, 0x08, // ###### # -0x88, 0x80, 0x00, 0x01, 0x04, 0x08, //### . $ # -0x80, 0x40, 0x08, 0x41, 0x84, 0x88, //# $ #$.#$## -0x80, 0x08, 0x00, 0x21, 0x80, 0x08, //# # @.# # -0x88, 0x08, 0x88, 0x81, 0x00, 0x08, //## ####. # -0x08, 0x04, 0x00, 0x85, 0x88, 0x88, // # $ #*#### -0x08, 0x08, 0x80, 0x81, 0x00, 0x80, // # ## #. # -0x08, 0x00, 0x00, 0x01, 0x80, 0x80, // # .# # -0x08, 0x88, 0x40, 0x00, 0x00, 0x80, // ###$ # -0x00, 0x08, 0x00, 0x88, 0x88, 0x80, // # ##### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 197 -0x0E, 0x0D,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -0x88, 0x88, 0x11, 0x11, 0x11, 0x00, 0x80, //####...... # -0x80, 0x00, 0x11, 0x11, 0x18, 0x00, 0x80, //# .....# # -0x80, 0x08, 0x11, 0x11, 0x11, 0x08, 0x80, //# #...... ## -0x88, 0x08, 0x88, 0x84, 0x88, 0x48, 0x00, //## ####$##$# -0x82, 0x40, 0x04, 0x04, 0x00, 0x08, 0x88, //#@$ $ $ ### -0x80, 0x44, 0x00, 0x00, 0x88, 0x00, 0x08, //# $$ ## # -0x80, 0x80, 0x04, 0x48, 0x80, 0x08, 0x08, //# # $$## # # -0x80, 0x00, 0x40, 0x08, 0x04, 0x40, 0x08, //# $ # $$ # -0x80, 0x04, 0x00, 0x40, 0x00, 0x84, 0x08, //# $ $ #$ # -0x88, 0x88, 0x00, 0x08, 0x04, 0x04, 0x08, //#### # $ $ # -0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, // # # # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, // ########### -//Level: 198 -0x0F, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x44, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, //# $$ ### -0x80, 0x04, 0x04, 0x44, 0x08, 0x88, 0x88, 0x00, //# $ $$$ ##### -0x88, 0x08, 0x80, 0x11, 0x10, 0x00, 0x08, 0x80, //## ## ... ## -0x08, 0x08, 0x28, 0x11, 0x18, 0x88, 0x40, 0x80, // # #@#...###$ # -0x08, 0x08, 0x04, 0x11, 0x10, 0x00, 0x00, 0x80, // # # $... # -0x88, 0x08, 0x04, 0x11, 0x14, 0x08, 0x08, 0x80, //## # $...$ # ## -0x80, 0x08, 0x88, 0x88, 0x08, 0x88, 0x08, 0x00, //# ##### ### # -0x80, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, 0x00, //# $ $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, 0x00, //########### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 199 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ########### -0x00, 0x00, 0x08, 0x00, 0x10, 0x08, 0x00, 0x08, 0x00, 0x00, // # . # # -0x00, 0x00, 0x08, 0x08, 0x10, 0x00, 0x02, 0x08, 0x00, 0x00, // # #. @ # -0x08, 0x88, 0x88, 0x08, 0x81, 0x18, 0x08, 0x88, 0x80, 0x00, // ##### ##..# #### -0x88, 0x00, 0x80, 0x11, 0x88, 0x80, 0x00, 0x00, 0x88, 0x80, //## # ..### ### -0x80, 0x40, 0x81, 0x11, 0x00, 0x04, 0x08, 0x00, 0x40, 0x80, //# $ #... $ # $ # -0x80, 0x00, 0x01, 0x10, 0x88, 0x00, 0x88, 0x08, 0x80, 0x80, //# .. ## ## ## # -0x88, 0x88, 0x48, 0x84, 0x80, 0x40, 0x80, 0x00, 0x80, 0x80, //####$##$# $ # # # -0x00, 0x88, 0x08, 0x00, 0x00, 0x84, 0x04, 0x40, 0x80, 0x80, // ## # #$ $$ # # -0x00, 0x80, 0x04, 0x08, 0x08, 0x00, 0x80, 0x48, 0x80, 0x80, // # $ # # # $## # -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // # ########### # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### #### -//Level: 200 -0x0F, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -0x08, 0x00, 0x80, 0x08, 0x88, 0x88, 0x00, 0x00, // # # ##### -0x88, 0x00, 0x80, 0x08, 0x11, 0x18, 0x88, 0x00, //## # #...### -0x80, 0x04, 0x80, 0x08, 0x11, 0x10, 0x08, 0x00, //# $# #... # -0x80, 0x40, 0x84, 0x40, 0x11, 0x10, 0x08, 0x00, //# $ #$$ ... # -0x80, 0x04, 0x80, 0x08, 0x11, 0x10, 0x18, 0x00, //# $# #... .# -0x80, 0x00, 0x80, 0x48, 0x88, 0x88, 0x88, 0x80, //# # $######## -0x88, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x80, //##$ $ $ # -0x88, 0x00, 0x80, 0x04, 0x40, 0x80, 0x00, 0x80, //## # $$ # # -0x08, 0x88, 0x88, 0x80, 0x08, 0x84, 0x42, 0x80, // ###### ##$$@# -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x80, // # ## -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -//Level: 201 -0x13, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //########### -0x81, 0x11, 0x11, 0x10, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, //#...... ######### -0x81, 0x11, 0x11, 0x10, 0x00, 0x80, 0x08, 0x80, 0x00, 0x80, //#...... # ## # -0x81, 0x18, 0x88, 0x04, 0x00, 0x00, 0x40, 0x00, 0x00, 0x80, //#..### $ $ # -0x81, 0x11, 0x04, 0x04, 0x08, 0x00, 0x08, 0x80, 0x00, 0x80, //#... $ $ # ## # -0x81, 0x11, 0x84, 0x88, 0x88, 0x80, 0x00, 0x08, 0x00, 0x80, //#...#$##### # # -0x88, 0x80, 0x00, 0x08, 0x00, 0x08, 0x40, 0x08, 0x40, 0x80, //### # #$ #$ # -0x00, 0x80, 0x04, 0x40, 0x40, 0x40, 0x04, 0x88, 0x00, 0x80, // # $$ $ $ $## # -0x00, 0x80, 0x04, 0x00, 0x08, 0x48, 0x40, 0x88, 0x40, 0x80, // # $ #$#$ ##$ # -0x00, 0x88, 0x80, 0x88, 0x08, 0x00, 0x00, 0x88, 0x00, 0x80, // ### ## # ## # -0x00, 0x08, 0x00, 0x40, 0x40, 0x88, 0x08, 0x88, 0x88, 0x80, // # $ $ ## ###### -0x00, 0x08, 0x00, 0x00, 0x40, 0x04, 0x00, 0x80, 0x00, 0x00, // # $ $ # -0x00, 0x08, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, 0x00, // ## # # # -0x00, 0x00, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, 0x00, 0x00, // #####@##### -0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 202 -0x10, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ######### -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x88, 0x88, // # # ####### -0x08, 0x00, 0x00, 0x40, 0x00, 0x80, 0x00, 0x08, // # $ # # -0x88, 0x18, 0x88, 0x80, 0x40, 0x42, 0x48, 0x08, //##.#### $ $@$# # -0x81, 0x11, 0x18, 0x88, 0x00, 0x88, 0x04, 0x08, //#....### ## $ # -0x81, 0x11, 0x18, 0x88, 0x84, 0x08, 0x00, 0x08, //#....####$ # # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x04, 0x08, //#.... $ # -0x88, 0x80, 0x88, 0x88, 0x48, 0x04, 0x04, 0x08, //### ####$# $ $ # -0x80, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, 0x88, //# ## ### -0x80, 0x44, 0x04, 0x08, 0x88, 0x88, 0x88, 0x00, //# $$ $ ####### -0x80, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //# ##### -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -//Level: 203 -0x0E, 0x0C,//Size x and y -0x08, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, // ##### ###### -0x08, 0x00, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### # -0x88, 0x04, 0x04, 0x08, 0x40, 0x84, 0x80, //## $ $ #$ #$# -0x80, 0x04, 0x02, 0x04, 0x00, 0x40, 0x88, //# $ @ $ $ ## -0x80, 0x80, 0x08, 0x80, 0x81, 0x11, 0x18, //# # ## #....# -0x80, 0x08, 0x80, 0x40, 0x81, 0x88, 0x18, //# ## $ #.##.# -0x88, 0x00, 0x40, 0x00, 0x01, 0x11, 0x18, //## $ ....# -0x08, 0x04, 0x40, 0x84, 0x81, 0x11, 0x18, // # $$ #$#....# -0x08, 0x00, 0x08, 0x00, 0x08, 0x40, 0x88, // # # #$ ## -0x08, 0x88, 0x88, 0x04, 0x00, 0x00, 0x80, // ##### $ # -0x00, 0x00, 0x08, 0x88, 0x80, 0x08, 0x80, // #### ## -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -//Level: 204 -0x0E, 0x0C,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, // ###### -0x08, 0x88, 0x88, 0x00, 0x00, 0x80, 0x00, // ##### # -0x08, 0x00, 0x80, 0x04, 0x04, 0x80, 0x00, // # # $ $# -0x08, 0x00, 0x40, 0x80, 0x40, 0x88, 0x80, // # $ # $ ### -0x88, 0x00, 0x80, 0x08, 0x00, 0x40, 0x88, //## # # $ ## -0x80, 0x48, 0x00, 0x20, 0x80, 0x00, 0x08, //# $# @ # # -0x80, 0x00, 0x04, 0x04, 0x80, 0x44, 0x08, //# $ $# $$ # -0x80, 0x04, 0x08, 0x41, 0x51, 0x08, 0x88, //# $ #$.*. ### -0x88, 0x00, 0x80, 0x41, 0x11, 0x88, 0x00, //## # $...## -0x08, 0x88, 0x80, 0x81, 0x11, 0x18, 0x00, // #### #....# -0x00, 0x00, 0x80, 0x01, 0x11, 0x18, 0x00, // # ....# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, // ######## -//Level: 205 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x41, 0x02, 0x80, //# $. @# -0x80, 0x01, 0x00, 0x80, //# . # -0x84, 0x45, 0x40, 0x80, //#$$*$ # -0x81, 0x15, 0x11, 0x80, //#..*..# -0x80, 0x45, 0x40, 0x80, //# $*$ # -0x80, 0x41, 0x40, 0x80, //# $.$ # -0x80, 0x01, 0x00, 0x80, //# . # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 206 -0x0B, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x80, 0x28, 0x00, 0x88, 0x88, 0x80, //# @# ##### -0x80, 0x44, 0x00, 0x40, 0x00, 0x80, //# $$ $ # -0x80, 0x08, 0x18, 0x84, 0x80, 0x80, //# #.##$# # -0x88, 0x48, 0x11, 0x10, 0x00, 0x80, //##$#... # -0x88, 0x01, 0x11, 0x88, 0x48, 0x80, //## ...##$## -0x80, 0x08, 0x81, 0x88, 0x00, 0x80, //# ##.## # -0x80, 0x04, 0x00, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x08, 0x00, 0x08, 0x00, 0x80, //# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 207 -0x13, 0x0D,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ################# -0x08, 0x11, 0x10, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x80, // #... # # ## -0x88, 0x11, 0x11, 0x10, 0x04, 0x88, 0x08, 0x08, 0x40, 0x80, //##..... $## # #$ # -0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, 0x00, 0x00, 0x80, //#......# $ # # -0x81, 0x11, 0x11, 0x18, 0x00, 0x80, 0x08, 0x08, 0x00, 0x80, //#......# # # # # -0x88, 0x88, 0x88, 0x88, 0x80, 0x40, 0x04, 0x04, 0x00, 0x80, //######### $ $ $ # -0x00, 0x80, 0x00, 0x00, 0x84, 0x88, 0x40, 0x88, 0x48, 0x80, // # #$##$ ##$## -0x08, 0x80, 0x00, 0x40, 0x00, 0x08, 0x04, 0x00, 0x00, 0x80, // ## $ # $ # -0x08, 0x00, 0x88, 0x08, 0x88, 0x08, 0x00, 0x88, 0x40, 0x80, // # ## ### # ##$ # -0x08, 0x04, 0x04, 0x40, 0x00, 0x00, 0x40, 0x04, 0x00, 0x80, // # $ $$ $ $ # -0x08, 0x04, 0x00, 0x00, 0x48, 0x84, 0x08, 0x88, 0x88, 0x80, // # $ $##$ ###### -0x08, 0x88, 0x88, 0x88, 0x00, 0x20, 0x88, 0x00, 0x00, 0x00, // ####### @ ## -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ###### -//Level: 208 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, // # ## -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x00, // # ## -0x00, 0x00, 0x00, 0x08, 0x04, 0x40, 0x88, 0x00, // # $$ ## -0x00, 0x00, 0x08, 0x88, 0x40, 0x04, 0x08, 0x80, // ###$ $ ## -0x00, 0x88, 0x88, 0x00, 0x00, 0x40, 0x00, 0x80, // #### $ # -0x88, 0x80, 0x08, 0x08, 0x88, 0x88, 0x00, 0x80, //### # ##### # -0x80, 0x00, 0x08, 0x08, 0x11, 0x11, 0x40, 0x80, //# # #....$ # -0x80, 0x80, 0x00, 0x40, 0x11, 0x11, 0x80, 0x80, //# # $ ....# # -0x80, 0x04, 0x08, 0x08, 0x15, 0x11, 0x80, 0x80, //# $ # #.*..# # -0x88, 0x80, 0x08, 0x88, 0x80, 0x88, 0x80, 0x80, //### #### ### # -0x00, 0x88, 0x88, 0x02, 0x40, 0x08, 0x84, 0x88, // #### @$ ##$## -0x00, 0x00, 0x08, 0x88, 0x04, 0x00, 0x00, 0x08, // ### $ # -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x08, // # ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -//Level: 209 -0x13, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x08, 0x88, 0x88, 0x80, // # # ###### -0x00, 0x88, 0x88, 0x80, 0x80, 0x04, 0x08, 0x11, 0x11, 0x80, // ##### # $ #....# -0x08, 0x80, 0x00, 0x88, 0x80, 0x08, 0x08, 0x11, 0x11, 0x80, // ## ### # #....# -0x08, 0x04, 0x04, 0x08, 0x84, 0x88, 0x08, 0x11, 0x11, 0x80, // # $ $ ##$## #....# -0x08, 0x00, 0x80, 0x08, 0x00, 0x08, 0x08, 0x11, 0x11, 0x80, // # # # # #....# -0x08, 0x40, 0x40, 0x04, 0x24, 0x08, 0x08, 0x80, 0x08, 0x80, // #$ $ $@$ # ## ## -0x08, 0x04, 0x80, 0x08, 0x80, 0x88, 0x00, 0x80, 0x08, 0x00, // # $# ## ## # # -0x88, 0x00, 0x04, 0x48, 0x00, 0x88, 0x80, 0x80, 0x08, 0x00, //## $$# ### # # -0x80, 0x04, 0x00, 0x08, 0x04, 0x40, 0x00, 0x00, 0x08, 0x00, //# $ # $$ # -0x80, 0x40, 0x04, 0x08, 0x00, 0x88, 0x88, 0x00, 0x88, 0x00, //# $ $ # #### ## -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, //# ###### #### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 210 -0x10, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // ######### -0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, // # # -0x00, 0x00, 0x00, 0x08, 0x04, 0x44, 0x44, 0x08, // # $$$$$ # -0x00, 0x00, 0x00, 0x08, 0x04, 0x04, 0x00, 0x08, // # $ $ # -0x00, 0x08, 0x88, 0x88, 0x00, 0x40, 0x40, 0x08, // ##### $ $ # -0x00, 0x08, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, // # #### #### -0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x88, 0x08, 0x88, 0x80, 0x08, 0x00, // ### #### # -0x00, 0x00, 0x81, 0x11, 0x18, 0x80, 0x88, 0x00, // #....## ## -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, 0x00, // #....# # -0x88, 0x88, 0x81, 0x88, 0x80, 0x00, 0x80, 0x00, //#####.### # -0x80, 0x08, 0x80, 0x80, 0x80, 0x88, 0x80, 0x00, //# ## # # ### -0x80, 0x48, 0x84, 0x88, 0x80, 0x08, 0x80, 0x00, //# $##$### ## -0x80, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, //# $ # -0x80, 0x48, 0x00, 0x08, 0x80, 0x08, 0x00, 0x00, //# $# ## # -0x88, 0x28, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //##@######### -0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ### -//Level: 211 -0x0D, 0x09,//Size x and y -0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x80, //##### ####### -0x80, 0x00, 0x88, 0x80, 0x08, 0x00, 0x80, //# ### # # -0x80, 0x40, 0x00, 0x00, 0x40, 0x20, 0x80, //# $ $ @ # -0x88, 0x08, 0x48, 0x81, 0x88, 0x00, 0x80, //## #$##.## # -0x08, 0x00, 0x11, 0x15, 0x10, 0x40, 0x80, // # ...*. $ # -0x08, 0x04, 0x80, 0x81, 0x80, 0x80, 0x80, // # $# #.# # # -0x08, 0x80, 0x00, 0x04, 0x00, 0x00, 0x80, // ## $ # -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x80, // # ######## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 212 -0x07, 0x09,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x01, 0x00, 0x80, //# . # -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x45, 0x10, 0x80, //# $*. # -0x85, 0x01, 0x45, 0x80, //#* .$*# -0x80, 0x55, 0x40, 0x80, //# **$ # -0x80, 0x01, 0x40, 0x80, //# .$ # -0x80, 0x41, 0x02, 0x80, //# $. @# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 213 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x00, //# @# -0x80, 0x48, 0x08, 0x88, //# $# ### -0x80, 0x50, 0x40, 0x08, //# * $ # -0x80, 0x00, 0x88, 0x08, //# ## # -0x88, 0x10, 0x01, 0x08, //##. . # -0x08, 0x80, 0x00, 0x88, // ## ## -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 214 -0x10, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -0x08, 0x88, 0x80, 0x00, 0x88, 0x08, 0x88, 0x88, // #### ## ##### -0x08, 0x00, 0x40, 0x00, 0x08, 0x88, 0x00, 0x08, // # $ ### # -0x08, 0x04, 0x24, 0x04, 0x00, 0x00, 0x40, 0x08, // # $@$ $ $ # -0x08, 0x08, 0x48, 0x88, 0x88, 0x88, 0x80, 0x88, // # #$######## ## -0x08, 0x08, 0x00, 0x40, 0x08, 0x00, 0x00, 0x08, // # # $ # # -0x08, 0x08, 0x04, 0x04, 0x08, 0x08, 0x00, 0x08, // # # $ $ # # # -0x88, 0x08, 0x00, 0x48, 0x08, 0x08, 0x88, 0x88, //## # $# # ##### -0x80, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x08, //# ## # # -0x80, 0x00, 0x04, 0x08, 0x08, 0x88, 0x00, 0x08, //# $ # ### # -0x88, 0x88, 0x80, 0x88, 0x00, 0x81, 0x11, 0x18, //##### ## #....# -0x80, 0x00, 0x04, 0x00, 0x00, 0x01, 0x11, 0x18, //# $ ....# -0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x11, 0x18, //# #....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 215 -0x10, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //######## -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# # # -0x80, 0x40, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, //# $ #### -0x88, 0x08, 0x84, 0x08, 0x20, 0x88, 0x88, 0x88, //## ##$ #@ ###### -0x08, 0x00, 0x40, 0x48, 0x84, 0x00, 0x80, 0x08, // # $ $##$ # # -0x08, 0x08, 0x00, 0x40, 0x80, 0x40, 0x11, 0x18, // # # $ # $ ...# -0x08, 0x04, 0x08, 0x40, 0x00, 0x08, 0x11, 0x18, // # $ #$ #...# -0x08, 0x00, 0x00, 0x08, 0x80, 0x48, 0x11, 0x18, // # ## $#...# -0x08, 0x88, 0x04, 0x08, 0x00, 0x40, 0x11, 0x18, // ### $ # $ ...# -0x00, 0x08, 0x88, 0x08, 0x00, 0x48, 0x11, 0x18, // ### # $#...# -0x00, 0x00, 0x80, 0x04, 0x40, 0x08, 0x88, 0x88, // # $$ ##### -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x00, 0x00, // # ## -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -//Level: 216 -0x0E, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x80, 0x00, 0x00, 0x00, 0x88, 0x80, 0x08, //# ### # -0x80, 0x44, 0x04, 0x00, 0x00, 0x44, 0x08, //# $$ $ $$ # -0x80, 0x00, 0x00, 0x40, 0x88, 0x80, 0x08, //# $ ### # -0x88, 0x48, 0x88, 0x88, 0x00, 0x80, 0x88, //##$##### # ## -0x88, 0x08, 0x01, 0x11, 0x11, 0x80, 0x08, //## # .....# # -0x88, 0x08, 0x01, 0x11, 0x81, 0x80, 0x08, //## # ...#.# # -0x80, 0x00, 0x81, 0x11, 0x11, 0x84, 0x08, //# #.....#$ # -0x80, 0x00, 0x81, 0x51, 0x11, 0x42, 0x88, //# #.*...$@## -0x80, 0x40, 0x80, 0x08, 0x88, 0x08, 0x88, //# $ # ### ### -0x80, 0x40, 0x88, 0x80, 0x40, 0x40, 0x08, //# $ ### $ $ # -0x80, 0x44, 0x40, 0x00, 0x00, 0x44, 0x08, //# $$$ $$ # -0x80, 0x00, 0x88, 0x80, 0x00, 0x00, 0x08, //# ### # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 217 -0x0E, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, // #### -0x00, 0x88, 0x88, 0x88, 0x80, 0x08, 0x80, // ####### ## -0x00, 0x80, 0x00, 0x08, 0x80, 0x00, 0x80, // # ## # -0x00, 0x80, 0x80, 0x00, 0x41, 0x80, 0x88, // # # $.# ## -0x00, 0x80, 0x00, 0x40, 0x81, 0x02, 0x08, // # $ #. @ # -0x00, 0x88, 0x00, 0x88, 0x11, 0x10, 0x08, // ## ##... # -0x00, 0x08, 0x84, 0x04, 0x11, 0x10, 0x88, // ##$ $... ## -0x00, 0x88, 0x00, 0x88, 0x15, 0x18, 0x80, // ## ##.*.## -0x88, 0x80, 0x40, 0x00, 0x08, 0x88, 0x00, //### $ ### -0x80, 0x44, 0x08, 0x48, 0x48, 0x80, 0x00, //# $$ #$#$## -0x80, 0x80, 0x00, 0x00, 0x40, 0x80, 0x00, //# # $ # -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, 0x00, //# ## # -0x88, 0x80, 0x08, 0x88, 0x88, 0x80, 0x00, //### ###### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 218 -0x0E, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x08, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, // #### #### -0x08, 0x00, 0x80, 0x00, 0x40, 0x88, 0x88, // # # $ #### -0x08, 0x11, 0x10, 0x48, 0x40, 0x80, 0x08, // #... $#$ # # -0x88, 0x18, 0x10, 0x08, 0x00, 0x04, 0x08, //##.#. # $ # -0x81, 0x11, 0x11, 0x08, 0x88, 0x40, 0x08, //#..... ###$ # -0x81, 0x11, 0x18, 0x48, 0x00, 0x40, 0x88, //#....#$# $ ## -0x88, 0x84, 0x88, 0x04, 0x40, 0x00, 0x80, //###$## $$ # -0x08, 0x00, 0x08, 0x00, 0x00, 0x40, 0x80, // # # $ # -0x08, 0x04, 0x00, 0x24, 0x00, 0x88, 0x80, // # $ @$ ### -0x08, 0x88, 0x84, 0x80, 0x88, 0x80, 0x00, // ####$# ### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 219 -0x0E, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //## # # ## -0x80, 0x20, 0x48, 0x04, 0x04, 0x04, 0x08, //# @ $# $ $ $ # -0x80, 0x04, 0x00, 0x00, 0x80, 0x40, 0x08, //# $ # $ # -0x80, 0x44, 0x08, 0x11, 0x80, 0x04, 0x08, //# $$ #..# $ # -0x88, 0x80, 0x81, 0x11, 0x18, 0x80, 0x88, //### #....## ## -0x80, 0x00, 0x11, 0x88, 0x11, 0x04, 0x08, //# ..##.. $ # -0x80, 0x40, 0x11, 0x88, 0x11, 0x00, 0x08, //# $ ..##.. # -0x88, 0x08, 0x81, 0x11, 0x18, 0x08, 0x88, //## ##....# ### -0x80, 0x40, 0x08, 0x11, 0x80, 0x40, 0x08, //# $ #..# $ # -0x80, 0x04, 0x08, 0x00, 0x04, 0x04, 0x08, //# $ # $ $ # -0x80, 0x40, 0x40, 0x40, 0x80, 0x40, 0x08, //# $ $ $ # $ # -0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x88, //## # # ## -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############ -//Level: 220 -0x10, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ########## -0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, // # # # -0x00, 0x80, 0x48, 0x00, 0x04, 0x08, 0x00, 0x00, // # $# $ # -0x00, 0x80, 0x40, 0x48, 0x48, 0x08, 0x00, 0x00, // # $ $#$# # -0x08, 0x88, 0x18, 0x11, 0x10, 0x08, 0x88, 0x88, // ###.#... ##### -0x88, 0x00, 0x11, 0x11, 0x84, 0x08, 0x00, 0x08, //## ....#$ # # -0x80, 0x48, 0x18, 0x85, 0x80, 0x04, 0x44, 0x08, //# $#.##*# $$$ # -0x80, 0x00, 0x11, 0x11, 0x12, 0x80, 0x40, 0x08, //# .....@# $ # -0x80, 0x08, 0x18, 0x11, 0x10, 0x04, 0x04, 0x08, //# #.#... $ $ # -0x80, 0x44, 0x00, 0x48, 0x48, 0x00, 0x40, 0x08, //# $$ $#$# $ # -0x80, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x88, //# # # # ## -0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, //###### ##### -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, // ###### -//Level: 221 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, //######## -0x80, 0x08, 0x11, 0x08, 0x80, //# #.. ## -0x80, 0x41, 0x24, 0x50, 0x80, //# $.@$* # -0x80, 0x04, 0x04, 0x00, 0x80, //# $ $ # -0x80, 0x54, 0x01, 0x40, 0x80, //# *$ .$ # -0x88, 0x01, 0x18, 0x00, 0x80, //## ..# # -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -//Level: 222 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x08, 0x00, 0x08, 0x00, // # # -0x00, 0x08, 0x10, 0x48, 0x00, // #. $# -0x00, 0x08, 0x04, 0x08, 0x00, // # $ # -0x88, 0x88, 0x11, 0x08, 0x80, //####.. ## -0x80, 0x40, 0x55, 0x00, 0x80, //# $ ** # -0x80, 0x10, 0x02, 0x40, 0x80, //# . @$ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 223 -0x0E, 0x0F,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //##### -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, //# ## -0x80, 0x00, 0x08, 0x00, 0x88, 0x88, 0x00, //# # #### -0x80, 0x40, 0x08, 0x88, 0x80, 0x08, 0x00, //# $ #### # -0x80, 0x04, 0x40, 0x40, 0x00, 0x48, 0x00, //# $$ $ $# -0x88, 0x82, 0x08, 0x40, 0x00, 0x08, 0x80, //###@ #$ ## -0x08, 0x00, 0x88, 0x00, 0x40, 0x40, 0x88, // # ## $ $ ## -0x08, 0x04, 0x00, 0x88, 0x08, 0x80, 0x18, // # $ ## ## .# -0x08, 0x00, 0x84, 0x88, 0x40, 0x08, 0x18, // # #$##$ #.# -0x08, 0x88, 0x00, 0x04, 0x11, 0x88, 0x18, // ### $..##.# -0x00, 0x80, 0x00, 0x08, 0x15, 0x11, 0x18, // # #.*...# -0x00, 0x80, 0x44, 0x08, 0x11, 0x11, 0x18, // # $$ #.....# -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x88, // # ######### -0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 224 -0x13, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ###### -0x00, 0x80, 0x00, 0x28, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // # @#### -0x88, 0x88, 0x80, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //##### $ # -0x80, 0x00, 0x88, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, //# ## #### -0x80, 0x40, 0x80, 0x08, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, //# $ # ## # -0x80, 0x40, 0x80, 0x08, 0x88, 0x88, 0x08, 0x00, 0x00, 0x00, //# $ # ##### # -0x88, 0x04, 0x00, 0x40, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, //## $ $ # # -0x88, 0x04, 0x04, 0x08, 0x88, 0x08, 0x08, 0x00, 0x00, 0x00, //## $ $ ### # # -0x88, 0x08, 0x00, 0x40, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, //## # $ # # # -0x88, 0x08, 0x08, 0x48, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, //## # #$# # # -0x88, 0x08, 0x88, 0x00, 0x08, 0x08, 0x08, 0x88, 0x88, 0x80, //## ### # # ###### -0x80, 0x04, 0x00, 0x88, 0x88, 0x08, 0x08, 0x11, 0x11, 0x80, //# $ #### # #....# -0x80, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x11, 0x81, 0x80, //# $ $ ..#.# -0x88, 0x88, 0x40, 0x04, 0x80, 0x40, 0x00, 0x11, 0x11, 0x80, //####$ $# $ ....# -0x80, 0x00, 0x00, 0x00, 0x80, 0x08, 0x80, 0x11, 0x11, 0x80, //# # ## ....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 225 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x20, 0x80, 0x08, //# # #@ # # -0x80, 0x44, 0x00, 0x84, 0x48, 0x08, 0x08, 0x00, 0x88, 0x08, //# $$ #$$# # # ## # -0x80, 0x08, 0x04, 0x04, 0x08, 0x44, 0x08, 0x00, 0x00, 0x08, //# # $ $ #$$ # # -0x88, 0x08, 0x00, 0x80, 0x08, 0x08, 0x08, 0x00, 0x80, 0x08, //## # # # # # # # -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, //# ## # # -0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x80, 0x00, 0x80, 0x08, //# # $ # # # # -0x80, 0x40, 0x84, 0x08, 0x00, 0x08, 0x00, 0x40, 0x81, 0x18, //# $ #$ # # $ #..# -0x88, 0x40, 0x80, 0x08, 0x88, 0x80, 0x00, 0x08, 0x11, 0x18, //##$ # #### #...# -0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x11, 0x18, //# $ #....# -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0x11, 0x11, 0x18, //# # # #.....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 226 -0x11, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //############# -0x81, 0x11, 0x11, 0x11, 0x18, 0x88, 0x80, 0x00, 0x00, //#........#### -0x81, 0x11, 0x88, 0x88, 0x08, 0x00, 0x88, 0x88, 0x80, //#...#### # ##### -0x81, 0x11, 0x80, 0x08, 0x88, 0x00, 0x00, 0x40, 0x80, //#...# ### $ # -0x81, 0x11, 0x44, 0x00, 0x00, 0x04, 0x04, 0x00, 0x80, //#...$$ $ $ # -0x80, 0x01, 0x80, 0x04, 0x04, 0x80, 0x40, 0x08, 0x80, //# .# $ $# $ ## -0x81, 0x11, 0x80, 0x84, 0x80, 0x00, 0x40, 0x08, 0x00, //#...# #$# $ # -0x81, 0x80, 0x80, 0x40, 0x00, 0x40, 0x00, 0x08, 0x00, //#.# # $ $ # -0x81, 0x00, 0x84, 0x88, 0x84, 0x88, 0x88, 0x48, 0x00, //#. #$###$####$# -0x88, 0x00, 0x80, 0x00, 0x40, 0x40, 0x00, 0x08, 0x00, //## # $ $ # -0x08, 0x00, 0x80, 0x04, 0x24, 0x00, 0x80, 0x08, 0x00, // # # $@$ # # -0x08, 0x00, 0x80, 0x88, 0x88, 0x04, 0x00, 0x48, 0x00, // # # #### $ $# -0x08, 0x00, 0x80, 0x00, 0x08, 0x88, 0x00, 0x08, 0x00, // # # ### # -0x08, 0x00, 0x80, 0x44, 0x08, 0x08, 0x88, 0x88, 0x00, // # # $$ # ##### -0x08, 0x00, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, // # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######### -//Level: 227 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, //# #......# -0x80, 0x44, 0x08, 0x04, 0x18, 0x11, 0x11, 0x80, //# $$ # $.#....# -0x80, 0x00, 0x80, 0x48, 0x20, 0x81, 0x11, 0x80, //# # $#@ #...# -0x80, 0x48, 0x04, 0x08, 0x04, 0x08, 0x11, 0x80, //# $# $ # $ #..# -0x80, 0x00, 0x40, 0x08, 0x44, 0x00, 0x11, 0x80, //# $ #$$ ..# -0x80, 0x40, 0x84, 0x08, 0x00, 0x81, 0x41, 0x80, //# $ #$ # #.$.# -0x80, 0x08, 0x00, 0x40, 0x40, 0x08, 0x11, 0x80, //# # $ $ #..# -0x80, 0x80, 0x40, 0x08, 0x00, 0x00, 0x80, 0x80, //# # $ # # # -0x80, 0x00, 0x08, 0x08, 0x48, 0x00, 0x44, 0x80, //# # #$# $$# -0x80, 0x00, 0x80, 0x48, 0x00, 0x80, 0x00, 0x80, //# # $# # # -0x80, 0x08, 0x00, 0x04, 0x40, 0x08, 0x00, 0x80, //# # $$ # # -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 228 -0x0B, 0x0A,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x08, 0x88, 0x00, 0x08, 0x88, 0x00, // ### ### -0x88, 0x02, 0x04, 0x04, 0x08, 0x00, //## @ $ $ # -0x80, 0x08, 0x80, 0x88, 0x08, 0x80, //# ## ## ## -0x80, 0x41, 0x81, 0x40, 0x00, 0x80, //# $.#.$ # -0x80, 0x81, 0x85, 0x80, 0x00, 0x80, //# #.#*# # -0x80, 0x41, 0x11, 0x00, 0x88, 0x80, //# $... ### -0x88, 0x84, 0x80, 0x88, 0x80, 0x00, //###$# ### -0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x88, 0x88, 0x80, 0x00, 0x00, // ##### -//Level: 229 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x80, 0x08, 0x88, 0x88, 0x00, //# #### ##### -0x80, 0x40, 0x00, 0x88, 0x88, 0x00, 0x08, 0x00, //# $ #### # -0x80, 0x40, 0x00, 0x08, 0x80, 0x00, 0x08, 0x00, //# $ ## # -0x80, 0x88, 0x84, 0x04, 0x00, 0x40, 0x08, 0x80, //# ###$ $ $ ## -0x80, 0x80, 0x40, 0x04, 0x08, 0x80, 0x00, 0x80, //# # $ $ ## # -0x80, 0x04, 0x08, 0x44, 0x80, 0x00, 0x80, 0x80, //# $ #$$# # # -0x88, 0x00, 0x08, 0x00, 0x84, 0x00, 0x00, 0x80, //## # #$ # -0x08, 0x80, 0x08, 0x80, 0x04, 0x08, 0x08, 0x80, // ## ## $ # ## -0x88, 0x88, 0x18, 0x88, 0x00, 0x48, 0x08, 0x00, //####.### $# # -0x80, 0x08, 0x18, 0x11, 0x08, 0x00, 0x08, 0x00, //# #.#.. # # -0x80, 0x08, 0x11, 0x11, 0x02, 0x08, 0x88, 0x00, //# #.... @ ### -0x80, 0x40, 0x11, 0x11, 0x80, 0x88, 0x00, 0x00, //# $ ....# ## -0x80, 0x00, 0x88, 0x11, 0x00, 0x80, 0x00, 0x00, //# ##.. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //########### -//Level: 230 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x88, 0x88, 0x00, 0x28, 0x80, //#### @## -0x80, 0x40, 0x40, 0x00, 0x80, //# $ $ # -0x80, 0x81, 0x51, 0x80, 0x80, //# #.*.# # -0x80, 0x81, 0x51, 0x80, 0x80, //# #.*.# # -0x80, 0x00, 0x40, 0x40, 0x80, //# $ $ # -0x88, 0x00, 0x08, 0x88, 0x80, //## #### -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -//Level: 231 -0x0A, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -0x88, 0x80, 0x00, 0x18, 0x00, //### .# -0x80, 0x04, 0x18, 0x88, 0x88, //# $.##### -0x80, 0x44, 0x18, 0x20, 0x08, //# $$.#@ # -0x80, 0x00, 0x88, 0x44, 0x08, //# ##$$ # -0x80, 0x01, 0x41, 0x00, 0x08, //# .$. # -0x88, 0x84, 0x08, 0x88, 0x18, //###$ ###.# -0x00, 0x81, 0x08, 0x08, 0x88, // #. # ### -0x00, 0x88, 0x88, 0x00, 0x00, // #### -//Level: 232 -0x08, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x21, 0x00, 0x80, //##@. # -0x80, 0x44, 0x50, 0x80, //# $$* # -0x80, 0x08, 0x00, 0x88, //# # ## -0x80, 0x08, 0x00, 0x18, //# # .# -0x88, 0x88, 0x08, 0x08, //#### # # -0x00, 0x08, 0x00, 0x08, // # # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 233 -0x13, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x08, 0x88, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // #### # # -0x00, 0x08, 0x88, 0x02, 0x88, 0x84, 0x08, 0x00, 0x00, 0x00, // ### @###$ # -0x00, 0x88, 0x00, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x00, // ## $ # -0x08, 0x80, 0x04, 0x04, 0x48, 0x80, 0x88, 0x00, 0x00, 0x00, // ## $ $$## ## -0x08, 0x00, 0x84, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, // # #$## # -0x08, 0x08, 0x04, 0x04, 0x40, 0x80, 0x88, 0x80, 0x00, 0x00, // # # $ $$ # ### -0x08, 0x00, 0x04, 0x08, 0x00, 0x80, 0x40, 0x88, 0x88, 0x80, // # $ # # $ ##### -0x88, 0x88, 0x00, 0x00, 0x80, 0x04, 0x40, 0x80, 0x00, 0x80, //#### # $$ # # -0x88, 0x88, 0x08, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, //#### ## $ # -0x81, 0x00, 0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x88, 0x80, //#. ### ######## -0x81, 0x10, 0x11, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //#.. ..# #### -0x81, 0x11, 0x81, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#...#.# -0x81, 0x11, 0x11, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#.....# -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //####### -//Level: 234 -0x12, 0x0B,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x88, 0x00, 0x00, // ######### ## -0x88, 0x00, 0x40, 0x00, 0x00, 0x04, 0x08, 0x88, 0x88, //## $ $ ##### -0x80, 0x00, 0x88, 0x08, 0x80, 0x00, 0x88, 0x11, 0x18, //# ## ## ##...# -0x80, 0x84, 0x40, 0x40, 0x44, 0x84, 0x88, 0x11, 0x18, //# #$$ $ $$#$##...# -0x80, 0x80, 0x00, 0x20, 0x00, 0x80, 0x00, 0x11, 0x18, //# # @ # ...# -0x80, 0x04, 0x80, 0x88, 0x84, 0x40, 0x00, 0x11, 0x18, //# $# ###$$ ...# -0x80, 0x40, 0x04, 0x40, 0x04, 0x08, 0x81, 0x11, 0x18, //# $ $$ $ ##....# -0x88, 0x84, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, //###$ ####### -0x00, 0x80, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // # ####### -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 235 -0x10, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, 0x08, //#....# # -0x81, 0x11, 0x18, 0x08, 0x08, 0x80, 0x08, 0x08, //#....# # ## # # -0x81, 0x11, 0x10, 0x04, 0x08, 0x00, 0x80, 0x08, //#.... $ # # # -0x88, 0x00, 0x80, 0x04, 0x00, 0x08, 0x00, 0x08, //## # $ # # -0x80, 0x00, 0x08, 0x44, 0x44, 0x80, 0x08, 0x08, //# #$$$$# # # -0x80, 0x88, 0x04, 0x00, 0x00, 0x40, 0x88, 0x08, //# ## $ $ ## # -0x80, 0x00, 0x04, 0x08, 0x80, 0x44, 0x40, 0x08, //# $ ## $$$ # -0x80, 0x84, 0x44, 0x08, 0x80, 0x40, 0x08, 0x08, //# #$$$ ## $ # # -0x80, 0x80, 0x04, 0x00, 0x00, 0x40, 0x00, 0x08, //# # $ $ # -0x80, 0x00, 0x88, 0x44, 0x44, 0x80, 0x08, 0x88, //# ##$$$$# ### -0x80, 0x08, 0x00, 0x00, 0x40, 0x08, 0x11, 0x18, //# # $ #...# -0x80, 0x00, 0x00, 0x80, 0x48, 0x00, 0x11, 0x18, //# # $# ...# -0x80, 0x88, 0x08, 0x08, 0x08, 0x00, 0x11, 0x18, //# ## # # # ...# -0x82, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x18, //#@ #...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################ -//Level: 236 -0x14, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, // ################## -0x00, 0x80, 0x00, 0x00, 0x00, 0x88, 0x11, 0x18, 0x00, 0x08, // # ##...# # -0x00, 0x80, 0x84, 0x84, 0x80, 0x88, 0x81, 0x11, 0x04, 0x08, // # #$#$# ###... $ # -0x00, 0x80, 0x02, 0x40, 0x04, 0x00, 0x01, 0x18, 0x04, 0x08, // # @$ $ ..# $ # -0x88, 0x88, 0x84, 0x84, 0x80, 0x80, 0x01, 0x10, 0x08, 0x88, //#####$#$# # .. ### -0x80, 0x00, 0x40, 0x40, 0x80, 0x88, 0x88, 0x88, 0x08, 0x80, //# $ $ # ###### ## -0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# # # # # # -0x80, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x80, //# ####### # -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x88, 0x80, //######### ##### -//Level: 237 -0x0E, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //######### -0x80, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, //# ## -0x80, 0x84, 0x84, 0x82, 0x08, 0x88, 0x88, //# #$#$#@ ##### -0x80, 0x40, 0x00, 0x04, 0x08, 0x00, 0x08, //# $ $ # # -0x88, 0x08, 0x88, 0x80, 0x88, 0x08, 0x08, //## #### ## # # -0x80, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # # -0x80, 0x48, 0x00, 0x40, 0x08, 0x88, 0x88, //# $# $ ##### -0x81, 0x14, 0x00, 0x88, 0x08, 0x00, 0x08, //#..$ ## # # -0x81, 0x18, 0x00, 0x80, 0x00, 0x44, 0x08, //#..# # $$ # -0x81, 0x18, 0x88, 0x80, 0x04, 0x00, 0x08, //#..#### $ # -0x85, 0x11, 0x18, 0x04, 0x04, 0x04, 0x08, //#*...# $ $ $ # -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, //#....# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 238 -0x0F, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, //####### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //# # -0x80, 0x40, 0x44, 0x80, 0x00, 0x00, 0x00, 0x00, //# $ $$# -0x82, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, //#@ $ # -0x80, 0x40, 0x40, 0x88, 0x88, 0x80, 0x00, 0x00, //# $ $ ##### -0x80, 0x40, 0x05, 0x11, 0x11, 0x80, 0x00, 0x00, //# $ *....# -0x88, 0x88, 0x81, 0x88, 0x81, 0x80, 0x00, 0x00, //#####.###.# -0x00, 0x08, 0x81, 0x80, 0x81, 0x80, 0x00, 0x00, // ##.# #.# -0x00, 0x08, 0x01, 0x88, 0x81, 0x88, 0x88, 0x80, // # .###.##### -0x00, 0x08, 0x01, 0x11, 0x15, 0x00, 0x40, 0x80, // # ....* $ # -0x00, 0x08, 0x00, 0x08, 0x80, 0x40, 0x40, 0x80, // # ## $ $ # -0x00, 0x08, 0x88, 0x88, 0x80, 0x04, 0x00, 0x80, // ###### $ # -0x00, 0x00, 0x00, 0x00, 0x84, 0x40, 0x40, 0x80, // #$$ $ # -0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 239 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x88, 0x88, 0x10, 0x02, 0x80, //####. @# -0x80, 0x04, 0x44, 0x00, 0x80, //# $$$ # -0x81, 0x88, 0x18, 0x81, 0x80, //#.##.##.# -0x80, 0x00, 0x40, 0x00, 0x80, //# $ # -0x80, 0x04, 0x18, 0x08, 0x80, //# $.# ## -0x88, 0x80, 0x00, 0x08, 0x00, //### # -0x00, 0x88, 0x88, 0x88, 0x00, // ###### -//Level: 240 -0x0A, 0x08,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x08, 0x00, 0x82, 0x00, 0x88, // # #@ ## -0x88, 0x04, 0x88, 0x80, 0x08, //## $### # -0x80, 0x00, 0x50, 0x50, 0x08, //# * * # -0x80, 0x05, 0x05, 0x05, 0x08, //# * * * # -0x80, 0x10, 0x50, 0x50, 0x08, //# . * * # -0x88, 0x88, 0x00, 0x08, 0x88, //#### ### -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -//Level: 241 -0x06, 0x07,//Size x and y -0x88, 0x88, 0x00, //#### -0x82, 0x08, 0x88, //#@ ### -0x80, 0x44, 0x18, //# $$.# -0x80, 0x04, 0x18, //# $.# -0x80, 0x40, 0x18, //# $ .# -0x80, 0x80, 0x18, //# # .# -0x88, 0x88, 0x88, //###### -//Level: 242 -0x0C, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -0x88, 0x00, 0x00, 0x08, 0x80, 0x08, //## ## # -0x88, 0x00, 0x04, 0x00, 0x04, 0x08, //## $ $ # -0x88, 0x88, 0x08, 0x80, 0x44, 0x08, //#### ## $$ # -0x80, 0x00, 0x40, 0x80, 0x00, 0x08, //# $ # # -0x80, 0x44, 0x40, 0x80, 0x88, 0x88, //# $$$ # #### -0x80, 0x00, 0x80, 0x80, 0x40, 0x88, //# # # $ ## -0x80, 0x08, 0x00, 0x80, 0x04, 0x08, //# # # $ # -0x80, 0x48, 0x04, 0x80, 0x00, 0x08, //# $# $# # -0x80, 0x00, 0x11, 0x80, 0x88, 0x88, //# ..# #### -0x88, 0x88, 0x11, 0x04, 0x08, 0x28, //####.. $ #@# -0x81, 0x11, 0x11, 0x80, 0x48, 0x08, //#.....# $# # -0x88, 0x11, 0x11, 0x80, 0x04, 0x08, //##....# $ # -0x88, 0x81, 0x18, 0x80, 0x00, 0x08, //###..## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############ -//Level: 243 -0x12, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, // #### ###### -0x00, 0x80, 0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x28, // # ## $ $ @# -0x00, 0x80, 0x88, 0x08, 0x84, 0x84, 0x04, 0x04, 0x88, // # ## ##$#$ $ $## -0x88, 0x80, 0x11, 0x11, 0x11, 0x80, 0x04, 0x40, 0x88, //### ......# $$ ## -0x80, 0x00, 0x11, 0x11, 0x11, 0x80, 0x08, 0x00, 0x08, //# ......# # # -0x80, 0x80, 0x11, 0x11, 0x11, 0x84, 0x00, 0x40, 0x08, //# # ......#$ $ # -0x80, 0x84, 0x11, 0x11, 0x11, 0x04, 0x48, 0x04, 0x08, //# #$...... $$# $ # -0x80, 0x00, 0x88, 0x80, 0x88, 0x84, 0x00, 0x40, 0x88, //# ### ###$ $ ## -0x88, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x80, //### $ $ $ $ # -0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x80, // # $ $ $ $ # -0x00, 0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### ###### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 244 -0x0E, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, //########## -0x80, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, //# #### -0x80, 0x88, 0x88, 0x88, 0x08, 0x00, 0x88, //# ###### # ## -0x80, 0x80, 0x40, 0x40, 0x40, 0x04, 0x08, //# # $ $ $ $ # -0x80, 0x00, 0x00, 0x00, 0x84, 0x00, 0x08, //# #$ # -0x88, 0x84, 0x00, 0x44, 0x80, 0x08, 0x88, //###$ $$# ### -0x00, 0x80, 0x08, 0x80, 0x80, 0x48, 0x80, // # ## # $## -0x00, 0x88, 0x48, 0x00, 0x04, 0x02, 0x80, // ##$# $ @# -0x00, 0x08, 0x00, 0x40, 0x40, 0x88, 0x80, // # $ $ ### -0x00, 0x08, 0x08, 0x00, 0x04, 0x00, 0x80, // # # $ # -0x00, 0x08, 0x08, 0x80, 0x00, 0x80, 0x80, // # ## # # -0x00, 0x88, 0x00, 0x88, 0x88, 0x80, 0x80, // ## ##### # -0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x00, 0x81, 0x11, 0x11, 0x11, 0x88, 0x80, // #.......### -0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, // #.......# -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -//Level: 245 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x12, 0x88, //## .@## -0x88, 0x00, 0x04, 0x18, //## $.# -0x88, 0x88, 0x58, 0x08, //####*# # -0x88, 0x00, 0x00, 0x08, //## # -0x80, 0x04, 0x00, 0x88, //# $ ## -0x80, 0x00, 0x88, 0x88, //# #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 246 -0x0F, 0x10,//Size x and y -0x08, 0x88, 0x80, 0x88, 0x88, 0x80, 0x00, 0x00, // #### ##### -0x08, 0x00, 0x88, 0x80, 0x00, 0x88, 0x00, 0x00, // # ### ## -0x08, 0x04, 0x00, 0x80, 0x80, 0x08, 0x80, 0x00, // # $ # # ## -0x08, 0x04, 0x80, 0x80, 0x88, 0x00, 0x88, 0x00, // # $# # ## ## -0x08, 0x00, 0x04, 0x00, 0x80, 0x40, 0x08, 0x80, // # $ # $ ## -0x08, 0x04, 0x00, 0x40, 0x84, 0x04, 0x00, 0x80, // # $ $ #$ $ # -0x88, 0x80, 0x80, 0x88, 0x80, 0x80, 0x40, 0x80, //### # ### # $ # -0x80, 0x00, 0x00, 0x81, 0x11, 0x18, 0x00, 0x80, //# #....# # -0x80, 0x80, 0x44, 0x01, 0x11, 0x18, 0x80, 0x80, //# # $$ ....## # -0x80, 0x80, 0x00, 0x81, 0x11, 0x10, 0x00, 0x80, //# # #.... # -0x80, 0x08, 0x84, 0x81, 0x11, 0x18, 0x28, 0x80, //# ##$#....#@## -0x80, 0x40, 0x40, 0x00, 0x80, 0x88, 0x88, 0x00, //# $ $ # #### -0x88, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, //## # $ # -0x08, 0x88, 0x88, 0x80, 0x40, 0x80, 0x00, 0x00, // ###### $ # -0x00, 0x00, 0x00, 0x88, 0x00, 0x80, 0x00, 0x00, // ## # -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 247 -0x0E, 0x0F,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //## ## -0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, //# ##### -0x80, 0x80, 0x00, 0x04, 0x00, 0x80, 0x00, //# # $ # -0x80, 0x08, 0x04, 0x08, 0x80, 0x80, 0x00, //# # $ ## # -0x88, 0x04, 0x48, 0x11, 0x10, 0x80, 0x00, //## $$#... # -0x08, 0x88, 0x00, 0x11, 0x10, 0x80, 0x00, // ### ... # -0x00, 0x08, 0x88, 0x81, 0x18, 0x88, 0x88, // ####..##### -0x88, 0x88, 0x88, 0x11, 0x18, 0x80, 0x08, //######...## # -0x80, 0x08, 0x88, 0x04, 0x20, 0x84, 0x08, //# ### $@ #$ # -0x80, 0x40, 0x80, 0x00, 0x80, 0x00, 0x08, //# $ # # # -0x80, 0x04, 0x00, 0x84, 0x00, 0x40, 0x88, //# $ #$ $ ## -0x88, 0x00, 0x00, 0x40, 0x08, 0x88, 0x80, //## $ #### -0x08, 0x88, 0x88, 0x00, 0x88, 0x00, 0x00, // ##### ## -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 248 -0x08, 0x08,//Size x and y -0x00, 0x88, 0x88, 0x88, // ###### -0x88, 0x80, 0x10, 0x08, //### . # -0x80, 0x42, 0x81, 0x08, //# $@#. # -0x80, 0x04, 0x80, 0x88, //# $# ## -0x80, 0x05, 0x00, 0x80, //# * # -0x88, 0x00, 0x80, 0x80, //## # # -0x08, 0x80, 0x00, 0x80, // ## # -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 249 -0x13, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ########### -0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, // # # # -0x88, 0x88, 0x80, 0x08, 0x00, 0x00, 0x04, 0x04, 0x08, 0x00, //##### # $ $ # -0x80, 0x00, 0x88, 0x88, 0x80, 0x48, 0x80, 0x80, 0x88, 0x00, //# ##### $## # ## -0x80, 0x40, 0x88, 0x00, 0x08, 0x08, 0x80, 0x40, 0x08, 0x00, //# $ ## # ## $ # -0x80, 0x40, 0x02, 0x44, 0x08, 0x08, 0x84, 0x44, 0x08, 0x00, //# $ @$$ # ##$$$ # -0x88, 0x08, 0x88, 0x00, 0x08, 0x08, 0x80, 0x00, 0x08, 0x00, //## ### # ## # -0x88, 0x08, 0x00, 0x08, 0x88, 0x08, 0x88, 0x88, 0x48, 0x00, //## # ### #####$# -0x88, 0x08, 0x00, 0x00, 0x04, 0x00, 0x81, 0x11, 0x18, 0x00, //## # $ #....# -0x80, 0x08, 0x88, 0x08, 0x80, 0x40, 0x81, 0x11, 0x18, 0x80, //# ### ## $ #....## -0x80, 0x40, 0x00, 0x40, 0x80, 0x00, 0x81, 0x14, 0x10, 0x80, //# $ $ # #..$. # -0x80, 0x08, 0x80, 0x40, 0x80, 0x08, 0x81, 0x11, 0x10, 0x80, //# ## $ # ##.... # -0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x11, 0x18, 0x80, //##### ######...## -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x00, // ##### ##### -//Level: 250 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, //############ ###### -0x80, 0x00, 0x80, 0x00, 0x08, 0x08, 0x88, 0x11, 0x11, 0x80, //# # # ###....# -0x80, 0x00, 0x44, 0x80, 0x00, 0x20, 0x01, 0x11, 0x11, 0x80, //# $$# @ .....# -0x80, 0x00, 0x80, 0x88, 0x80, 0x00, 0x80, 0x11, 0x11, 0x80, //# # ### # ....# -0x88, 0x08, 0x80, 0x88, 0x80, 0x08, 0x00, 0x11, 0x11, 0x80, //## ## ### # ....# -0x08, 0x04, 0x04, 0x00, 0x00, 0x08, 0x08, 0x08, 0x88, 0x80, // # $ $ # # #### -0x08, 0x00, 0x40, 0x48, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, // # $ $## # # -0x88, 0x88, 0x08, 0x00, 0x88, 0x88, 0x08, 0x08, 0x80, 0x80, //#### # #### # ## # -0x80, 0x08, 0x08, 0x40, 0x00, 0x88, 0x08, 0x00, 0x00, 0x80, //# # #$ ## # # -0x80, 0x40, 0x04, 0x00, 0x80, 0x88, 0x08, 0x00, 0x08, 0x80, //# $ $ # ## # ## -0x80, 0x80, 0x40, 0x40, 0x00, 0x08, 0x08, 0x00, 0x08, 0x00, //# # $ $ # # # -0x80, 0x04, 0x08, 0x80, 0x88, 0x08, 0x08, 0x88, 0x88, 0x00, //# $ ## ## # ##### -0x80, 0x44, 0x00, 0x00, 0x04, 0x40, 0x08, 0x00, 0x00, 0x00, //# $$ $$ # -0x88, 0x08, 0x80, 0x88, 0x80, 0x40, 0x08, 0x00, 0x00, 0x00, //## ## ### $ # -0x08, 0x00, 0x00, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, // # # # # -0x08, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### ###### -//Level: 251 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x88, 0x00, 0x00, 0x80, 0x00, 0x28, 0x88, //# # ## # @### -0x88, 0x00, 0x00, 0x40, 0x00, 0x08, 0x04, 0x88, 0x80, 0x08, //## $ # $### # -0x88, 0x48, 0x04, 0x08, 0x84, 0x80, 0x40, 0x40, 0x00, 0x08, //##$# $ ##$# $ $ # -0x80, 0x00, 0x48, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x88, //# $# $ ### -0x80, 0x88, 0x00, 0x04, 0x08, 0x88, 0x00, 0x81, 0x11, 0x18, //# ## $ ### #....# -0x80, 0x80, 0x48, 0x08, 0x08, 0x08, 0x08, 0x11, 0x11, 0x88, //# # $# # # # #....## -0x80, 0x00, 0x04, 0x04, 0x08, 0x00, 0x81, 0x11, 0x18, 0x88, //# $ $ # #....### -0x88, 0x40, 0x88, 0x80, 0x04, 0x08, 0x11, 0x11, 0x88, 0x88, //##$ ### $ #....#### -0x80, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, //# # $ ###### -0x80, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x88, 0x88, 0x88, //# # # ###### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 252 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x88, 0x00, 0x00, 0x88, //# # # ## ## -0x80, 0x48, 0x00, 0x04, 0x08, 0x00, 0x00, 0x08, 0x80, 0x08, //# $# $ # ## # -0x80, 0x40, 0x04, 0x00, 0x81, 0x18, 0x00, 0x00, 0x04, 0x08, //# $ $ #..# $ # -0x80, 0x40, 0x40, 0x08, 0x11, 0x11, 0x80, 0x00, 0x80, 0x88, //# $ $ #....# # ## -0x80, 0x48, 0x00, 0x81, 0x11, 0x11, 0x18, 0x88, 0x04, 0x08, //# $# #......### $ # -0x80, 0x00, 0x80, 0x08, 0x11, 0x11, 0x80, 0x08, 0x40, 0x08, //# # #....# #$ # -0x80, 0x40, 0x08, 0x88, 0x81, 0x18, 0x00, 0x08, 0x00, 0x08, //# $ ####..# # # -0x88, 0x04, 0x00, 0x08, 0x80, 0x80, 0x80, 0x40, 0x04, 0x88, //## $ ## # # $ $## -0x88, 0x80, 0x40, 0x00, 0x04, 0x82, 0x40, 0x48, 0x00, 0x08, //### $ $#@$ $# # -0x88, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, //#### # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 253 -0x0F, 0x10,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, // # # # -0x88, 0x08, 0x80, 0x00, 0x08, 0x08, 0x80, 0x80, //## ## # ## # -0x81, 0x11, 0x11, 0x01, 0x11, 0x11, 0x80, 0x80, //#..... .....# # -0x81, 0x10, 0x18, 0x08, 0x10, 0x11, 0x80, 0x80, //#.. .# #. ..# # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, 0x80, //###### ###### # -0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x88, 0x88, 0x04, 0x88, 0x88, 0x80, 0x80, // ##### $##### # -0x08, 0x00, 0x00, 0x82, 0x80, 0x00, 0x80, 0x80, // # #@# # # -0x88, 0x40, 0x40, 0x84, 0x80, 0x00, 0x80, 0x80, //##$ $ #$# # # -0x80, 0x40, 0x04, 0x04, 0x00, 0x44, 0x40, 0x80, //# $ $ $ $$$ # -0x80, 0x04, 0x00, 0x84, 0x80, 0x00, 0x80, 0x80, //# $ #$# # # -0x80, 0x00, 0x44, 0x80, 0x84, 0x40, 0x80, 0x80, //# $$# #$$ # # -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x80, 0x80, //#### ### # -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x80, // ###### # -0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 254 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //########### -0x80, 0x00, 0x88, 0x11, 0x11, 0x88, 0x88, 0x80, //# ##....##### -0x80, 0x04, 0x00, 0x11, 0x18, 0x80, 0x00, 0x80, //# $ ...## # -0x88, 0x84, 0x40, 0x11, 0x88, 0x80, 0x80, 0x80, //###$$ ..### # # -0x00, 0x80, 0x88, 0x11, 0x18, 0x84, 0x00, 0x80, // # ##...##$ # -0x00, 0x80, 0x80, 0x00, 0x88, 0x80, 0x08, 0x80, // # # ### ## -0x08, 0x80, 0x80, 0x40, 0x04, 0x04, 0x08, 0x00, // ## # $ $ $ # -0x08, 0x00, 0x80, 0x80, 0x80, 0x00, 0x08, 0x00, // # # # # # -0x08, 0x00, 0x00, 0x80, 0x40, 0x84, 0x08, 0x00, // # # $ #$ # -0x08, 0x04, 0x40, 0x80, 0x48, 0x00, 0x88, 0x00, // # $$ # $# ## -0x08, 0x88, 0x08, 0x80, 0x08, 0x08, 0x80, 0x00, // ### ## # ## -0x00, 0x08, 0x20, 0x00, 0x00, 0x08, 0x00, 0x00, // #@ # -0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -//Level: 255 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x28, //# # # # #@# -0x80, 0x40, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x08, //# $ $ $ # # -0x88, 0x08, 0x88, 0x11, 0x88, 0x08, 0x88, 0x00, 0x00, 0x08, //## ###..## ### # -0x80, 0x00, 0x81, 0x11, 0x18, 0x48, 0x00, 0x48, 0x88, 0x08, //# #....#$# $### # -0x80, 0x40, 0x81, 0x11, 0x18, 0x00, 0x40, 0x04, 0x04, 0x08, //# $ #....# $ $ $ # -0x80, 0x00, 0x81, 0x11, 0x18, 0x08, 0x08, 0x04, 0x04, 0x08, //# #....# # # $ $ # -0x80, 0x00, 0x88, 0x11, 0x88, 0x00, 0x08, 0x48, 0x00, 0x08, //# ##..## #$# # -0x88, 0x48, 0x80, 0x00, 0x08, 0x80, 0x08, 0x00, 0x84, 0x88, //##$## ## # #$## -0x80, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, //# $ $ # # # -0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 256 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, //# # # # -0x80, 0x00, 0x00, 0x00, 0x40, 0x08, 0x80, 0x88, 0x80, 0x88, //# $ ## ### ## -0x88, 0x88, 0x80, 0x08, 0x80, 0x00, 0x40, 0x04, 0x00, 0x08, //##### ## $ $ # -0x88, 0x11, 0x88, 0x00, 0x80, 0x80, 0x40, 0x80, 0x80, 0x08, //##..## # # $ # # # -0x81, 0x11, 0x10, 0x04, 0x00, 0x00, 0x08, 0x84, 0x80, 0x88, //#.... $ ##$# ## -0x81, 0x11, 0x10, 0x04, 0x88, 0x88, 0x80, 0x00, 0x84, 0x88, //#.... $##### #$## -0x88, 0x11, 0x80, 0x80, 0x08, 0x00, 0x08, 0x00, 0x40, 0x08, //##..# # # # $ # -0x88, 0x81, 0x80, 0x80, 0x04, 0x00, 0x04, 0x00, 0x80, 0x28, //###.# # $ $ # @# -0x88, 0x00, 0x40, 0x04, 0x08, 0x00, 0x08, 0x00, 0x88, 0x88, //## $ $ # # #### -0x88, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, //## ########### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 257 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x08, 0x00, 0x80, 0x80, 0x00, 0x08, 0x00, 0x80, 0x08, //# # # # # # # -0x80, 0x00, 0x40, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x08, //# $ $ $ # -0x88, 0x08, 0x00, 0x84, 0x88, 0x84, 0x88, 0x00, 0x88, 0x08, //## # #$###$## ## # -0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x08, 0x00, 0x40, 0x08, //# $ $ # $ # -0x80, 0x88, 0x84, 0x88, 0x48, 0x00, 0x08, 0x04, 0x00, 0x08, //# ###$##$# # $ # -0x80, 0x80, 0x00, 0x40, 0x40, 0x08, 0x88, 0x88, 0x80, 0x48, //# # $ $ ###### $# -0x80, 0x40, 0x04, 0x40, 0x40, 0x08, 0x28, 0x18, 0x11, 0x18, //# $ $$ $ #@#.#...# -0x80, 0x80, 0x00, 0x00, 0x80, 0x08, 0x08, 0x18, 0x11, 0x18, //# # # # #.#...# -0x80, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x11, 0x11, 0x18, //# ########## #.....# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x11, 0x18, //# #.....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 258 -0x14, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x20, 0x80, 0x00, 0x00, // ##########@ # -0x88, 0x80, 0x00, 0x80, 0x00, 0x88, 0x40, 0x88, 0x88, 0x88, //### # ##$ ###### -0x80, 0x04, 0x40, 0x80, 0x00, 0x00, 0x40, 0x80, 0x01, 0x18, //# $$ # $ # ..# -0x80, 0x80, 0x00, 0x80, 0x00, 0x88, 0x40, 0x00, 0x01, 0x18, //# # # ##$ ..# -0x80, 0x80, 0x00, 0x80, 0x44, 0x08, 0x00, 0x80, 0x01, 0x18, //# # # $$ # # ..# -0x80, 0x80, 0x88, 0x88, 0x08, 0x08, 0x88, 0x80, 0x11, 0x18, //# # #### # #### ...# -0x80, 0x84, 0x08, 0x88, 0x08, 0x00, 0x80, 0x88, 0x88, 0x88, //# #$ ### # # ###### -0x80, 0x80, 0x08, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, //# # # # # -0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, //# $ # # -0x80, 0x80, 0x08, 0x88, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, //# # ### ## # -0x80, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, //# #### # -0x80, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //# ###### -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -//Level: 259 -0x0F, 0x0C,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -0x00, 0x08, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // # ###### -0x00, 0x08, 0x00, 0x48, 0x00, 0x00, 0x00, 0x80, // # $# # -0x88, 0x88, 0x40, 0x04, 0x00, 0x84, 0x40, 0x80, //####$ $ #$$ # -0x80, 0x00, 0x04, 0x40, 0x40, 0x00, 0x40, 0x80, //# $$ $ $ # -0x80, 0x48, 0x00, 0x88, 0x08, 0x88, 0x08, 0x80, //# $# ## ### ## -0x80, 0x28, 0x84, 0x04, 0x00, 0x40, 0x08, 0x00, //# @##$ $ $ # -0x80, 0x00, 0x00, 0x40, 0x04, 0x04, 0x08, 0x00, //# $ $ $ # -0x88, 0x88, 0x88, 0x88, 0x88, 0x44, 0x08, 0x00, //##########$$ # -0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x88, 0x00, // #.........## -0x00, 0x81, 0x11, 0x11, 0x11, 0x11, 0x80, 0x00, // #.........# -0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ########### -//Level: 260 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############## -0x08, 0x20, 0x05, 0x05, 0x05, 0x08, 0x00, 0x88, // #@ * * * # ## -0x08, 0x48, 0x00, 0x50, 0x50, 0x08, 0x00, 0x08, // #$# * * # # -0x08, 0x08, 0x05, 0x05, 0x05, 0x00, 0x00, 0x08, // # # * * * # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x88, // # # * * ## ## -0x08, 0x08, 0x05, 0x05, 0x05, 0x08, 0x80, 0x80, // # # * * * ## # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x80, // # # * * ## # -0x08, 0x08, 0x05, 0x05, 0x05, 0x08, 0x80, 0x80, // # # * * * ## # -0x08, 0x08, 0x00, 0x50, 0x50, 0x08, 0x80, 0x80, // # # * * ## # -0x08, 0x08, 0x05, 0x01, 0x05, 0x08, 0x80, 0x88, // # # * . * ## ## -0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //## ########## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //# ######### # -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x88, 0x88, //##### #### -//Level: 261 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x11, 0x11, 0x08, //#..... # -0x84, 0x08, 0x84, 0x08, //#$ ##$ # -0x80, 0x48, 0x80, 0x08, //# $## # -0x80, 0x04, 0x24, 0x08, //# $@$ # -0x80, 0x00, 0x00, 0x88, //# ## -0x88, 0x88, 0x88, 0x80, //####### -//Level: 262 -0x13, 0x0D,//Size x and y -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //# ## -0x80, 0x40, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, //# $ ######### -0x88, 0x08, 0x08, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, //## # # ###### -0x88, 0x08, 0x00, 0x04, 0x84, 0x82, 0x00, 0x80, 0x00, 0x80, //## # $#$#@ # # -0x80, 0x08, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 0x40, 0x80, //# # $ # $ # -0x80, 0x08, 0x88, 0x08, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //# ### ######### ## -0x80, 0x08, 0x80, 0x11, 0x51, 0x11, 0x11, 0x08, 0x08, 0x80, //# ## ..*..... # ## -0x88, 0x08, 0x80, 0x51, 0x51, 0x15, 0x15, 0x08, 0x08, 0x80, //## ## *.*..*.* # ## -0x80, 0x48, 0x88, 0x88, 0x88, 0x88, 0x80, 0x88, 0x40, 0x80, //# $########## ##$ # -0x80, 0x04, 0x00, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00, 0x80, //# $ $ $ $ # -0x80, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x80, //# # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 263 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x11, 0x11, 0x80, // #############....# -0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x88, 0x11, 0x11, 0x80, //## ## ##....# -0x80, 0x04, 0x48, 0x80, 0x04, 0x02, 0x88, 0x11, 0x11, 0x80, //# $$## $ @##....# -0x80, 0x00, 0x00, 0x04, 0x40, 0x48, 0x00, 0x11, 0x11, 0x80, //# $$ $# ....# -0x80, 0x04, 0x08, 0x80, 0x44, 0x08, 0x08, 0x01, 0x11, 0x80, //# $ ## $$ # # ...# -0x80, 0x04, 0x08, 0x80, 0x40, 0x08, 0x00, 0x11, 0x11, 0x80, //# $ ## $ # ....# -0x88, 0x08, 0x88, 0x88, 0x08, 0x88, 0x08, 0x81, 0x88, 0x80, //## ##### ### ##.### -0x88, 0x00, 0x04, 0x00, 0x40, 0x88, 0x00, 0x01, 0x00, 0x80, //## $ $ ## . # -0x80, 0x48, 0x88, 0x00, 0x80, 0x88, 0x88, 0x80, 0x88, 0x80, //# $### # ##### ### -0x80, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, //# $ # # -0x80, 0x04, 0x08, 0x40, 0x40, 0x48, 0x88, 0x00, 0x80, 0x00, //# $ #$ $ $### # -0x80, 0x44, 0x48, 0x04, 0x00, 0x08, 0x08, 0x88, 0x80, 0x00, //# $$$# $ # #### -0x80, 0x00, 0x08, 0x00, 0x44, 0x08, 0x00, 0x00, 0x00, 0x00, //# # $$ # -0x88, 0x88, 0x88, 0x00, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, //###### ### -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 264 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, // ####### ###### -0x08, 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x80, // # ### # -0x08, 0x00, 0x88, 0x08, 0x00, 0x44, 0x80, 0x88, // # ## # $$# ## -0x08, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x08, // #$ $ $ $ $ # -0x08, 0x04, 0x04, 0x08, 0x00, 0x08, 0x00, 0x08, // # $ $ # # # -0x88, 0x00, 0x44, 0x08, 0x88, 0x88, 0x81, 0x88, //## $$ ######.## -0x80, 0x40, 0x00, 0x08, 0x00, 0x08, 0x11, 0x18, //# $ # #...# -0x82, 0x84, 0x40, 0x88, 0x00, 0x08, 0x11, 0x18, //#@#$$ ## #...# -0x80, 0x04, 0x00, 0x08, 0x00, 0x08, 0x11, 0x18, //# $ # #...# -0x88, 0x00, 0x84, 0x08, 0x00, 0x08, 0x11, 0x18, //## #$ # #...# -0x08, 0x44, 0x80, 0x08, 0x88, 0x88, 0x11, 0x18, // #$$# #####...# -0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x11, 0x18, // # $ ...# -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x08, // ########### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, // ##### -//Level: 265 -0x14, 0x0E,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, // #### #### -0x00, 0x00, 0x08, 0x88, 0x00, 0x80, 0x80, 0x08, 0x00, 0x00, // ### # # # -0x00, 0x88, 0x88, 0x00, 0x40, 0x88, 0x80, 0x48, 0x00, 0x00, // #### $ ### $# -0x00, 0x80, 0x40, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x08, 0x80, 0x40, 0x04, 0x00, 0x48, 0x00, 0x00, //### ## $ $ $# -0x80, 0x00, 0x00, 0x00, 0x80, 0x40, 0x88, 0x08, 0x00, 0x00, //# # $ ## # -0x80, 0x84, 0x44, 0x48, 0x04, 0x40, 0x40, 0x08, 0x00, 0x00, //# #$$$$# $$ $ # -0x80, 0x00, 0x04, 0x04, 0x40, 0x88, 0x88, 0x08, 0x88, 0x88, //# $ $$ #### ##### -0x88, 0x88, 0x00, 0x00, 0x40, 0x28, 0x80, 0x11, 0x11, 0x18, //#### $ @## .....# -0x08, 0x00, 0x44, 0x88, 0x08, 0x88, 0x80, 0x11, 0x11, 0x88, // # $$## #### ....## -0x08, 0x04, 0x00, 0x81, 0x11, 0x18, 0x80, 0x11, 0x88, 0x80, // # $ #....## ..### -0x08, 0x08, 0x00, 0x41, 0x11, 0x18, 0x88, 0x88, 0x80, 0x00, // # # $....###### -0x08, 0x88, 0x80, 0x01, 0x11, 0x18, 0x00, 0x00, 0x00, 0x00, // #### ....# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 266 -0x0F, 0x0E,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ###### -0x08, 0x88, 0x80, 0x00, 0x08, 0x88, 0x88, 0x80, // #### ###### -0x08, 0x00, 0x80, 0x40, 0x00, 0x08, 0x00, 0x80, // # # $ # # -0x08, 0x04, 0x00, 0x84, 0x40, 0x04, 0x40, 0x80, // # $ #$$ $$ # -0x08, 0x00, 0x48, 0x00, 0x81, 0x18, 0x10, 0x80, // # $# #..#. # -0x88, 0x40, 0x08, 0x08, 0x11, 0x15, 0x18, 0x80, //##$ # #...*.## -0x80, 0x40, 0x80, 0x40, 0x11, 0x88, 0x10, 0x80, //# $ # $ ..##. # -0x80, 0x84, 0x04, 0x08, 0x11, 0x11, 0x10, 0x80, //# #$ $ #..... # -0x80, 0x00, 0x08, 0x00, 0x80, 0x08, 0x88, 0x80, //# # # #### -0x80, 0x48, 0x00, 0x80, 0x00, 0x28, 0x80, 0x00, //# $# # @## -0x80, 0x00, 0x04, 0x80, 0x80, 0x08, 0x00, 0x00, //# $# # # -0x88, 0x88, 0x00, 0x40, 0x88, 0x88, 0x00, 0x00, //#### $ #### -0x00, 0x08, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, // # ### -0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 267 -0x0D, 0x0D,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x80, 0x28, 0x88, 0x00, 0x00, // # @### -0x00, 0x88, 0x80, 0x40, 0x08, 0x80, 0x00, // ### $ ## -0x08, 0x80, 0x04, 0x14, 0x00, 0x80, 0x00, // ## $.$ # -0x08, 0x00, 0x41, 0x51, 0x40, 0x88, 0x80, // # $.*.$ ### -0x88, 0x04, 0x15, 0x15, 0x14, 0x00, 0x80, //## $.*.*.$ # -0x80, 0x41, 0x51, 0x51, 0x51, 0x40, 0x80, //# $.*.*.*.$ # -0x80, 0x04, 0x15, 0x15, 0x14, 0x08, 0x80, //# $.*.*.$ ## -0x88, 0x80, 0x41, 0x51, 0x40, 0x08, 0x00, //### $.*.$ # -0x00, 0x80, 0x04, 0x14, 0x00, 0x88, 0x00, // # $.$ ## -0x00, 0x88, 0x00, 0x40, 0x88, 0x80, 0x00, // ## $ ### -0x00, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, // ### # -0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // #### -//Level: 268 -0x0D, 0x0B,//Size x and y -0x08, 0x88, 0x80, 0x08, 0x88, 0x88, 0x80, // #### ###### -0x08, 0x00, 0x88, 0x88, 0x00, 0x00, 0x80, // # #### # -0x88, 0x50, 0x00, 0x50, 0x55, 0x00, 0x80, //##* * ** # -0x80, 0x40, 0x50, 0x00, 0x05, 0x80, 0x80, //# $ * *# # -0x80, 0x10, 0x00, 0x88, 0x80, 0x00, 0x80, //# . ### # -0x88, 0x88, 0x88, 0x00, 0x08, 0x28, 0x80, //###### #@## -0x80, 0x50, 0x10, 0x50, 0x05, 0x50, 0x80, //# * . * ** # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x50, 0x00, 0x50, 0x84, 0x80, 0x80, //##* * #$# # -0x08, 0x00, 0x88, 0x88, 0x80, 0x00, 0x80, // # ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x80, // #### ##### -//Level: 269 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x88, 0x00, // # ## -0x88, 0x84, 0x00, 0x08, 0x80, //###$ ## -0x80, 0x01, 0x41, 0x40, 0x80, //# .$.$ # -0x80, 0x81, 0x81, 0x80, 0x80, //# #.#.# # -0x80, 0x05, 0x45, 0x00, 0x80, //# *$* # -0x88, 0x80, 0x00, 0x88, 0x80, //### ### -0x00, 0x80, 0x20, 0x80, 0x00, // # @ # -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 270 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x80, 0x80, 0x52, 0x88, //# # *@## -0x80, 0x05, 0x00, 0x08, //# * # -0x88, 0x84, 0x00, 0x08, //###$ # -0x00, 0x80, 0x00, 0x18, // # .# -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 271 -0x11, 0x10,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ######## -0x00, 0x08, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x00, // # # # -0x00, 0x08, 0x00, 0x40, 0x00, 0x80, 0x00, 0x00, 0x00, // # $ # -0x08, 0x88, 0x08, 0x40, 0x00, 0x88, 0x88, 0x00, 0x00, // ### #$ #### -0x08, 0x00, 0x40, 0x08, 0x84, 0x00, 0x08, 0x00, 0x00, // # $ ##$ # -0x08, 0x00, 0x80, 0x20, 0x40, 0x80, 0x48, 0x00, 0x00, // # # @ $ # $# -0x08, 0x00, 0x80, 0x00, 0x00, 0x04, 0x08, 0x88, 0x80, // # # $ #### -0x08, 0x80, 0x88, 0x88, 0x48, 0x80, 0x00, 0x00, 0x80, // ## ####$## # -0x08, 0x04, 0x81, 0x11, 0x11, 0x80, 0x80, 0x00, 0x80, // # $#.....# # # -0x08, 0x00, 0x41, 0x15, 0x51, 0x04, 0x80, 0x88, 0x80, // # $..**. $# ### -0x88, 0x00, 0x81, 0x11, 0x11, 0x80, 0x00, 0x80, 0x00, //## #.....# # -0x80, 0x00, 0x88, 0x80, 0x88, 0x88, 0x88, 0x80, 0x00, //# ### ####### -0x80, 0x44, 0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, //# $$ # # -0x80, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //# # # -0x88, 0x88, 0x88, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 272 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x88, 0x11, 0x10, 0x00, 0x88, 0x08, 0x00, 0x00, 0x80, 0x08, //##... ## # # # -0x81, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0x88, 0x08, //#.... $ ## # -0x81, 0x11, 0x18, 0x08, 0x08, 0x48, 0x88, 0x40, 0x00, 0x08, //#....# # #$###$ # -0x81, 0x11, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x08, //#...# # # # -0x88, 0x18, 0x00, 0x84, 0x08, 0x00, 0x00, 0x04, 0x88, 0x08, //##.# #$ # $## # -0x80, 0x08, 0x00, 0x80, 0x40, 0x40, 0x88, 0x80, 0x04, 0x08, //# # # $ $ ### $ # -0x80, 0x00, 0x00, 0x40, 0x04, 0x08, 0x00, 0x80, 0x88, 0x08, //# $ $ # # ## # -0x88, 0x08, 0x08, 0x80, 0x84, 0x48, 0x04, 0x80, 0x08, 0x08, //## # ## #$$# $# # # -0x80, 0x08, 0x00, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x88, //# # $ $ # ## -0x80, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x80, 0x00, 0x28, //# # # # @# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 273 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x08, 0x00, 0x80, 0x80, 0x08, 0x00, 0x80, 0x08, //# # # # # # # -0x80, 0x28, 0x08, 0x08, 0x80, 0x40, 0x00, 0x40, 0x00, 0x88, //# @# # ## $ $ ## -0x88, 0x88, 0x08, 0x00, 0x00, 0x80, 0x08, 0x04, 0x00, 0x08, //#### # # # $ # -0x80, 0x00, 0x08, 0x08, 0x80, 0x84, 0x08, 0x80, 0x88, 0x08, //# # ## #$ ## ## # -0x80, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, //# $ $ $ # -0x81, 0x18, 0x88, 0x44, 0x88, 0x04, 0x88, 0x40, 0x88, 0x08, //#..###$$## $##$ ## # -0x81, 0x18, 0x18, 0x00, 0x80, 0x40, 0x00, 0x40, 0x80, 0x08, //#..#.# # $ $ # # -0x81, 0x11, 0x18, 0x04, 0x40, 0x00, 0x88, 0x40, 0x88, 0x88, //#....# $$ ##$ #### -0x81, 0x11, 0x18, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x08, //#....# ##### # -0x81, 0x11, 0x88, 0x80, 0x00, 0x00, 0x00, 0x08, 0x80, 0x08, //#...### ## # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 274 -0x12, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // ######### -0x00, 0x00, 0x08, 0x00, 0x00, 0x11, 0x18, 0x00, 0x00, // # ...# -0x00, 0x00, 0x08, 0x08, 0x00, 0x11, 0x18, 0x00, 0x00, // # # ...# -0x00, 0x00, 0x08, 0x08, 0x80, 0x01, 0x18, 0x00, 0x00, // # ## ..# -0x88, 0x88, 0x88, 0x04, 0x04, 0x08, 0x88, 0x00, 0x00, //###### $ $ ### -0x81, 0x11, 0x40, 0x40, 0x42, 0x88, 0x00, 0x00, 0x00, //#...$ $ $@## -0x81, 0x18, 0x04, 0x04, 0x04, 0x88, 0x88, 0x88, 0x88, //#..# $ $ $######## -0x81, 0x11, 0x80, 0x40, 0x40, 0x00, 0x00, 0x00, 0x08, //#...# $ $ # -0x81, 0x11, 0x04, 0x04, 0x00, 0x84, 0x84, 0x88, 0x08, //#... $ $ #$#$## # -0x80, 0x08, 0x88, 0x80, 0x40, 0x40, 0x40, 0x80, 0x08, //# #### $ $ $ # # -0x80, 0x08, 0x00, 0x80, 0x04, 0x00, 0x04, 0x00, 0x08, //# # # $ $ # -0x88, 0x88, 0x00, 0x88, 0x00, 0x08, 0x88, 0x88, 0x88, //#### ## ####### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -//Level: 275 -0x10, 0x0D,//Size x and y -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //## ############ -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x28, //# $ $ $ $ $ $ @# -0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x08, //# # $ # -0x80, 0x80, 0x08, 0x88, 0x85, 0x88, 0x84, 0x88, //# # ####*###$## -0x80, 0x80, 0x08, 0x11, 0x11, 0x18, 0x00, 0x80, //# # #.....# # -0x80, 0x84, 0x08, 0x15, 0x55, 0x15, 0x00, 0x80, //# #$ #.***.* # -0x80, 0x80, 0x05, 0x11, 0x11, 0x18, 0x00, 0x80, //# # *.....# # -0x80, 0x80, 0x48, 0x88, 0x88, 0x88, 0x44, 0x80, //# # $#######$$# -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x80, 0x80, //########### # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, // # # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // ##### -//Level: 276 -0x0E, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#. # -0x81, 0x40, 0x40, 0x40, 0x40, 0x40, 0x08, //#.$ $ $ $ $ # -0x81, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, //#.######### # -0x81, 0x81, 0x50, 0x40, 0x11, 0x45, 0x88, //#.#.* $ ..$*## -0x81, 0x80, 0x40, 0x40, 0x51, 0x42, 0x80, //#.# $ $ *.$@# -0x81, 0x81, 0x00, 0x40, 0x11, 0x44, 0x80, //#.#. $ ..$$# -0x81, 0x88, 0x88, 0x88, 0x88, 0x81, 0x80, //#.#########.# -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //#. # -0x81, 0x84, 0x84, 0x84, 0x84, 0x84, 0x80, //#.#$#$#$#$#$# -0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //#. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 277 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x00, 0x00, //#### -0x81, 0x08, 0x00, 0x00, //#. # -0x80, 0x48, 0x00, 0x00, //# $# -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x14, 0x02, 0x08, //# .$ @ # -0x80, 0x14, 0x08, 0x08, //# .$ # # -0x88, 0x80, 0x00, 0x08, //### # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 278 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x00, 0x08, //# # -0x80, 0x84, 0x00, 0x08, //# #$ # -0x80, 0x40, 0x28, 0x18, //# $ @#.# -0x88, 0x48, 0x10, 0x08, //##$#. # -0x08, 0x00, 0x00, 0x18, // # .# -0x08, 0x88, 0x88, 0x88, // ####### -//Level: 279 -0x13, 0x11,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x00, 0x08, 0x88, 0x80, 0x00, 0x08, 0x11, 0x11, 0x11, 0x80, // #### #......# -0x00, 0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x81, 0x11, 0x80, // # #########...# -0x00, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x81, 0x11, 0x80, // # $ $ #...# -0x00, 0x08, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, // # # # # # # # -0x88, 0x88, 0x80, 0x80, 0x80, 0x82, 0x80, 0x80, 0x00, 0x80, //##### # # #@# # # -0x80, 0x00, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x08, 0x80, //# # ### ### ## ## -0x80, 0x00, 0x04, 0x08, 0x04, 0x04, 0x04, 0x08, 0x08, 0x00, //# $ # $ $ $ # # -0x80, 0x44, 0x40, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, //# $$$ $ # # -0x80, 0x00, 0x80, 0x88, 0x84, 0x88, 0x84, 0x88, 0x08, 0x00, //# # ###$###$## # -0x88, 0x80, 0x80, 0x04, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, //### # $ # # -0x08, 0x80, 0x40, 0x08, 0x04, 0x04, 0x04, 0x08, 0x88, 0x00, // ## $ # $ $ $ ### -0x08, 0x00, 0x80, 0x88, 0x80, 0x88, 0x80, 0x88, 0x00, 0x00, // # # ### ### ## -0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # $ # -0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // # ########### -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 280 -0x0F, 0x0E,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //# ### -0x80, 0x40, 0x08, 0x88, 0x00, 0x00, 0x00, 0x00, //# $ ### -0x80, 0x40, 0x40, 0x08, 0x88, 0x00, 0x00, 0x00, //# $ $ ### -0x80, 0x40, 0x40, 0x40, 0x08, 0x88, 0x00, 0x00, //# $ $ $ ### -0x80, 0x40, 0x40, 0x40, 0x00, 0x08, 0x00, 0x00, //# $ $ $ # -0x80, 0x40, 0x40, 0x08, 0x00, 0x08, 0x80, 0x00, //# $ $ # ## -0x80, 0x40, 0x08, 0x80, 0x44, 0x40, 0x80, 0x00, //# $ ## $$$ # -0x82, 0x08, 0x88, 0x80, 0x00, 0x00, 0x88, 0x00, //#@ #### ## -0x88, 0x08, 0x08, 0x14, 0x44, 0x44, 0x18, 0x00, //## # #.$$$$$.# -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x18, 0x80, // # ###.......## -0x08, 0x00, 0x01, 0x55, 0x55, 0x55, 0x51, 0x80, // # .*******.# -0x08, 0x88, 0x81, 0x11, 0x11, 0x11, 0x11, 0x80, // ####.........# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ########### -//Level: 281 -0x10, 0x12,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ####### -0x00, 0x00, 0x80, 0x00, 0x82, 0x80, 0x00, 0x00, // # #@# -0x08, 0x88, 0x80, 0x80, 0x80, 0x88, 0x88, 0x80, // #### # # ##### -0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, // # # # -0x08, 0x04, 0x84, 0x88, 0x88, 0x88, 0x80, 0x80, // # $#$####### # -0x88, 0x40, 0x00, 0x81, 0x18, 0x11, 0x84, 0x88, //##$ #..#..#$## -0x80, 0x00, 0x04, 0x41, 0x11, 0x11, 0x80, 0x08, //# $$.....# # -0x80, 0x40, 0x40, 0x81, 0x11, 0x11, 0x44, 0x08, //# $ $ #.....$$ # -0x88, 0x00, 0x08, 0x81, 0x11, 0x81, 0x80, 0x08, //## ##...#.# # -0x08, 0x04, 0x00, 0x88, 0x11, 0x18, 0x84, 0x08, // # $ ##...##$ # -0x08, 0x08, 0x80, 0x88, 0x88, 0x88, 0x80, 0x08, // # ## ####### # -0x08, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x88, // # $ $ $ ## -0x08, 0x88, 0x88, 0x80, 0x00, 0x40, 0x80, 0x80, // ###### $ # # -0x00, 0x00, 0x00, 0x88, 0x08, 0x04, 0x00, 0x80, // ## # $ # -0x00, 0x00, 0x00, 0x80, 0x44, 0x04, 0x00, 0x80, // # $$ $ # -0x00, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x80, // # $ # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, // ###### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 282 -0x0B, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x80, // ########## -0x88, 0x04, 0x00, 0x51, 0x50, 0x80, //## $ *.* # -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x80, 0x04, 0x00, 0x51, 0x52, 0x80, //# $ *.*@# -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x80, 0x04, 0x00, 0x51, 0x50, 0x80, //# $ *.* # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 283 -0x0F, 0x0D,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // #### -0x00, 0x00, 0x00, 0x80, 0x08, 0x88, 0x88, 0x80, // # ###### -0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, // # # # -0x00, 0x00, 0x00, 0x80, 0x44, 0x00, 0x00, 0x80, // # $$ # -0x88, 0x88, 0x88, 0x84, 0x80, 0x08, 0x00, 0x80, //#######$# # # -0x80, 0x08, 0x15, 0x11, 0x08, 0x88, 0x48, 0x80, //# #.*.. ###$## -0x80, 0x08, 0x18, 0x51, 0x40, 0x00, 0x00, 0x80, //# #.#*.$ # -0x80, 0x08, 0x18, 0x15, 0x80, 0x80, 0x00, 0x80, //# #.#.*# # # -0x80, 0x44, 0x11, 0x11, 0x80, 0x88, 0x88, 0x80, //# $$....# ##### -0x80, 0x24, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, //# @$ # # -0x80, 0x44, 0x48, 0x00, 0x00, 0x80, 0x00, 0x00, //# $$$# # -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, //# ###### -0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //###### -//Level: 284 -0x10, 0x0E,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -0x08, 0x00, 0x00, 0x08, 0x00, 0x08, 0x88, 0x88, // # # ##### -0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x00, 0x08, // # ## ##### # -0x08, 0x40, 0x40, 0x40, 0x08, 0x00, 0x08, 0x08, // #$ $ $ # # # -0x08, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x08, // # $ $ # # -0x88, 0x00, 0x44, 0x08, 0x88, 0x48, 0x88, 0x08, //## $$ ###$### # -0x80, 0x40, 0x00, 0x08, 0x11, 0x11, 0x80, 0x08, //# $ #....# # -0x82, 0x84, 0x40, 0x88, 0x11, 0x11, 0x80, 0x08, //#@#$$ ##....# # -0x80, 0x04, 0x00, 0x08, 0x11, 0x11, 0x40, 0x08, //# $ #....$ # -0x88, 0x00, 0x88, 0x08, 0x11, 0x11, 0x80, 0x88, //## ## #....# ## -0x08, 0x44, 0x80, 0x08, 0x80, 0x88, 0x80, 0x08, // #$$# ## ### # -0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, // # $ # -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x08, // ############ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, // #### -//Level: 285 -0x10, 0x0D,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, // # # # -0x88, 0x80, 0x84, 0x00, 0x40, 0x88, 0x88, 0x00, //### #$ $ #### -0x80, 0x04, 0x00, 0x88, 0x11, 0x80, 0x08, 0x88, //# $ ##..# ### -0x80, 0x80, 0x04, 0x08, 0x11, 0x40, 0x40, 0x08, //# # $ #..$ $ # -0x80, 0x44, 0x00, 0x48, 0x11, 0x00, 0x80, 0x08, //# $$ $#.. # # -0x88, 0x00, 0x80, 0x01, 0x11, 0x84, 0x00, 0x08, //## # ...#$ # -0x08, 0x40, 0x20, 0x81, 0x11, 0x80, 0x40, 0x88, // #$ @ #...# $ ## -0x08, 0x00, 0x00, 0x81, 0x11, 0x40, 0x08, 0x80, // # #...$ ## -0x08, 0x08, 0x84, 0x08, 0x88, 0x00, 0x08, 0x00, // # ##$ ### # -0x08, 0x00, 0x04, 0x00, 0x00, 0x08, 0x88, 0x00, // # $ ### -0x08, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, // # ######## -0x08, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #### -//Level: 286 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x50, 0x00, 0x80, //#@ * # -0x80, 0x44, 0x14, 0x00, 0x80, //# $$.$ # -0x81, 0x11, 0x15, 0x55, 0x80, //#....***# -0x80, 0x44, 0x14, 0x00, 0x80, //# $$.$ # -0x80, 0x00, 0x50, 0x00, 0x80, //# * # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 287 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x02, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x88, //# @## # ## -0x80, 0x00, 0x08, 0x80, 0x00, 0x04, 0x00, 0x00, 0x40, 0x88, //# ## $ $ ## -0x80, 0x08, 0x88, 0x11, 0x11, 0x80, 0x80, 0x80, 0x08, 0x88, //# ###....# # # ### -0x80, 0x00, 0x81, 0x11, 0x18, 0x08, 0x08, 0x04, 0x00, 0x08, //# #....# # # $ # -0x88, 0x80, 0x81, 0x11, 0x80, 0x08, 0x00, 0x00, 0x00, 0x08, //### #...# # # -0x88, 0x00, 0x88, 0x18, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, //## ##.# $ $ # -0x88, 0x00, 0x40, 0x40, 0x88, 0x80, 0x08, 0x08, 0x08, 0x88, //## $ $ ### # # ### -0x88, 0x04, 0x00, 0x00, 0x00, 0x08, 0x08, 0x04, 0x00, 0x08, //## $ # # $ # -0x88, 0x88, 0x04, 0x00, 0x48, 0x08, 0x08, 0x08, 0x04, 0x08, //#### $ $# # # # $ # -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x88, //#### # # ## -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 288 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x02, 0x08, 0x88, //## @ ### -0x88, 0x01, 0x00, 0x08, //## . # -0x81, 0x04, 0x14, 0x08, //#. $.$ # -0x88, 0x48, 0x08, 0x88, //##$# ### -0x88, 0x00, 0x08, 0x88, //## ### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 289 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x20, 0x88, 0x88, //##@ #### -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x10, 0x88, 0x88, //##. #### -0x80, 0x44, 0x10, 0x18, //# $$. .# -0x80, 0x04, 0x08, 0x88, //# $ ### -0x88, 0x80, 0x08, 0x88, //### ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 290 -0x0A, 0x12,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x80, // ######## -0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x08, 0x11, 0x88, 0x11, 0x80, // #..##..# -0x08, 0x11, 0x11, 0x11, 0x80, // #......# -0x08, 0x11, 0x55, 0x11, 0x80, // #..**..# -0x08, 0x88, 0x11, 0x88, 0x80, // ###..### -0x08, 0x00, 0x44, 0x00, 0x80, // # $$ # -0x08, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x04, 0x44, 0x40, 0x80, // # $$$$ # -0x88, 0x80, 0x00, 0x08, 0x88, //### ### -0x80, 0x04, 0x44, 0x40, 0x08, //# $$$$ # -0x80, 0x00, 0x00, 0x00, 0x08, //# # -0x80, 0x44, 0x44, 0x44, 0x08, //# $$$$$$ # -0x88, 0x00, 0x00, 0x00, 0x88, //## ## -0x80, 0x44, 0x44, 0x44, 0x08, //# $$$$$$ # -0x80, 0x00, 0x20, 0x00, 0x08, //# @ # -0x80, 0x08, 0x88, 0x80, 0x08, //# #### # -0x88, 0x88, 0x00, 0x88, 0x88, //#### #### -//Level: 291 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x80, //# # # -0x80, 0x40, 0x84, 0x08, 0x04, 0x88, 0x40, 0x80, //# $ #$ # $##$ # -0x80, 0x80, 0x04, 0x08, 0x00, 0x00, 0x00, 0x80, //# # $ # # -0x80, 0x00, 0x88, 0x48, 0x48, 0x84, 0x40, 0x80, //# ##$#$##$$ # -0x80, 0x80, 0x80, 0x11, 0x10, 0x80, 0x00, 0x80, //# # # ... # # -0x80, 0x40, 0x01, 0x08, 0x01, 0x40, 0x80, 0x80, //# $ . # .$ # # -0x80, 0x48, 0x24, 0x11, 0x18, 0x08, 0x00, 0x80, //# $#@$...# # # -0x80, 0x00, 0x01, 0x08, 0x01, 0x00, 0x40, 0x80, //# . # . $ # -0x80, 0x88, 0x14, 0x88, 0x84, 0x10, 0x80, 0x80, //# ##.$###$. # # -0x80, 0x80, 0x41, 0x11, 0x11, 0x08, 0x80, 0x80, //# # $..... ## # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 292 -0x0F, 0x0A,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############# -0x08, 0x00, 0x00, 0x80, 0x08, 0x80, 0x08, 0x00, // # # ## # -0x08, 0x44, 0x40, 0x80, 0x44, 0x00, 0x48, 0x80, // #$$$ # $$ $## -0x08, 0x04, 0x00, 0x80, 0x01, 0x11, 0x10, 0x80, // # $ # .... # -0x08, 0x00, 0x40, 0x08, 0x41, 0x88, 0x10, 0x80, // # $ #$.##. # -0x08, 0x00, 0x80, 0x48, 0x01, 0x11, 0x18, 0x80, // # # $# ....## -0x88, 0x40, 0x40, 0x08, 0x41, 0x88, 0x10, 0x80, //##$ $ #$.##. # -0x80, 0x40, 0x04, 0x02, 0x41, 0x11, 0x10, 0x80, //# $ $ @$.... # -0x80, 0x00, 0x88, 0x80, 0x08, 0x88, 0x88, 0x80, //# ### ###### -0x88, 0x88, 0x80, 0x88, 0x88, 0x00, 0x00, 0x00, //##### #### -//Level: 293 -0x09, 0x07,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x88, 0x80, 0x00, 0x88, 0x80, //### ### -0x80, 0x10, 0x40, 0x10, 0x80, //# . $ . # -0x80, 0x81, 0x41, 0x80, 0x80, //# #.$.# # -0x80, 0x40, 0x80, 0x40, 0x80, //# $ # $ # -0x88, 0x80, 0x20, 0x88, 0x80, //### @ ### -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 294 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x82, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, //#@ # # # -0x88, 0x08, 0x88, 0x08, 0x80, 0x08, 0x88, 0x80, 0x80, 0x88, //## ### ## #### # ## -0x80, 0x00, 0x08, 0x08, 0x00, 0x44, 0x00, 0x00, 0x00, 0x08, //# # # $$ # -0x80, 0x08, 0x08, 0x08, 0x04, 0x08, 0x04, 0x08, 0x80, 0x88, //# # # # $ # $ ## ## -0x80, 0x00, 0x00, 0x40, 0x80, 0x08, 0x44, 0x08, 0x00, 0x08, //# $ # #$$ # # -0x80, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, 0x08, 0x80, 0x88, //# ### # ## ## -0x81, 0x18, 0x18, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x08, //#..#.# $ # $ # # -0x81, 0x18, 0x18, 0x00, 0x40, 0x80, 0x88, 0x04, 0x40, 0x08, //#..#.# $ # ## $$ # -0x81, 0x11, 0x18, 0x80, 0x00, 0x44, 0x00, 0x40, 0x08, 0x08, //#....## $$ $ # # -0x81, 0x11, 0x11, 0x88, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, //#.....## # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 295 -0x0D, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x80, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //# $ $ $ *...# -0x80, 0x04, 0x04, 0x04, 0x15, 0x11, 0x80, //# $ $ $.*..# -0x82, 0x40, 0x40, 0x40, 0x51, 0x11, 0x80, //#@$ $ $ *...# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############# -//Level: 296 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, // ############ -0x00, 0x00, 0x08, 0x81, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, // ##.. # # -0x00, 0x00, 0x88, 0x11, 0x50, 0x40, 0x00, 0x04, 0x08, 0x00, // ##..* $ $ # -0x00, 0x08, 0x81, 0x15, 0x18, 0x08, 0x08, 0x04, 0x88, 0x00, // ##..*.# # # $## -0x00, 0x08, 0x11, 0x51, 0x80, 0x80, 0x80, 0x40, 0x08, 0x00, // #..*.# # # $ # -0x88, 0x88, 0x11, 0x18, 0x00, 0x80, 0x00, 0x08, 0x08, 0x00, //####...# # # # -0x80, 0x08, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, //# ## # # -0x80, 0x24, 0x04, 0x08, 0x88, 0x00, 0x80, 0x00, 0x88, 0x00, //# @$ $ ### # ## -0x80, 0x40, 0x00, 0x40, 0x00, 0x80, 0x80, 0x00, 0x80, 0x00, //# $ $ # # # -0x88, 0x84, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, //###$$ # # # # # -0x00, 0x80, 0x00, 0x40, 0x00, 0x80, 0x80, 0x88, 0x88, 0x80, // # $ # # ##### -0x00, 0x80, 0x48, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x80, // # $# ##### # -0x00, 0x84, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x80, 0x80, // #$ # # # # -0x00, 0x80, 0x08, 0x88, 0x00, 0x08, 0x80, 0x00, 0x00, 0x80, // # ### ## # -0x00, 0x80, 0x08, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, 0x80, // # # # ## -0x00, 0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, // #### ###### -//Level: 297 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x08, 0x11, 0x18, 0x20, 0x00, 0x08, //# # #...#@ # -0x80, 0x80, 0x00, 0x00, 0x00, 0x11, 0x11, 0x80, 0x00, 0x08, //# # ....# # -0x80, 0x04, 0x00, 0x80, 0x00, 0x81, 0x11, 0x18, 0x00, 0x08, //# $ # #....# # -0x80, 0x88, 0x48, 0x88, 0x80, 0x88, 0x11, 0x11, 0x80, 0x08, //# ##$#### ##....# # -0x80, 0x40, 0x00, 0x40, 0x08, 0x00, 0x81, 0x11, 0x80, 0x08, //# $ $ # #...# # -0x80, 0x44, 0x08, 0x00, 0x08, 0x00, 0x08, 0x04, 0x40, 0x08, //# $$ # # # $$ # -0x88, 0x80, 0x04, 0x44, 0x80, 0x00, 0x44, 0x00, 0x40, 0x08, //### $$$# $$ $ # -0x80, 0x40, 0x08, 0x00, 0x80, 0x00, 0x08, 0x04, 0x80, 0x08, //# $ # # # $# # -0x80, 0x00, 0x48, 0x00, 0x80, 0x00, 0x00, 0x00, 0x40, 0x08, //# $# # $ # -0x80, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x08, //# # # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 298 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x80, 0x08, //# ## # -0x80, 0x10, 0x01, 0x48, //# . .$# -0x80, 0x48, 0x04, 0x18, //# $# $.# -0x88, 0x02, 0x08, 0x08, //## @ # # -0x88, 0x88, 0x00, 0x08, //#### # -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 299 -0x08, 0x08,//Size x and y -0x00, 0x00, 0x88, 0x88, // #### -0x00, 0x00, 0x80, 0x08, // # # -0x00, 0x88, 0x84, 0x18, // ###$.# -0x00, 0x80, 0x01, 0x08, // # . # -0x88, 0x80, 0x08, 0x18, //### #.# -0x80, 0x40, 0x04, 0x08, //# $ $ # -0x80, 0x00, 0x82, 0x08, //# #@ # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 300 -0x08, 0x06,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x80, 0x08, 0x88, //### ### -0x80, 0x11, 0x04, 0x18, //# .. $.# -0x80, 0x04, 0x40, 0x28, //# $$ @# -0x88, 0x88, 0x00, 0x08, //#### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 301 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x01, 0x08, 0x00, //# . # -0x80, 0x00, 0x08, 0x88, //# ### -0x80, 0x84, 0x41, 0x08, //# #$$. # -0x81, 0x00, 0x88, 0x08, //#. ## # -0x82, 0x40, 0x88, 0x08, //#@$ ## # -0x88, 0x80, 0x00, 0x08, //### # -0x00, 0x88, 0x88, 0x88, // ###### -//Level: 302 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // ######## # -0x00, 0x00, 0x08, 0x80, 0x40, 0x40, 0x00, 0x40, 0x80, // ## $ $ $ # -0x00, 0x00, 0x08, 0x00, 0x02, 0x84, 0x00, 0x40, 0x80, // # @#$ $ # -0x00, 0x00, 0x08, 0x00, 0x40, 0x80, 0x08, 0x00, 0x80, // # $ # # # -0x88, 0x88, 0x88, 0x88, 0x04, 0x80, 0x00, 0x00, 0x80, //######## $# # -0x80, 0x00, 0x40, 0x00, 0x00, 0x40, 0x40, 0x88, 0x80, //# $ $ $ ### -0x80, 0x00, 0x88, 0x88, 0x84, 0x88, 0x48, 0x80, 0x00, //# #####$##$## -0x88, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, //## $$ # -0x08, 0x00, 0x88, 0x04, 0x04, 0x04, 0x00, 0x80, 0x00, // # ## $ $ $ # -0x08, 0x88, 0x88, 0x80, 0x80, 0x80, 0x88, 0x80, 0x00, // ###### # # ### -0x00, 0x00, 0x08, 0x04, 0x04, 0x00, 0x80, 0x00, 0x00, // # $ $ # -0x00, 0x00, 0x08, 0x00, 0x40, 0x08, 0x80, 0x00, 0x00, // # $ ## -0x00, 0x00, 0x88, 0x88, 0x04, 0x88, 0x80, 0x00, 0x00, // #### $### -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x00, 0x00, // #.......# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -//Level: 303 -0x10, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, // ##### -0x88, 0x88, 0x88, 0x80, 0x00, 0x80, 0x00, 0x00, //####### # -0x80, 0x00, 0x88, 0x10, 0x00, 0x80, 0x00, 0x00, //# ##. # -0x80, 0x04, 0x81, 0x10, 0x08, 0x88, 0x00, 0x00, //# $#.. ### -0x88, 0x00, 0x11, 0x18, 0x44, 0x08, 0x88, 0x88, //## ...#$$ ##### -0x08, 0x04, 0x18, 0x14, 0x00, 0x00, 0x00, 0x08, // # $.#.$ # -0x08, 0x04, 0x88, 0x84, 0x88, 0x08, 0x04, 0x08, // # $###$## # $ # -0x08, 0x00, 0x08, 0x00, 0x00, 0x04, 0x48, 0x08, // # # $$# # -0x08, 0x84, 0x48, 0x08, 0x84, 0x84, 0x00, 0x08, // ##$$# ##$#$ # -0x08, 0x11, 0x10, 0x42, 0x04, 0x00, 0x08, 0x88, // #... $@ $ ### -0x08, 0x11, 0x18, 0x48, 0x00, 0x08, 0x88, 0x00, // #...#$# ### -0x08, 0x11, 0x10, 0x08, 0x88, 0x88, 0x00, 0x00, // #... ##### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ####### -//Level: 304 -0x10, 0x0F,//Size x and y -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, // ###### -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x08, // ######## # -0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x04, 0x08, // # $ $ $ # -0x00, 0x08, 0x08, 0x08, 0x08, 0x04, 0x88, 0x08, // # # # # $## # -0x00, 0x08, 0x00, 0x00, 0x04, 0x00, 0x04, 0x08, // # $ $ # -0x00, 0x08, 0x88, 0x88, 0x88, 0x84, 0x08, 0x08, // ########$ # # -0x00, 0x88, 0x00, 0x00, 0x00, 0x80, 0x00, 0x08, // ## # # -0x00, 0x82, 0x40, 0x04, 0x00, 0x80, 0x40, 0x08, // #@$ $ # $ # -0x88, 0x88, 0x88, 0x08, 0x40, 0x84, 0x84, 0x08, //###### #$ #$#$ # -0x81, 0x11, 0x18, 0x04, 0x00, 0x80, 0x00, 0x08, //#....# $ # # -0x81, 0x51, 0x18, 0x88, 0x08, 0x80, 0x88, 0x88, //#.*..### ## #### -0x81, 0x15, 0x10, 0x40, 0x00, 0x80, 0x08, 0x00, //#..*. $ # # -0x81, 0x11, 0x14, 0x04, 0x00, 0x00, 0x08, 0x00, //#....$ $ # -0x81, 0x11, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //#...########## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, //##### -//Level: 305 -0x07, 0x06,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x00, 0x88, 0x80, //# ### -0x81, 0x14, 0x41, 0x80, //#..$$.# -0x80, 0x44, 0x20, 0x80, //# $$@ # -0x88, 0x00, 0x18, 0x80, //## .## -0x08, 0x88, 0x88, 0x00, // ##### -//Level: 306 -0x08, 0x06,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x10, 0x08, 0x00, //# . # -0x80, 0x18, 0x08, 0x88, //# .# ### -0x80, 0x24, 0x40, 0x08, //# @$$ # -0x80, 0x41, 0x00, 0x08, //# $. # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 307 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x00, //# @# -0x80, 0x44, 0x88, 0x88, //# $$#### -0x80, 0x40, 0x10, 0x08, //# $ . # -0x88, 0x08, 0x18, 0x08, //## #.# # -0x81, 0x00, 0x08, 0x08, //#. # # -0x80, 0x00, 0x00, 0x08, //# # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 308 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x00, 0x88, //### ## -0x88, 0x80, 0x81, 0x88, //### #.## -0x88, 0x80, 0x01, 0x88, //### .## -0x82, 0x04, 0x40, 0x88, //#@ $$ ## -0x80, 0x01, 0x40, 0x88, //# .$ ## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 309 -0x08, 0x06,//Size x and y -0x08, 0x88, 0x80, 0x00, // #### -0x88, 0x00, 0x88, 0x80, //## ### -0x80, 0x00, 0x00, 0x88, //# ## -0x80, 0x08, 0x44, 0x28, //# #$$@# -0x80, 0x01, 0x05, 0x18, //# . *.# -0x88, 0x88, 0x88, 0x88, //######## -//Level: 310 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x88, 0x88, //## #### -0x81, 0x14, 0x00, 0x18, //#..$ .# -0x80, 0x84, 0x04, 0x08, //# #$ $ # -0x82, 0x00, 0x80, 0x08, //#@ # # -0x88, 0x88, 0x80, 0x08, //##### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 311 -0x11, 0x0D,//Size x and y -0x00, 0x00, 0x08, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x20, 0x08, 0x88, 0x88, 0x88, 0x00, // #@ ####### -0x00, 0x08, 0x88, 0x80, 0x40, 0x04, 0x00, 0x08, 0x00, // #### $ $ # -0x08, 0x88, 0x00, 0x04, 0x40, 0x40, 0x40, 0x08, 0x00, // ### $$ $ $ # -0x08, 0x00, 0x08, 0x00, 0x48, 0x08, 0x88, 0x88, 0x00, // # # $# ##### -0x08, 0x48, 0x88, 0x80, 0x04, 0x00, 0x04, 0x08, 0x00, // #$#### $ $ # -0x08, 0x04, 0x00, 0x40, 0x04, 0x00, 0x04, 0x08, 0x00, // # $ $ $ $ # -0x08, 0x00, 0x40, 0x08, 0x88, 0x48, 0x88, 0x08, 0x80, // # $ ###$### ## -0x88, 0x00, 0x88, 0x08, 0x11, 0x11, 0x18, 0x00, 0x80, //## ## #.....# # -0x80, 0x04, 0x04, 0x08, 0x11, 0x11, 0x10, 0x00, 0x80, //# $ $ #..... # -0x80, 0x40, 0x00, 0x40, 0x11, 0x11, 0x18, 0x88, 0x80, //# $ $ .....#### -0x88, 0x88, 0x88, 0x88, 0x11, 0x11, 0x18, 0x00, 0x00, //########.....# -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -//Level: 312 -0x12, 0x0E,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, //######## -0x81, 0x11, 0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, //#... ######## -0x81, 0x11, 0x10, 0x00, 0x00, 0x40, 0x00, 0x88, 0x00, //#.... $ ## -0x81, 0x11, 0x11, 0x88, 0x04, 0x08, 0x40, 0x08, 0x00, //#.....## $ #$ # -0x81, 0x11, 0x11, 0x80, 0x08, 0x00, 0x40, 0x08, 0x00, //#.....# # $ # -0x88, 0x88, 0x88, 0x84, 0x08, 0x80, 0x04, 0x08, 0x88, //#######$ ## $ ### -0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, 0x40, 0x08, // # ### $ # -0x08, 0x00, 0x40, 0x80, 0x40, 0x08, 0x00, 0x40, 0x08, // # $ # $ # $ # -0x08, 0x00, 0x88, 0x80, 0x88, 0x00, 0x80, 0x88, 0x88, // # ### ## # #### -0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x80, 0x00, 0x80, // # # $ $ # # -0x08, 0x88, 0x80, 0x84, 0x80, 0x08, 0x84, 0x00, 0x80, // #### #$# ##$ # -0x00, 0x82, 0x40, 0x00, 0x04, 0x00, 0x04, 0x00, 0x80, // #@$ $ $ # -0x00, 0x88, 0x88, 0x80, 0x00, 0x88, 0x88, 0x88, 0x80, // ##### ####### -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, // ##### -//Level: 313 -0x0B, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //####### -0x82, 0x00, 0x00, 0x88, 0x88, 0x80, //#@ ##### -0x80, 0x40, 0x15, 0x10, 0x40, 0x80, //# $ .*. $ # -0x80, 0x41, 0x50, 0x51, 0x40, 0x80, //# $.* *.$ # -0x80, 0x40, 0x15, 0x10, 0x40, 0x80, //# $ .*. $ # -0x88, 0x88, 0x88, 0x00, 0x00, 0x80, //###### # -0x00, 0x00, 0x08, 0x88, 0x88, 0x80, // ###### -//Level: 314 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x00, 0x08, 0x02, 0x08, 0x00, // # @ # -0x00, 0x08, 0x44, 0x48, 0x00, // #$$$# -0x88, 0x88, 0x00, 0x08, 0x00, //#### # -0x80, 0x00, 0x18, 0x48, 0x80, //# .#$## -0x80, 0x41, 0x41, 0x01, 0x80, //# $.$. .# -0x80, 0x08, 0x18, 0x18, 0x80, //# #.#.## -0x88, 0x88, 0x88, 0x88, 0x00, //######## -//Level: 315 -0x09, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -0x00, 0x80, 0x00, 0x80, 0x00, // # # -0x88, 0x80, 0x84, 0x80, 0x00, //### #$# -0x80, 0x01, 0x41, 0x88, 0x80, //# .$.### -0x80, 0x84, 0x34, 0x00, 0x80, //# #$+$ # -0x80, 0x01, 0x40, 0x80, 0x80, //# .$ # # -0x88, 0x80, 0x81, 0x00, 0x80, //### #. # -0x00, 0x80, 0x00, 0x88, 0x80, // # ### -0x00, 0x88, 0x88, 0x80, 0x00, // ##### -//Level: 316 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x00, 0x00, 0x08, //# # -0x80, 0x80, 0x88, 0x58, //# # ##*# -0x80, 0x82, 0x04, 0x08, //# #@ $ # -0x81, 0x40, 0x10, 0x08, //#.$ . # -0x88, 0x88, 0x80, 0x08, //##### # -0x00, 0x00, 0x80, 0x08, // # # -0x00, 0x00, 0x88, 0x88, // #### -//Level: 317 -0x08, 0x07,//Size x and y -0x00, 0x08, 0x88, 0x88, // ##### -0x88, 0x88, 0x10, 0x28, //####. @# -0x80, 0x01, 0x40, 0x08, //# .$ # -0x80, 0x80, 0x08, 0x88, //# # ### -0x80, 0x40, 0x40, 0x18, //# $ $ .# -0x88, 0x88, 0x00, 0x08, //#### # -0x00, 0x08, 0x88, 0x88, // ##### -//Level: 318 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, 0x28, //# # # # #@# -0x80, 0x00, 0x40, 0x04, 0x00, 0x00, 0x08, 0x04, 0x08, 0x08, //# $ $ # $ # # -0x88, 0x48, 0x04, 0x88, 0x80, 0x80, 0x00, 0x04, 0x48, 0x08, //##$# $### # $$# # -0x80, 0x08, 0x00, 0x81, 0x88, 0x80, 0x08, 0x40, 0x40, 0x08, //# # #.### #$ $ # -0x80, 0x08, 0x48, 0x11, 0x11, 0x80, 0x08, 0x08, 0x88, 0x08, //# #$#....# # ### # -0x80, 0x40, 0x08, 0x11, 0x11, 0x18, 0x80, 0x00, 0x08, 0x08, //# $ #.....## # # -0x88, 0x40, 0x08, 0x18, 0x11, 0x11, 0x84, 0x40, 0x40, 0x08, //##$ #.#....#$$ $ # -0x80, 0x08, 0x88, 0x88, 0x81, 0x18, 0x80, 0x80, 0x08, 0x08, //# ######..## # # # -0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x88, 0x08, //# $ $ ### # -0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x08, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 319 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x08, 0x08, 0x88, //## # ### -0x88, 0x05, 0x40, 0x08, //## *$ # -0x88, 0x00, 0x41, 0x08, //## $. # -0x88, 0x00, 0x28, 0x88, //## @### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 320 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x88, 0x20, 0x88, // ##@ ## -0x08, 0x80, 0x01, 0x18, // ## ..# -0x88, 0x04, 0x84, 0x88, //## $#$## -0x80, 0x00, 0x41, 0x08, //# $. # -0x80, 0x08, 0x00, 0x08, //# # # -0x80, 0x00, 0x08, 0x88, //# ### -0x88, 0x88, 0x88, 0x00, //###### -//Level: 321 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, //############### -0x81, 0x11, 0x11, 0x11, 0x11, 0x10, 0x01, 0x88, 0x88, 0x00, //#.......... .#### -0x81, 0x11, 0x11, 0x11, 0x11, 0x14, 0x41, 0x80, 0x08, 0x00, //#..........$$.# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x84, 0x08, 0x00, 0x08, 0x80, //###########$ # ## -0x80, 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x00, 0x40, 0x80, //# $ $ $ # -0x88, 0x08, 0x88, 0x80, 0x00, 0x80, 0x04, 0x08, 0x00, 0x80, //## #### # $ # # -0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x08, 0x08, 0x80, //# # ## # ## -0x80, 0x04, 0x80, 0x08, 0x08, 0x80, 0x08, 0x88, 0x08, 0x80, //# $# # ## ### ## -0x80, 0x40, 0x84, 0x88, 0x80, 0x00, 0x08, 0x88, 0x08, 0x80, //# $ #$### ### ## -0x88, 0x80, 0x04, 0x08, 0x00, 0x80, 0x08, 0x88, 0x08, 0x80, //### $ # # ### ## -0x88, 0x80, 0x00, 0x04, 0x08, 0x80, 0x80, 0x08, 0x08, 0x80, //### $ ## # # ## -0x08, 0x04, 0x00, 0x80, 0x04, 0x00, 0x40, 0x40, 0x00, 0x80, // # $ # $ $ $ # -0x08, 0x00, 0x40, 0x04, 0x84, 0x44, 0x00, 0x80, 0x00, 0x80, // # $ $#$$$ # # -0x08, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x88, 0x88, 0x80, // # # $ ##### -0x08, 0x02, 0x88, 0x00, 0x80, 0x08, 0x00, 0x80, 0x00, 0x00, // # @## # # # -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ############## -//Level: 322 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x80, 0x00, //##### -0x80, 0x01, 0x88, 0x80, //# .### -0x80, 0x41, 0x10, 0x80, //# $.. # -0x80, 0x08, 0x84, 0x88, //# ##$## -0x88, 0x00, 0x80, 0x08, //## # # -0x08, 0x40, 0x00, 0x28, // #$ @# -0x08, 0x00, 0x88, 0x88, // # #### -0x08, 0x88, 0x80, 0x00, // #### -//Level: 323 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x11, 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x80, 0x08, //#....# # # # -0x81, 0x11, 0x18, 0x08, 0x04, 0x00, 0x40, 0x00, 0x00, 0x08, //#....# # $ $ # -0x81, 0x11, 0x10, 0x88, 0x00, 0x48, 0x08, 0x04, 0x84, 0x08, //#.... ## $# # $#$ # -0x81, 0x11, 0x80, 0x00, 0x40, 0x00, 0x48, 0x00, 0x40, 0x08, //#...# $ $# $ # -0x81, 0x18, 0x88, 0x80, 0x08, 0x04, 0x00, 0x04, 0x40, 0x08, //#..#### # $ $$ # -0x80, 0x00, 0x00, 0x08, 0x88, 0x80, 0x88, 0x88, 0x08, 0x88, //# #### #### ### -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x00, 0x08, //# # # # -0x80, 0x88, 0x00, 0x08, 0x00, 0x04, 0x08, 0x04, 0x04, 0x08, //# ## # $ # $ $ # -0x80, 0x88, 0x00, 0x00, 0x40, 0x88, 0x04, 0x00, 0x40, 0x08, //# ## $ ## $ $ # -0x80, 0x00, 0x00, 0x28, 0x00, 0x00, 0x08, 0x00, 0x08, 0x08, //# @# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 324 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x28, 0x11, 0x18, 0x88, //# # @#...### -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, 0x81, 0x11, 0x88, //# # ##...## -0x80, 0x80, 0x80, 0x88, 0x48, 0x80, 0x88, 0x01, 0x11, 0x18, //# # # ##$## ## ....# -0x80, 0x00, 0x40, 0x80, 0x00, 0x44, 0x40, 0x01, 0x11, 0x18, //# $ # $$$ ....# -0x88, 0x84, 0x88, 0x80, 0x44, 0x00, 0x88, 0x80, 0x88, 0x18, //###$### $$ ### ##.# -0x80, 0x00, 0x00, 0x40, 0x08, 0x00, 0x00, 0x80, 0x88, 0x88, //# $ # # #### -0x80, 0x04, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, 0x80, 0x08, //# $ # ### # # # -0x88, 0x08, 0x48, 0x80, 0x00, 0x04, 0x00, 0x44, 0x00, 0x08, //## #$## $ $$ # -0x80, 0x00, 0x40, 0x88, 0x00, 0x08, 0x00, 0x80, 0x80, 0x08, //# $ ## # # # # -0x80, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, //# # # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 325 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x88, 0x88, 0x82, 0x88, 0x81, 0x88, 0x11, 0x18, 0x80, 0x08, //#####@###.##...## # -0x88, 0x88, 0x84, 0x00, 0x11, 0x81, 0x11, 0x80, 0x00, 0x08, //#####$ ..#...# # -0x88, 0x88, 0x00, 0x00, 0x11, 0x11, 0x11, 0x80, 0x04, 0x08, //#### ......# $ # -0x88, 0x80, 0x04, 0x08, 0x11, 0x11, 0x18, 0x80, 0x80, 0x88, //### $ #.....## # ## -0x88, 0x00, 0x44, 0x80, 0x88, 0x88, 0x80, 0x04, 0x04, 0x08, //## $$# ##### $ $ # -0x88, 0x04, 0x80, 0x40, 0x00, 0x08, 0x80, 0x04, 0x40, 0x08, //## $# $ ## $$ # -0x88, 0x00, 0x80, 0x08, 0x00, 0x00, 0x80, 0x40, 0x04, 0x08, //## # # # $ $ # -0x88, 0x00, 0x04, 0x40, 0x88, 0x80, 0x84, 0x88, 0x00, 0x08, //## $$ ### #$## # -0x88, 0x04, 0x80, 0x00, 0x00, 0x04, 0x04, 0x00, 0x40, 0x88, //## $# $ $ $ ## -0x88, 0x80, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x88, //### # # ### -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 326 -0x0B, 0x0B,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -0x80, 0x41, 0x04, 0x01, 0x00, 0x80, //# $. $ . # -0x80, 0x08, 0x00, 0x41, 0x00, 0x80, //# # $. # -0x81, 0x15, 0x11, 0x85, 0x81, 0x80, //#..*..#*#.# -0x84, 0x48, 0x44, 0x41, 0x04, 0x80, //#$$#$$$. $# -0x80, 0x01, 0x42, 0x41, 0x00, 0x80, //# .$@$. # -0x84, 0x01, 0x44, 0x48, 0x44, 0x80, //#$ .$$$#$$# -0x81, 0x85, 0x81, 0x15, 0x11, 0x80, //#.#*#..*..# -0x80, 0x01, 0x40, 0x08, 0x00, 0x80, //# .$ # # -0x80, 0x01, 0x40, 0x41, 0x00, 0x80, //# .$ $. # -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //########### -//Level: 327 -0x12, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### -0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x00, 0x00, // ####### # -0x08, 0x00, 0x00, 0x08, 0x04, 0x24, 0x08, 0x00, 0x00, // # # $@$ # -0x08, 0x44, 0x08, 0x00, 0x08, 0x88, 0x88, 0x88, 0x88, // #$$ # ######### -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x88, 0x00, 0x08, // # ###......## # -0x08, 0x00, 0x04, 0x11, 0x11, 0x11, 0x88, 0x08, 0x08, // # $......## # # -0x08, 0x08, 0x88, 0x11, 0x11, 0x11, 0x00, 0x00, 0x08, // # ###...... # -0x88, 0x00, 0x08, 0x88, 0x80, 0x88, 0x80, 0x84, 0x88, //## #### ### #$## -0x80, 0x08, 0x40, 0x00, 0x80, 0x04, 0x00, 0x80, 0x80, //# #$ # $ # # -0x80, 0x04, 0x04, 0x44, 0x00, 0x80, 0x48, 0x80, 0x80, //# $ $$$ # $## # -0x80, 0x00, 0x40, 0x40, 0x88, 0x84, 0x40, 0x80, 0x80, //# $ $ ###$$ # # -0x88, 0x88, 0x80, 0x00, 0x00, 0x40, 0x00, 0x80, 0x80, //##### $ # # -0x00, 0x00, 0x88, 0x80, 0x88, 0x80, 0x00, 0x80, 0x80, // ### ### # # -0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x80, // # # # -0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, // ######## # -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, // #### -//Level: 328 -0x09, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x00, 0x00, // ##### -0x08, 0x00, 0x08, 0x88, 0x80, // # #### -0x88, 0x08, 0x42, 0x00, 0x80, //## #$@ # -0x80, 0x40, 0x04, 0x40, 0x80, //# $ $$ # -0x80, 0x84, 0x81, 0x51, 0x80, //# #$#.*.# -0x80, 0x00, 0x01, 0x11, 0x80, //# ...# -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 329 -0x08, 0x06,//Size x and y -0x00, 0x88, 0x88, 0x00, // #### -0x88, 0x81, 0x08, 0x00, //###. # -0x80, 0x10, 0x08, 0x88, //# . ### -0x80, 0x00, 0x44, 0x08, //# $$ # -0x88, 0x01, 0x04, 0x28, //## . $@# -0x08, 0x88, 0x88, 0x88, // ####### -//Level: 330 -0x08, 0x07,//Size x and y -0x08, 0x88, 0x88, 0x88, // ####### -0x88, 0x20, 0x00, 0x08, //##@ # -0x81, 0x08, 0x00, 0x08, //#. # # -0x80, 0x44, 0x41, 0x88, //# $$$.## -0x80, 0x18, 0x00, 0x80, //# .# # -0x80, 0x08, 0x88, 0x80, //# #### -0x88, 0x88, 0x00, 0x00, //#### -//Level: 331 -0x09, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x80, 0x00, 0x20, 0x00, 0x80, //# @ # -0x84, 0x44, 0x44, 0x44, 0x80, //#$$$$$$$# -0x81, 0x11, 0x81, 0x11, 0x80, //#...#...# -0x81, 0x11, 0x11, 0x11, 0x80, //#.......# -0x84, 0x44, 0x04, 0x44, 0x80, //#$$$ $$$# -0x80, 0x00, 0x00, 0x00, 0x80, //# # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 332 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x08, 0x88, //## ### -0x80, 0x48, 0x08, 0x88, //# $# ### -0x80, 0x10, 0x28, 0x88, //# . @### -0x80, 0x50, 0x00, 0x88, //# * ## -0x88, 0x08, 0x40, 0x88, //## #$ ## -0x88, 0x10, 0x08, 0x88, //##. ### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 333 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x80, 0x80, 0x80, 0x00, 0x82, 0x88, 0x00, 0x08, 0x08, //# # # # #@## # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x08, //# $ # -0x80, 0x08, 0x84, 0x80, 0x88, 0x88, 0x80, 0x40, 0x80, 0x88, //# ##$# ##### $ # ## -0x88, 0x00, 0x00, 0x88, 0x11, 0x11, 0x18, 0x00, 0x80, 0x08, //## ##.....# # # -0x88, 0x48, 0x84, 0x81, 0x11, 0x11, 0x88, 0x84, 0x84, 0x08, //##$##$#.....###$#$ # -0x80, 0x00, 0x80, 0x88, 0x11, 0x11, 0x18, 0x00, 0x80, 0x88, //# # ##.....# # ## -0x80, 0x04, 0x00, 0x00, 0x88, 0x11, 0x88, 0x00, 0x80, 0x08, //# $ ##..## # # -0x80, 0x40, 0x80, 0x00, 0x40, 0x00, 0x40, 0x04, 0x44, 0x08, //# $ # $ $ $$$ # -0x88, 0x04, 0x00, 0x48, 0x08, 0x00, 0x80, 0x04, 0x00, 0x08, //## $ $# # # $ # -0x80, 0x00, 0x88, 0x00, 0x08, 0x00, 0x80, 0x00, 0x00, 0x08, //# ## # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 334 -0x12, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # -0x81, 0x18, 0x00, 0x80, 0x40, 0x40, 0x40, 0x88, 0x08, //#..# # $ $ $ ## # -0x81, 0x18, 0x08, 0x88, 0x08, 0x08, 0x00, 0x80, 0x08, //#..# ### # # # # -0x81, 0x18, 0x08, 0x04, 0x48, 0x88, 0x48, 0x84, 0x08, //#..# # $$###$##$ # -0x81, 0x18, 0x00, 0x00, 0x00, 0x04, 0x24, 0x04, 0x08, //#..# $@$ $ # -0x81, 0x10, 0x04, 0x80, 0x40, 0x80, 0x44, 0x08, 0x08, //#.. $# $ # $$ # # -0x80, 0x08, 0x00, 0x80, 0x08, 0x88, 0x00, 0x08, 0x08, //# # # ### # # -0x80, 0x00, 0x08, 0x88, 0x00, 0x80, 0x08, 0x88, 0x08, //# ### # ### # -0x81, 0x18, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x08, //#..# $ $ # -0x81, 0x18, 0x08, 0x84, 0x00, 0x80, 0x08, 0x04, 0x08, //#..# ##$ # # $ # -0x81, 0x18, 0x00, 0x80, 0x08, 0x88, 0x08, 0x80, 0x08, //#..# # ### ## # -0x81, 0x18, 0x00, 0x88, 0x44, 0x08, 0x48, 0x84, 0x08, //#..# ##$$ #$##$ # -0x81, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //################## -//Level: 335 -0x13, 0x10,//Size x and y -0x08, 0x88, 0x88, 0x80, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, // ###### #### -0x08, 0x00, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, 0x00, 0x00, // # ###### # -0x08, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, // #@# $ ## -0x88, 0x88, 0x84, 0x04, 0x08, 0x88, 0x80, 0x08, 0x80, 0x00, //#####$ $ #### ## -0x80, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x00, //# $ # ## -0x80, 0x04, 0x40, 0x80, 0x88, 0x48, 0x88, 0x44, 0x08, 0x00, //# $$ # ##$###$$ # -0x80, 0x00, 0x00, 0x45, 0x15, 0x11, 0x80, 0x00, 0x08, 0x00, //# $*.*..# # -0x88, 0x88, 0x88, 0x81, 0x11, 0x15, 0x80, 0x40, 0x08, 0x00, //#######....*# $ # -0x00, 0x00, 0x00, 0x85, 0x11, 0x51, 0x80, 0x84, 0x88, 0x00, // #*..*.# #$## -0x00, 0x00, 0x00, 0x81, 0x11, 0x15, 0x04, 0x00, 0x08, 0x00, // #....* $ # -0x00, 0x00, 0x00, 0x81, 0x11, 0x11, 0x80, 0x44, 0x48, 0x00, // #.....# $$$# -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x80, 0x80, 0x08, 0x80, // ##### # # ## -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x80, // # # $ $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x80, // # $ # -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x88, 0x00, 0x80, // # ### # -0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x08, 0x88, 0x80, // #### #### -//Level: 336 -0x09, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x88, 0x00, // ##### -0x88, 0x88, 0x10, 0x08, 0x80, //####. ## -0x80, 0x41, 0x41, 0x00, 0x80, //# $.$. # -0x82, 0x48, 0x08, 0x40, 0x80, //#@$# #$ # -0x80, 0x41, 0x01, 0x00, 0x80, //# $. . # -0x88, 0x88, 0x48, 0x40, 0x80, //####$#$ # -0x00, 0x81, 0x01, 0x00, 0x80, // #. . # -0x00, 0x88, 0x88, 0x88, 0x80, // ####### -//Level: 337 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x80, 0x00, 0x00, 0x80, //# # -0x81, 0x88, 0x01, 0x80, //#.## .# -0x85, 0x00, 0x42, 0x80, //#* $@# -0x80, 0x08, 0x40, 0x80, //# #$ # -0x80, 0x08, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 338 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //#### -0x80, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //# ############## -0x80, 0x08, 0x00, 0x01, 0x18, 0x11, 0x11, 0x11, 0x80, 0x00, //# # ..#......# -0x80, 0x08, 0x08, 0x08, 0x88, 0x88, 0x01, 0x11, 0x80, 0x00, //# # # ##### ...# -0x88, 0x48, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x80, 0x00, //##$# ........# -0x80, 0x00, 0x88, 0x48, 0x88, 0x88, 0x80, 0x08, 0x88, 0x80, //# ##$###### #### -0x80, 0x40, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x20, 0x80, //# $ # ######@ # -0x88, 0x40, 0x80, 0x40, 0x00, 0x88, 0x88, 0x88, 0x00, 0x80, //##$ # $ ###### # -0x80, 0x04, 0x08, 0x44, 0x48, 0x80, 0x00, 0x00, 0x00, 0x80, //# $ #$$$## # -0x80, 0x00, 0x00, 0x08, 0x00, 0x00, 0x84, 0x84, 0x88, 0x80, //# # #$#$### -0x80, 0x88, 0x88, 0x08, 0x44, 0x44, 0x40, 0x00, 0x08, 0x00, //# #### #$$$$$ # -0x80, 0x80, 0x00, 0x04, 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, //# # $ # # -0x80, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x88, 0x80, //# # ## ### -0x80, 0x88, 0x88, 0x88, 0x48, 0x88, 0x88, 0x80, 0x40, 0x80, //# ######$###### $ # -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x80, //# # # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, //########## ##### -//Level: 339 -0x14, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, 0x00, //############ -0x80, 0x00, 0x00, 0x08, 0x00, 0x08, 0x80, 0x00, 0x00, 0x00, //# # ## -0x80, 0x40, 0x04, 0x00, 0x08, 0x00, 0x88, 0x88, 0x88, 0x00, //# $ $ # ###### -0x88, 0x88, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x08, 0x00, //#### ##### # -0x08, 0x11, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x08, 0x00, // #.. # #### # -0x08, 0x18, 0x88, 0x80, 0x08, 0x88, 0x80, 0x00, 0x08, 0x00, // #.#### #### # -0x08, 0x11, 0x11, 0x00, 0x00, 0x80, 0x04, 0x08, 0x88, 0x80, // #.... # $ #### -0x08, 0x01, 0x11, 0x80, 0x00, 0x80, 0x44, 0x48, 0x00, 0x88, // # ...# # $$$# ## -0x88, 0x81, 0x88, 0x88, 0x08, 0x80, 0x04, 0x24, 0x00, 0x08, //###.#### ## $@$ # -0x80, 0x00, 0x00, 0x88, 0x88, 0x80, 0x40, 0x80, 0x00, 0x08, //# ##### $ # # -0x80, 0x81, 0x80, 0x40, 0x00, 0x00, 0x04, 0x88, 0x84, 0x08, //# #.# $ $###$ # -0x80, 0x81, 0x88, 0x88, 0x88, 0x88, 0x00, 0x80, 0x04, 0x08, //# #.######## # $ # -0x80, 0x81, 0x10, 0x00, 0x00, 0x00, 0x08, 0x80, 0x04, 0x08, //# #.. ## $ # -0x80, 0x80, 0x88, 0x88, 0x88, 0x80, 0x40, 0x80, 0x80, 0x08, //# # ####### $ # # # -0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x88, //# # # ## -0x88, 0x88, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, //##### ########## -//Level: 340 -0x09, 0x09,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -0x88, 0x00, 0x50, 0x08, 0x80, //## * ## -0x80, 0x12, 0x10, 0x10, 0x80, //# .@. . # -0x80, 0x40, 0x50, 0x00, 0x80, //# $ * # -0x85, 0x44, 0x54, 0x45, 0x80, //#*$$*$$*# -0x80, 0x00, 0x50, 0x40, 0x80, //# * $ # -0x80, 0x10, 0x10, 0x10, 0x80, //# . . . # -0x88, 0x00, 0x50, 0x08, 0x80, //## * ## -0x08, 0x88, 0x88, 0x88, 0x00, // ####### -//Level: 341 -0x14, 0x0C,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x00, 0x88, 0x81, 0x18, 0x88, 0x00, 0x00, 0x08, //# ###..### # -0x80, 0x44, 0x00, 0x88, 0x81, 0x18, 0x88, 0x00, 0x42, 0x08, //# $$ ###..### $@ # -0x80, 0x08, 0x08, 0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, //# # ##......# $ # -0x80, 0x00, 0x00, 0x81, 0x11, 0x11, 0x18, 0x00, 0x40, 0x08, //# #......# $ # -0x88, 0x88, 0x00, 0x88, 0x81, 0x18, 0x88, 0x88, 0x84, 0x08, //#### ###..######$ # -0x80, 0x00, 0x44, 0x40, 0x81, 0x18, 0x00, 0x00, 0x80, 0x08, //# $$$ #..# # # -0x80, 0x48, 0x00, 0x04, 0x00, 0x40, 0x04, 0x40, 0x84, 0x08, //# $# $ $ $$ #$ # -0x80, 0x08, 0x00, 0x88, 0x04, 0x00, 0x88, 0x00, 0x80, 0x08, //# # ## $ ## # # -0x80, 0x40, 0x00, 0x04, 0x08, 0x80, 0x40, 0x00, 0x04, 0x08, //# $ $ ## $ $ # -0x80, 0x08, 0x00, 0x88, 0x00, 0x00, 0x88, 0x00, 0x80, 0x08, //# # ## ## # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 342 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x00, 0x28, 0x80, //# @## -0x80, 0x08, 0x00, 0x80, //# # # -0x81, 0x00, 0x40, 0x80, //#. $ # -0x80, 0x44, 0x81, 0x80, //# $$#.# -0x88, 0x80, 0x01, 0x80, //### .# -0x00, 0x88, 0x88, 0x80, // ##### -//Level: 343 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x01, 0x08, //#. . # -0x80, 0x80, 0x80, 0x08, //# # # # -0x82, 0x40, 0x04, 0x18, //#@$ $.# -0x88, 0x88, 0x80, 0x48, //##### $# -0x88, 0x88, 0x80, 0x08, //##### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 344 -0x0E, 0x0A,//Size x and y -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, //#### #### -0x81, 0x18, 0x88, 0x88, 0x88, 0x81, 0x18, //#..########..# -0x85, 0x15, 0x11, 0x11, 0x15, 0x15, 0x18, //#*.*.....*.*.# -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, //# $ $ $ $ $ $# -0x84, 0x04, 0x04, 0x24, 0x04, 0x04, 0x08, //#$ $ $@$ $ $ # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x48, //# $ $ $ $ $ $# -0x84, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, //#$ $ $ $ $ $ # -0x81, 0x51, 0x51, 0x11, 0x11, 0x51, 0x58, //#.*.*.....*.*# -0x81, 0x18, 0x88, 0x88, 0x88, 0x81, 0x18, //#..########..# -0x88, 0x88, 0x00, 0x00, 0x00, 0x88, 0x88, //#### #### -//Level: 345 -0x08, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x01, 0x80, 0x28, //# .# @# -0x80, 0x80, 0x40, 0x08, //# # $ # -0x80, 0x41, 0x84, 0x08, //# $.#$ # -0x88, 0x01, 0x00, 0x08, //## . # -0x08, 0x00, 0x88, 0x88, // # #### -0x08, 0x88, 0x80, 0x00, // #### -//Level: 346 -0x13, 0x10,//Size x and y -0x08, 0x88, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ### ############# -0x88, 0x28, 0x88, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, //##@#### # # -0x80, 0x44, 0x00, 0x04, 0x40, 0x04, 0x04, 0x01, 0x11, 0x80, //# $$ $$ $ $ ...# -0x80, 0x04, 0x44, 0x80, 0x00, 0x04, 0x00, 0x81, 0x11, 0x80, //# $$$# $ #...# -0x80, 0x40, 0x00, 0x80, 0x44, 0x04, 0x40, 0x81, 0x11, 0x80, //# $ # $$ $$ #...# -0x88, 0x80, 0x00, 0x80, 0x04, 0x00, 0x00, 0x81, 0x11, 0x80, //### # $ #...# -0x80, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x81, 0x11, 0x80, //# # $ $ $ #...# -0x80, 0x00, 0x08, 0x88, 0x88, 0x80, 0x88, 0x81, 0x11, 0x80, //# ###### ###...# -0x88, 0x08, 0x00, 0x80, 0x04, 0x04, 0x00, 0x81, 0x11, 0x80, //## # # $ $ #...# -0x80, 0x08, 0x80, 0x80, 0x44, 0x04, 0x04, 0x88, 0x11, 0x80, //# ## # $$ $ $##..# -0x80, 0x11, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x81, 0x80, //# ..# # $ #.# -0x80, 0x11, 0x80, 0x80, 0x44, 0x40, 0x44, 0x40, 0x81, 0x80, //# ..# # $$$ $$$ #.# -0x88, 0x88, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x81, 0x80, //##### # # #.# -0x00, 0x00, 0x80, 0x88, 0x88, 0x88, 0x88, 0x80, 0x81, 0x80, // # ######### #.# -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x80, // # #.# -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ############### -//Level: 347 -0x13, 0x10,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ########## -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, //##### #### -0x80, 0x00, 0x00, 0x80, 0x00, 0x40, 0x08, 0x20, 0x80, 0x00, //# # $ #@ # -0x80, 0x88, 0x88, 0x88, 0x84, 0x88, 0x88, 0x00, 0x88, 0x80, //# #######$#### ### -0x80, 0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x40, 0x11, 0x80, //# # ## # #$ ..# -0x80, 0x80, 0x40, 0x00, 0x00, 0x80, 0x08, 0x00, 0x81, 0x80, //# # $ # # #.# -0x80, 0x80, 0x40, 0x08, 0x00, 0x00, 0x08, 0x40, 0x11, 0x80, //# # $ # #$ ..# -0x80, 0x80, 0x08, 0x88, 0x08, 0x80, 0x00, 0x00, 0x81, 0x80, //# # ### ## #.# -0x80, 0x88, 0x80, 0x08, 0x00, 0x80, 0x08, 0x40, 0x11, 0x80, //# ### # # #$ ..# -0x80, 0x80, 0x00, 0x08, 0x00, 0x88, 0x88, 0x00, 0x81, 0x80, //# # # #### #.# -0x80, 0x84, 0x00, 0x04, 0x00, 0x40, 0x08, 0x40, 0x11, 0x80, //# #$ $ $ #$ ..# -0x80, 0x00, 0x04, 0x08, 0x04, 0x04, 0x08, 0x00, 0x81, 0x80, //# $ # $ $ # #.# -0x88, 0x88, 0x04, 0x88, 0x80, 0x00, 0x08, 0x40, 0x11, 0x80, //#### $### #$ ..# -0x00, 0x08, 0x00, 0x00, 0x44, 0x08, 0x88, 0x11, 0x11, 0x80, // # $$ ###....# -0x00, 0x08, 0x00, 0x00, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, // # ## ###### -0x00, 0x08, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ######## -//Level: 348 -0x08, 0x08,//Size x and y -0x00, 0x08, 0x88, 0x80, // #### -0x00, 0x08, 0x00, 0x80, // # # -0x88, 0x88, 0x04, 0x88, //#### $## -0x80, 0x24, 0x10, 0x08, //# @$. # -0x80, 0x88, 0x00, 0x08, //# ## # -0x80, 0x00, 0x88, 0x08, //# ## # -0x80, 0x00, 0x50, 0x18, //# * .# -0x88, 0x88, 0x88, 0x88, //######## -//Level: 349 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x08, 0x88, 0x88, //# ##### -0x80, 0x15, 0x00, 0x08, //# .* # -0x88, 0x40, 0x00, 0x08, //##$ # -0x88, 0x08, 0x48, 0x88, //## #$### -0x88, 0x10, 0x28, 0x88, //##. @### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 350 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x00, 0x40, 0x10, 0x80, //#@ $ . # -0x80, 0x40, 0x41, 0x40, 0x80, //# $ $.$ # -0x81, 0x51, 0x51, 0x51, 0x80, //#.*.*.*.# -0x80, 0x41, 0x40, 0x40, 0x80, //# $.$ $ # -0x80, 0x10, 0x40, 0x00, 0x80, //# . $ # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 351 -0x07, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x80, //####### -0x81, 0x01, 0x01, 0x80, //#. . .# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x81, 0x42, 0x41, 0x80, //#.$@$.# -0x80, 0x44, 0x40, 0x80, //# $$$ # -0x81, 0x01, 0x01, 0x80, //#. . .# -0x88, 0x88, 0x88, 0x80, //####### -//Level: 352 -0x09, 0x07,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x80, //######### -0x82, 0x01, 0x00, 0x00, 0x80, //#@ . # -0x80, 0x44, 0x14, 0x40, 0x80, //# $$.$$ # -0x81, 0x51, 0x11, 0x51, 0x80, //#.*...*.# -0x80, 0x44, 0x14, 0x40, 0x80, //# $$.$$ # -0x80, 0x41, 0x00, 0x00, 0x80, //# $. # -0x88, 0x88, 0x88, 0x88, 0x80, //######### -//Level: 353 -0x14, 0x0F,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x80, 0x00, 0x08, 0x80, 0x00, 0x80, 0x00, 0x08, 0x00, 0x08, //# ## # # # -0x80, 0x04, 0x00, 0x40, 0x00, 0x00, 0x88, 0x04, 0x00, 0x08, //# $ $ ## $ # -0x88, 0x08, 0x88, 0x88, 0x00, 0x18, 0x88, 0x88, 0x80, 0x88, //## ##### .###### ## -0x08, 0x08, 0x80, 0x08, 0x81, 0x11, 0x18, 0x88, 0x80, 0x88, // # ## ##....#### ## -0x88, 0x08, 0x84, 0x08, 0x88, 0x11, 0x88, 0x00, 0x00, 0x08, //## ##$ ###..## # -0x80, 0x00, 0x00, 0x08, 0x11, 0x10, 0x18, 0x04, 0x04, 0x08, //# #... .# $ $ # -0x80, 0x40, 0x88, 0x08, 0x80, 0x10, 0x88, 0x80, 0x88, 0x88, //# $ ## ## . ### #### -0x80, 0x80, 0x40, 0x00, 0x08, 0x18, 0x80, 0x80, 0x80, 0x00, //# # $ #.## # # -0x80, 0x40, 0x40, 0x80, 0x00, 0x18, 0x88, 0x80, 0x88, 0x00, //# $ $ # .#### ## -0x80, 0x80, 0x08, 0x80, 0x80, 0x88, 0x00, 0x80, 0x08, 0x80, //# # ## # ## # ## -0x88, 0x88, 0x88, 0x80, 0x04, 0x88, 0x40, 0x00, 0x40, 0x80, //####### $##$ $ # -0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x40, 0x82, 0x80, // ## $ #@# -0x00, 0x00, 0x00, 0x08, 0x00, 0x88, 0x08, 0x88, 0x88, 0x80, // # ## ###### -0x00, 0x00, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x00, 0x00, // ####### -//Level: 354 -0x0D, 0x10,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, // ######### -0x00, 0x85, 0x15, 0x85, 0x15, 0x80, 0x00, // #*.*#*.*# -0x00, 0x81, 0x51, 0x51, 0x51, 0x80, 0x00, // #.*.*.*.# -0x00, 0x85, 0x15, 0x15, 0x15, 0x80, 0x00, // #*.*.*.*# -0x00, 0x81, 0x51, 0x51, 0x51, 0x80, 0x00, // #.*.*.*.# -0x00, 0x85, 0x15, 0x15, 0x15, 0x80, 0x00, // #*.*.*.*# -0x00, 0x88, 0x80, 0x00, 0x88, 0x80, 0x00, // ### ### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, // # # -0x88, 0x88, 0x88, 0x08, 0x88, 0x88, 0x80, //###### ###### -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, //# # -0x80, 0x40, 0x40, 0x40, 0x40, 0x40, 0x80, //# $ $ $ $ $ # -0x88, 0x04, 0x04, 0x04, 0x04, 0x08, 0x80, //## $ $ $ $ ## -0x08, 0x40, 0x40, 0x40, 0x40, 0x48, 0x00, // #$ $ $ $ $# -0x08, 0x00, 0x04, 0x24, 0x00, 0x08, 0x00, // # $@$ # -0x08, 0x00, 0x88, 0x88, 0x80, 0x08, 0x00, // # ##### # -0x08, 0x88, 0x80, 0x00, 0x88, 0x88, 0x00, // #### #### -//Level: 355 -0x05, 0x08,//Size x and y -0x88, 0x88, 0x00, //#### -0x80, 0x28, 0x00, //# @# -0x80, 0x48, 0x80, //# $## -0x80, 0x41, 0x80, //# $.# -0x80, 0x41, 0x80, //# $.# -0x80, 0x41, 0x80, //# $.# -0x88, 0x81, 0x80, //###.# -0x00, 0x88, 0x80, // ### -//Level: 356 -0x0D, 0x0A,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, //########### -0x82, 0x40, 0x00, 0x11, 0x11, 0x88, 0x00, //#@$ ....## -0x80, 0x44, 0x44, 0x81, 0x11, 0x18, 0x00, //# $$$$#....# -0x80, 0x40, 0x04, 0x11, 0x55, 0x58, 0x80, //# $ $..***## -0x88, 0x00, 0x08, 0x08, 0x81, 0x10, 0x80, //## # ##.. # -0x80, 0x44, 0x48, 0x00, 0x88, 0x00, 0x80, //# $$$# ## # -0x80, 0x00, 0x08, 0x80, 0x80, 0x08, 0x80, //# ## # ## -0x80, 0x04, 0x40, 0x80, 0x00, 0x08, 0x00, //# $$ # # -0x80, 0x00, 0x00, 0x88, 0x80, 0x08, 0x00, //# ### # -0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x00, //####### #### -//Level: 357 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x01, 0x88, 0x88, //#. .#### -0x81, 0x84, 0x40, 0x88, //#.#$$ ## -0x80, 0x00, 0x20, 0x88, //# @ ## -0x80, 0x48, 0x00, 0x88, //# $# ## -0x88, 0x00, 0x08, 0x88, //## ### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 358 -0x13, 0x13,//Size x and y -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // # # # # # # # # # -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, //# # # # # # # #.# # -0x08, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x04, 0x18, 0x00, // #... $.# -0x80, 0x04, 0x84, 0x00, 0x80, 0x80, 0x80, 0x40, 0x00, 0x80, //# $#$ # # # $ # -0x08, 0x10, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x18, 0x00, // #. $ # # # # $.# -0x80, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, //# # $ # # # -0x08, 0x00, 0x08, 0x00, 0x88, 0x88, 0x80, 0x08, 0x08, 0x00, // # # ##### # # -0x80, 0x00, 0x80, 0x08, 0x00, 0x00, 0x08, 0x08, 0x00, 0x80, //# # # # # # -0x08, 0x08, 0x00, 0x80, 0x08, 0x88, 0x08, 0x08, 0x08, 0x00, // # # # ### # # # -0x80, 0x01, 0x40, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, //# .$ . # # -0x08, 0x08, 0x40, 0x80, 0x80, 0x08, 0x08, 0x08, 0x08, 0x00, // # #$ # # # # # # -0x80, 0x08, 0x00, 0x80, 0x08, 0x48, 0x08, 0x08, 0x00, 0x80, //# # # #$# # # # -0x08, 0x01, 0x80, 0x08, 0x00, 0x08, 0x08, 0x08, 0x28, 0x00, // # .# # # # #@# -0x80, 0x00, 0x08, 0x00, 0x88, 0x80, 0x48, 0x08, 0x00, 0x80, //# # ### $# # # -0x08, 0x04, 0x40, 0x80, 0x00, 0x00, 0x41, 0x18, 0x48, 0x00, // # $$ # $..#$# -0x80, 0x81, 0x00, 0x08, 0x88, 0x88, 0x84, 0x88, 0x10, 0x80, //# #. ######$##. # -0x08, 0x08, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x18, 0x00, // # #.$ . .# -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //# # # # # # # # # # -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // # # # # # # # # # -//Level: 359 -0x14, 0x11,//Size x and y -0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, // ################## -0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x11, 0x81, 0x88, // # $ ...#.## -0x08, 0x00, 0x00, 0x00, 0x08, 0x88, 0x81, 0x11, 0x11, 0x08, // # ####..... # -0x08, 0x08, 0x88, 0x88, 0x88, 0x00, 0x81, 0x11, 0x11, 0x08, // # ####### #..... # -0x08, 0x08, 0x00, 0x00, 0x40, 0x40, 0x88, 0x11, 0x11, 0x88, // # # $ $ ##....## -0x08, 0x08, 0x00, 0x40, 0x80, 0x80, 0x88, 0x81, 0x11, 0x80, // # # $ # # ###...# -0x08, 0x08, 0x04, 0x24, 0x04, 0x00, 0x88, 0x88, 0x80, 0x80, // # # $@$ $ ##### # -0x88, 0x08, 0x00, 0x40, 0x04, 0x04, 0x40, 0x00, 0x40, 0x80, //## # $ $ $$ $ # -0x80, 0x08, 0x48, 0x04, 0x80, 0x00, 0x80, 0x48, 0x80, 0x80, //# #$# $# # $## # -0x80, 0x88, 0x00, 0x00, 0x88, 0x08, 0x80, 0x40, 0x80, 0x80, //# ## ## ## $ # # -0x80, 0x80, 0x48, 0x04, 0x04, 0x00, 0x80, 0x00, 0x00, 0x80, //# # $# $ $ # # -0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x88, 0x80, //# # ####### -0x80, 0x88, 0x88, 0x88, 0x88, 0x48, 0x80, 0x00, 0x80, 0x00, //# ########$## # -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0x00, 0x80, 0x00, //# # $ # -0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, //######## ##### -0x00, 0x00, 0x00, 0x08, 0x88, 0x00, 0x80, 0x00, 0x00, 0x00, // ### # -0x00, 0x00, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, 0x00, // #### -//Level: 360 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x88, 0x88, //#. #### -0x80, 0x80, 0x00, 0x88, //# # ## -0x80, 0x10, 0x80, 0x88, //# . # ## -0x80, 0x45, 0x40, 0x88, //# $*$ ## -0x88, 0x20, 0x88, 0x88, //##@ #### -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -//Level: 361 -0x13, 0x11,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, // ## ## -0x00, 0x00, 0x88, 0x00, 0x50, 0x08, 0x80, 0x00, 0x00, 0x00, // ## * ## -0x00, 0x08, 0x80, 0x05, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, // ## * * ## -0x00, 0x88, 0x00, 0x50, 0x50, 0x50, 0x08, 0x80, 0x00, 0x00, // ## * * * ## -0x08, 0x80, 0x05, 0x05, 0x05, 0x05, 0x00, 0x88, 0x88, 0x00, // ## * * * * #### -0x88, 0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x08, 0x08, 0x80, //## * * * * * # ## -0x80, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x80, //# * * * * * * # -0x80, 0x50, 0x50, 0x50, 0x10, 0x50, 0x50, 0x52, 0x40, 0x80, //# * * * . * * *@$ # -0x80, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x00, 0x00, 0x80, //# * * * * * * # -0x88, 0x00, 0x50, 0x50, 0x50, 0x50, 0x50, 0x08, 0x08, 0x80, //## * * * * * # ## -0x08, 0x80, 0x05, 0x05, 0x05, 0x05, 0x00, 0x88, 0x88, 0x00, // ## * * * * #### -0x00, 0x88, 0x00, 0x50, 0x50, 0x50, 0x08, 0x80, 0x00, 0x00, // ## * * * ## -0x00, 0x08, 0x80, 0x05, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00, // ## * * ## -0x00, 0x00, 0x88, 0x00, 0x50, 0x08, 0x80, 0x00, 0x00, 0x00, // ## * ## -0x00, 0x00, 0x08, 0x80, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, // ## ## -0x00, 0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ##### -//Level: 362 -0x07, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x00, //###### -0x80, 0x10, 0x08, 0x00, //# . # -0x80, 0x08, 0x28, 0x00, //# #@# -0x80, 0x04, 0x08, 0x80, //# $ ## -0x88, 0x48, 0x00, 0x80, //##$# # -0x80, 0x00, 0x80, 0x80, //# # # -0x81, 0x05, 0x00, 0x80, //#. * # -0x88, 0x88, 0x88, 0x80, //####### -//Level: 363 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x00, 0x12, 0x08, //## .@ # -0x88, 0x08, 0x18, 0x08, //## #.# # -0x88, 0x00, 0x04, 0x08, //## $ # -0x88, 0x14, 0x40, 0x88, //##.$$ ## -0x88, 0x00, 0x88, 0x88, //## #### -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 364 -0x13, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x00, 0x00, 0x08, 0x88, 0x80, 0x00, 0x00, //###### #### -0x80, 0x00, 0x08, 0x88, 0x88, 0x88, 0x00, 0x88, 0x88, 0x80, //# ####### ##### -0x80, 0x00, 0x48, 0x00, 0x80, 0x04, 0x00, 0x80, 0x00, 0x80, //# $# # $ # # -0x80, 0x04, 0x00, 0x40, 0x04, 0x08, 0x04, 0x04, 0x00, 0x80, //# $ $ $ # $ $ # -0x88, 0x40, 0x40, 0x00, 0x80, 0x28, 0x04, 0x00, 0x00, 0x80, //##$ $ # @# $ # -0x80, 0x04, 0x08, 0x88, 0x88, 0x88, 0x88, 0x88, 0x08, 0x80, //# $ ########### ## -0x80, 0x80, 0x00, 0x81, 0x11, 0x11, 0x11, 0x80, 0x48, 0x00, //# # #.......# $# -0x80, 0x88, 0x00, 0x80, 0x11, 0x11, 0x11, 0x80, 0x08, 0x00, //# ## # ......# # -0x80, 0x80, 0x00, 0x41, 0x11, 0x11, 0x11, 0x14, 0x08, 0x00, //# # $........$ # -0x80, 0x80, 0x40, 0x81, 0x11, 0x10, 0x11, 0x80, 0x08, 0x00, //# # $ #.... ..# # -0x80, 0x04, 0x04, 0x88, 0x88, 0x48, 0x88, 0x80, 0x48, 0x00, //# $ $####$#### $# -0x80, 0x40, 0x00, 0x88, 0x80, 0x40, 0x00, 0x40, 0x08, 0x80, //# $ ### $ $ ## -0x80, 0x40, 0x00, 0x00, 0x40, 0x40, 0x04, 0x00, 0x00, 0x80, //# $ $ $ $ # -0x88, 0x08, 0x88, 0x88, 0x80, 0x40, 0x88, 0x88, 0x80, 0x80, //## ###### $ ##### # -0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################### -//Level: 365 -0x14, 0x12,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x80, 0x88, 0x88, 0x88, 0x00, 0x00, // ####### ###### -0x08, 0x80, 0x00, 0x00, 0x88, 0x80, 0x00, 0x08, 0x00, 0x00, // ## ### # -0x08, 0x00, 0x88, 0x80, 0x00, 0x80, 0x44, 0x08, 0x88, 0x00, // # ### # $$ ### -0x08, 0x08, 0x02, 0x08, 0x00, 0x80, 0x04, 0x00, 0x08, 0x00, // # # @ # # $ # -0x08, 0x08, 0x44, 0x48, 0x08, 0x88, 0x84, 0x88, 0x08, 0x88, // # #$$$# ####$## ### -0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, 0x11, 0x18, //## $ #...# -0x80, 0x08, 0x48, 0x48, 0x80, 0x08, 0x00, 0x08, 0x11, 0x18, //# #$#$## # #...# -0x80, 0x80, 0x04, 0x00, 0x80, 0x80, 0x88, 0x08, 0x11, 0x18, //# # $ # # ## #...# -0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x08, 0x11, 0x18, //# # # # #...# -0x80, 0x08, 0x44, 0x48, 0x80, 0x84, 0x00, 0x08, 0x11, 0x18, //# #$$$## #$ #...# -0x88, 0x00, 0x00, 0x00, 0x00, 0x04, 0x48, 0x88, 0x11, 0x18, //## $$###...# -0x08, 0x08, 0x48, 0x48, 0x80, 0x84, 0x00, 0x00, 0x11, 0x18, // # #$#$## #$ ...# -0x08, 0x08, 0x00, 0x00, 0x80, 0x80, 0x40, 0x00, 0x11, 0x18, // # # # # $ ...# -0x08, 0x08, 0x00, 0x00, 0x80, 0x80, 0x08, 0x88, 0x88, 0x88, // # # # # ####### -0x08, 0x08, 0x44, 0x48, 0x80, 0x80, 0x08, 0x00, 0x00, 0x00, // # #$$$## # # -0x08, 0x00, 0x00, 0x00, 0x00, 0x88, 0x88, 0x00, 0x00, 0x00, // # #### -0x08, 0x88, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ### ### -0x00, 0x08, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ###### -//Level: 366 -0x0E, 0x10,//Size x and y -0x00, 0x00, 0x00, 0x88, 0x80, 0x00, 0x00, // ### -0x08, 0x88, 0x88, 0x82, 0x88, 0x88, 0x80, // ######@##### -0x08, 0x11, 0x11, 0x11, 0x11, 0x11, 0x80, // #..........# -0x88, 0x15, 0x55, 0x55, 0x55, 0x51, 0x88, //##.********.## -0x81, 0x15, 0x11, 0x11, 0x11, 0x51, 0x18, //#..*......*..# -0x81, 0x15, 0x15, 0x55, 0x51, 0x51, 0x18, //#..*.****.*..# -0x88, 0x88, 0x88, 0x11, 0x88, 0x88, 0x88, //######..###### -0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, // # # -0x08, 0x04, 0x04, 0x44, 0x40, 0x40, 0x80, // # $ $$$$ $ # -0x08, 0x44, 0x40, 0x00, 0x04, 0x44, 0x80, // #$$$ $$$# -0x08, 0x00, 0x04, 0x44, 0x40, 0x00, 0x80, // # $$$$ # -0x08, 0x40, 0x40, 0x00, 0x04, 0x04, 0x80, // #$ $ $ $# -0x88, 0x00, 0x04, 0x44, 0x40, 0x00, 0x88, //## $$$$ ## -0x80, 0x44, 0x40, 0x00, 0x04, 0x44, 0x08, //# $$$ $$$ # -0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, //# # # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //############## -//Level: 367 -0x14, 0x10,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -0x81, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x08, //#..# # # -0x81, 0x40, 0x04, 0x00, 0x84, 0x40, 0x04, 0x88, 0x04, 0x88, //#.$ $ #$$ $## $## -0x81, 0x48, 0x00, 0x88, 0x80, 0x08, 0x80, 0x88, 0x00, 0x08, //#.$# ### ## ## # -0x80, 0x08, 0x04, 0x08, 0x00, 0x44, 0x00, 0x04, 0x00, 0x08, //# # $ # $$ $ # -0x80, 0x88, 0x80, 0x08, 0x08, 0x00, 0x84, 0x00, 0x88, 0x88, //# ### # # #$ #### -0x80, 0x08, 0x80, 0x80, 0x40, 0x00, 0x82, 0x08, 0x00, 0x08, //# ## # $ #@ # # -0x80, 0x40, 0x00, 0x04, 0x00, 0x88, 0x18, 0x80, 0x04, 0x08, //# $ $ ##.## $ # -0x80, 0x08, 0x04, 0x80, 0x48, 0x04, 0x00, 0x00, 0x08, 0x88, //# # $# $# $ ### -0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x08, 0x88, 0x00, 0x08, //# # # # ### # -0x80, 0x08, 0x88, 0x88, 0x88, 0x80, 0x80, 0x00, 0x00, 0x08, //# ######## # # -0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x08, 0x18, 0x18, //# # #.#.# -0x88, 0x48, 0x88, 0x88, 0x88, 0x84, 0x80, 0x00, 0x11, 0x18, //##$########$# ...# -0x80, 0x00, 0x01, 0x50, 0x08, 0x00, 0x00, 0x88, 0x18, 0x18, //# .* # ##.#.# -0x80, 0x15, 0x11, 0x15, 0x00, 0x04, 0x00, 0x11, 0x11, 0x18, //# .*...* $ .....# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, //#################### -//Level: 368 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x81, 0x00, 0x21, 0x88, //#. @.## -0x80, 0x04, 0x80, 0x88, //# $# ## -0x80, 0x80, 0x41, 0x08, //# # $. # -0x80, 0x00, 0x48, 0x08, //# $# # -0x88, 0x88, 0x00, 0x08, //#### # -0x88, 0x88, 0x88, 0x88, //######## -//Level: 369 -0x0B, 0x09,//Size x and y -0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // ######### -0x88, 0x80, 0x00, 0x80, 0x00, 0x80, //### # # -0x80, 0x04, 0x10, 0x50, 0x40, 0x80, //# $. * $ # -0x80, 0x81, 0x81, 0x81, 0x80, 0x80, //# #.#.#.# # -0x80, 0x40, 0x42, 0x40, 0x40, 0x80, //# $ $@$ $ # -0x80, 0x81, 0x81, 0x81, 0x80, 0x80, //# #.#.#.# # -0x80, 0x40, 0x50, 0x14, 0x00, 0x80, //# $ * .$ # -0x80, 0x00, 0x88, 0x88, 0x88, 0x80, //# ####### -0x88, 0x88, 0x80, 0x00, 0x00, 0x00, //##### -//Level: 370 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x80, 0x01, 0x08, //### . # -0x88, 0x05, 0x08, 0x08, //## * # # -0x88, 0x01, 0x40, 0x08, //## .$ # -0x88, 0x00, 0x84, 0x88, //## #$## -0x88, 0x80, 0x20, 0x88, //### @ ## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 371 -0x08, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, //######## -0x80, 0x11, 0x88, 0x88, //# ..#### -0x80, 0x40, 0x00, 0x08, //# $ # -0x80, 0x08, 0x48, 0x08, //# #$# # -0x80, 0x20, 0x14, 0x08, //# @ .$ # -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -0x88, 0x88, 0x88, 0x88, //######## -//Level: 372 -0x0B, 0x08,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -0x80, 0x00, 0x00, 0x00, 0x08, 0x80, //# ## -0x80, 0x48, 0x48, 0x48, 0x42, 0x80, //# $#$#$#$@# -0x81, 0x01, 0x41, 0x11, 0x41, 0x80, //#. .$...$.# -0x81, 0x01, 0x41, 0x11, 0x41, 0x80, //#. .$...$.# -0x80, 0x48, 0x48, 0x48, 0x48, 0x80, //# $#$#$#$## -0x80, 0x00, 0x00, 0x00, 0x08, 0x00, //# # -0x88, 0x88, 0x88, 0x88, 0x88, 0x00, //########## -//Level: 373 -0x0F, 0x0D,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x80, //# ......... # -0x80, 0x44, 0x44, 0x44, 0x44, 0x41, 0x40, 0x80, //# $$$$$$$$$.$ # -0x80, 0x41, 0x11, 0x11, 0x11, 0x41, 0x40, 0x80, //# $.......$.$ # -0x80, 0x41, 0x44, 0x44, 0x41, 0x41, 0x40, 0x80, //# $.$$$$$.$.$ # -0x80, 0x41, 0x41, 0x11, 0x41, 0x41, 0x40, 0x80, //# $.$...$.$.$ # -0x80, 0x41, 0x41, 0x45, 0x41, 0x41, 0x42, 0x80, //# $.$.$*$.$.$@# -0x80, 0x41, 0x41, 0x41, 0x11, 0x41, 0x40, 0x80, //# $.$.$...$.$ # -0x80, 0x41, 0x41, 0x44, 0x44, 0x41, 0x40, 0x80, //# $.$.$$$$$.$ # -0x80, 0x41, 0x41, 0x11, 0x11, 0x11, 0x40, 0x80, //# $.$.......$ # -0x80, 0x41, 0x44, 0x44, 0x44, 0x44, 0x40, 0x80, //# $.$$$$$$$$$ # -0x80, 0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x80, //# ......... # -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //############### -//Level: 374 -0x11, 0x12,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, // ######### -0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, // # # -0x00, 0x08, 0x80, 0x40, 0x40, 0x40, 0x88, 0x00, 0x00, // ## $ $ $ ## -0x88, 0x88, 0x00, 0x04, 0x04, 0x40, 0x08, 0x88, 0x80, //#### $ $$ #### -0x80, 0x00, 0x80, 0x40, 0x04, 0x00, 0x80, 0x00, 0x80, //# # $ $ # # -0x80, 0x44, 0x08, 0x04, 0x04, 0x08, 0x04, 0x40, 0x80, //# $$ # $ $ # $$ # -0x80, 0x00, 0x40, 0x84, 0x04, 0x80, 0x04, 0x00, 0x80, //# $ #$ $# $ # -0x80, 0x04, 0x00, 0x04, 0x04, 0x00, 0x00, 0x40, 0x80, //# $ $ $ $ # -0x80, 0x40, 0x40, 0x80, 0x40, 0x80, 0x44, 0x00, 0x80, //# $ $ # $ # $$ # -0x80, 0x40, 0x08, 0x88, 0x08, 0x88, 0x00, 0x40, 0x80, //# $ ### ### $ # -0x80, 0x00, 0x88, 0x08, 0x08, 0x08, 0x80, 0x00, 0x80, //# ## # # ## # -0x88, 0x88, 0x80, 0x08, 0x28, 0x00, 0x88, 0x88, 0x80, //##### #@# ##### -0x00, 0x00, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x00, 0x88, 0x08, 0x80, 0x00, 0x00, 0x00, // ## ## -0x88, 0x88, 0x88, 0x81, 0x01, 0x88, 0x88, 0x88, 0x80, //#######. .####### -0x81, 0x11, 0x11, 0x10, 0x10, 0x11, 0x11, 0x11, 0x80, //#...... . ......# -0x81, 0x11, 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x80, //#........ ......# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //################# -//Level: 375 -0x15, 0x11,//Size x and y -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80, //##################### -0x81, 0x00, 0x81, 0x00, 0x81, 0x41, 0x80, 0x01, 0x80, 0x01, 0x80, //#. #. #.$.# .# .# -0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, //# # # # # # # -0x80, 0x01, 0x80, 0x00, 0x10, 0x40, 0x10, 0x00, 0x81, 0x00, 0x80, //# .# . $ . #. # -0x80, 0x80, 0x01, 0x84, 0x40, 0x80, 0x44, 0x81, 0x00, 0x80, 0x80, //# # .#$$ # $$#. # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x00, 0x84, 0x40, 0x80, 0x44, 0x80, 0x00, 0x80, 0x80, //# # #$$ # $$# # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x82, 0x80, 0x00, 0x84, 0x44, 0x54, 0x44, 0x80, 0x00, 0x80, 0x80, //#@# #$$$*$$$# # # -0x80, 0x01, 0x10, 0x00, 0x80, 0x40, 0x80, 0x00, 0x11, 0x00, 0x80, //# .. # $ # .. # -0x80, 0x80, 0x00, 0x84, 0x40, 0x80, 0x44, 0x80, 0x00, 0x80, 0x80, //# # #$$ # $$# # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x01, 0x84, 0x40, 0x80, 0x44, 0x81, 0x00, 0x80, 0x80, //# # .#$$ # $$#. # # -0x80, 0x01, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x81, 0x00, 0x80, //# .# # $ # #. # -0x80, 0x80, 0x00, 0x84, 0x00, 0x80, 0x04, 0x80, 0x00, 0x80, 0x80, //# # #$ # $# # # -0x81, 0x00, 0x81, 0x00, 0x81, 0x41, 0x80, 0x01, 0x80, 0x01, 0x80, //#. #. #.$.# .# .# -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x80 //##################### -}; -#else -#define SOKOBAN_LEVELS 1 -const unsigned char Sokoban_Levels[] = { -//Level: 1 -0x13, 0x0B,//Size x and y -0x00, 0x00, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // ##### -0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // # # -0x00, 0x00, 0x84, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, // #$ # -0x00, 0x88, 0x80, 0x04, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, // ### $## -0x00, 0x80, 0x04, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // # $ $ # -0x88, 0x80, 0x80, 0x88, 0x08, 0x00, 0x08, 0x88, 0x88, 0x80, //### # ## # ###### -0x80, 0x00, 0x80, 0x88, 0x08, 0x88, 0x88, 0x00, 0x11, 0x80, //# # ## ##### ..# -0x80, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x80, //# $ $ ..# -0x88, 0x88, 0x80, 0x88, 0x80, 0x82, 0x88, 0x00, 0x11, 0x80, //##### ### #@## ..# -0x00, 0x00, 0x80, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88, 0x80, // # ######### -0x00, 0x00, 0x88, 0x88, 0x88, 0x80, 0x00, 0x00, 0x00, 0x00, // ####### -}; -#endif -#endif diff --git a/boop/trunk/games/tic_tac_toe.c b/boop/trunk/games/tic_tac_toe.c deleted file mode 100644 index 8d617ac..0000000 --- a/boop/trunk/games/tic_tac_toe.c +++ /dev/null @@ -1,375 +0,0 @@ -/* - tic_tac_toe.c - game - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "tic_tac_toe.h" - -void GameTicTacToe(void) -{ - BYTE Color; - BYTE Mode; - int i; - int k; - BOOL ComputerWon; - BOOL PlayerWon; - BYTE G[2][9];//GameArray [0=Computer / 1=Player][Game fields] - BOOL GameIsRunning = false; - BYTE Moves = 0; - int Pos; - - Color = LCD_COLOR_B; - Mode = DRAW_PUT; - -again: - //New game - //Init the display - lcd_fill(0);//Clr screen - - //Title - set_font(SMALLFONT); - draw_string(0, 0, "TicTacToe", Color, Mode); - - //Grid - draw_block(16, 16+30, 96, 3, Color, Mode); - draw_block(16, 16+30+3+30, 96, 3, Color, Mode); - draw_block(16+30, 16, 3, 96, Color, Mode); - draw_block(16+30+3+30, 16, 3, 96, Color, Mode); - - //Reset game field - for(k=0; k<2; k++) - { - for(i=0; i<9; i++) - { - G[k][i] = 0; - } - } - - Moves = 0; - - GameIsRunning = true; - - while(1) - { - Pos = -1; - if(KEY_1){Pos = 0;} - if(KEY_2){Pos = 1;} - if(KEY_3){Pos = 2;} - if(KEY_4){Pos = 3;} - if(KEY_5){Pos = 4;} - if(KEY_6){Pos = 5;} - if(KEY_7){Pos = 6;} - if(KEY_8){Pos = 7;} - if(KEY_9){Pos = 8;} - - if((Pos >= 0) && (Pos <= 8)) - { - if(GameIsRunning) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //field is empty - G[1][Pos] = 1; - Moves++; - - if(Moves < 9) - { - //Moves left - if(!GameTicTacToe_IsSolved(G, &ComputerWon, &PlayerWon)) - { - //Not solved -> computer move - GameTicTacToe_ComputerMove(G); - Moves++; - } - } - GameTicTacToe_DrawGameField(G); - } - } - } - - //Is solved? - GameTicTacToe_IsSolved(G, &ComputerWon, &PlayerWon); - if(ComputerWon) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Computer hat gewonnen", Color, Mode); - GameIsRunning = false; - } - else - { - if(PlayerWon) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Spieler hat gewonnen", Color, Mode); - GameIsRunning = false; - } - else - { - if(Moves == 9) - { - draw_string(0, LCD_SIZE_Y - (8*4), "Unentschieden", Color, Mode); - GameIsRunning = false; - } - } - } - - //Footer - if(Moves > 0) - { - draw_string(0, LCD_SIZE_Y - (8*3), "0", Color, Mode); - draw_string(32, LCD_SIZE_Y - (8*3), "Neues Spiel", Color, Mode); - draw_string(0, LCD_SIZE_Y - (8*2), "Exit", Color, Mode); - draw_string(32, LCD_SIZE_Y - (8*2), "Spiel beenden", Color, Mode); - } - else - { - draw_block(0, LCD_SIZE_Y - (8*2), LCD_SIZE_X, 8, Color, DRAW_ERASE); - } - - if(GameIsRunning) - { - draw_string(0, LCD_SIZE_Y - 8, "1-9", Color, Mode); - draw_string(32, LCD_SIZE_Y - 8, "Feld waehlen", Color, Mode); - } - else - { - draw_block(0, LCD_SIZE_Y - 8, LCD_SIZE_X, 8, Color, DRAW_ERASE); - } - waitKeyUpDown(); - if(KEY_0) goto again; - if(KEY_Exit) return; - } -} - -void GameTicTacToe_ComputerMove(BYTE G[2][9]) -{ - int Pos; - BYTE TempG[2][9]; - BOOL ComputerWon; - BOOL PlayerWon; - - for(Pos=0; Pos<9; Pos++) - { - TempG[0][Pos] = G[0][Pos]; - TempG[1][Pos] = G[1][Pos]; - } - - //1: Check if the computer can win the game with the next move - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - TempG[0][Pos] = 1;//Try this move - GameTicTacToe_IsSolved(TempG, &ComputerWon, &PlayerWon); - if(ComputerWon) - { - G[0][Pos] = 1;//Do the move - return; - } - TempG[0][Pos] = 0;//Undo the try - } - } - - //2: Check if the computer can prohibit the player to win the game with the next move - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - TempG[1][Pos] = 1;//Try this move - GameTicTacToe_IsSolved(TempG, &ComputerWon, &PlayerWon); - if(PlayerWon) - { - G[0][Pos] = 1;//Do the move - return; - } - TempG[1][Pos] = 0;//Undo the try - } - } - - //The following strategy is not implemented to allow the player to win: - //3: Fork: threaten a win with two possible completions in two ways - //4: Block Fork 1: if there is a configuration where the opponent can fork, create two in a row to force a block - //5: Block Fork 2: if there is a configuration where the opponent can fork, block that fork - - //6: Try to play the centre - if((G[0][4] + G[1][4]) == 0) - { - G[0][4] = 1; - return; - } - - //7: If the Player is in a corner then try to play the opposite corner - if(((G[0][0] + G[1][0]) == 0) && (G[1][8])) - { - //Corner 0 is free and player is in corner 8 - G[0][0] = 1; - return; - } - if(((G[0][2] + G[1][2]) == 0) && (G[1][6])) - { - //Corner 2 is free and player is in corner 6 - G[0][2] = 1; - return; - } - if(((G[0][6] + G[1][6]) == 0) && (G[1][2])) - { - //Corner 6 is free and player is in corner 2 - G[0][6] = 1; - return; - } - if(((G[0][8] + G[1][8]) == 0) && (G[1][0])) - { - //Corner 8 is free and player is in corner 0 - G[0][8] = 1; - return; - } - - //8: Try to play an free corner - Pos = 0; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 2; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 6; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - Pos = 8; - if((G[0][Pos] + G[1][Pos]) == 0) - { - G[0][Pos] = 1; - return; - } - - //9: Play on a free pos - for(Pos=0; Pos<9; Pos++) - { - if((G[0][Pos] + G[1][Pos]) == 0) - { - //Free pos - G[0][Pos] = 1;//Do the move - return; - } - } -} - -BOOL GameTicTacToe_IsSolved(BYTE G[2][9], BOOL *pComputerWon, BOOL *pPlayerWon) -{ - //Return true=GameIsSolved - int k; - BYTE Result[2]; - - *pComputerWon = false; - *pPlayerWon = false; - - //Is solved? - Result[0] = 0; - Result[1] = 0; - for(k=0; k<2; k++) - { - Result[k] |= 1 << (G[k][0] + G[k][1] + G[k][2]);//Row 1 - Result[k] |= 1 << (G[k][3] + G[k][4] + G[k][5]);//Row 2 - Result[k] |= 1 << (G[k][6] + G[k][7] + G[k][8]);//Row 3 - - Result[k] |= 1 << (G[k][0] + G[k][3] + G[k][6]);//Column 1 - Result[k] |= 1 << (G[k][1] + G[k][4] + G[k][7]);//Column 2 - Result[k] |= 1 << (G[k][2] + G[k][5] + G[k][8]);//Column 3 - - Result[k] |= 1 << (G[k][0] + G[k][4] + G[k][8]);//Diagonal - Result[k] |= 1 << (G[k][2] + G[k][4] + G[k][6]);//Diagonal - } - - if(Result[0] & (1 << 3)) - { - *pComputerWon = true; - return true;//Solved - } - if(Result[1] & (1 << 3)) - { - *pPlayerWon = true; - return true;//Solved - } - - return false;//Not solved -} - -void GameTicTacToe_DrawGameField(BYTE G[2][9]) -{ - int Pos; - int x; - int y; - BYTE Color; - BYTE Mode; - - Color = LCD_COLOR_B; - Mode = DRAW_PUT; - - for(Pos=0; Pos<9; Pos++) - { - -// x = Pos % 3; -// y = Pos / 3; - y = 0; - x = Pos; - while(x >= 3) - { - x -= 3; - y++; - } - - if(G[0][Pos]) - { - //Computer (O) - draw_disc(16+14 + (x*33), 16+14 + (y*33), 11, Color, Mode); - draw_disc(16+14 + (x*33), 16+14 + (y*33), 8, Color, DRAW_XOR); - - } - else - { - if(G[1][Pos]) - { - //Player (X) -draw_line(16+3 + (x*33), 16+3 + (y*33)+2, 16+3 + (x*33) + 23-2, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33), 16+3 + (y*33)+1, 16+3 + (x*33) + 23-1, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33), 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23, Color, Mode); -draw_line(16+3 + (x*33)+1, 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23-1, Color, Mode); -draw_line(16+3 + (x*33)+2, 16+3 + (y*33), 16+3 + (x*33) + 23, 16+3 + (y*33) + 23-2, Color, Mode); - - -draw_line(16+3-1+(x*33)+2, 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33)+2, Color, Mode); -draw_line(16+3-1+(x*33)+1, 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33)+1, Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1, 16+3+(x*33)+23, 16+3 + (y*33), Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1-1, 16+3+(x*33)+23-1, 16+3 + (y*33), Color, Mode); -draw_line(16+3-1+(x*33), 16+3+(y*33)+23+1-2, 16+3+(x*33)+23-2, 16+3 + (y*33), Color, Mode); - - } - } - } -} - - diff --git a/boop/trunk/games/tic_tac_toe.h b/boop/trunk/games/tic_tac_toe.h deleted file mode 100644 index 1d57f18..0000000 --- a/boop/trunk/games/tic_tac_toe.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - tic_tac_toe.h - game - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef TIC_TAC_TOE_H -#define TIC_TAC_TOE_H - -#include "../global.h" - -void GameTicTacToe(void); -void GameTicTacToe_DrawGameField(BYTE G[2][9]); -void GameTicTacToe_ComputerMove(BYTE G[2][9]); -BOOL GameTicTacToe_IsSolved(BYTE G[2][9], BOOL *pComputerWon, BOOL *pPlayerWon); - -#endif diff --git a/boop/trunk/global.c b/boop/trunk/global.c deleted file mode 100644 index 7b218db..0000000 --- a/boop/trunk/global.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - global.c - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "rf.h" -#include "global.h" - -#define debugbuffersize 50 -unsigned char debugoutbuf [debugbuffersize]; - -void *memcpy(void *dest,void *src,int count) -{ - char *tmp = (char *) dest, *s = (char *) src; - - while (count--) - *tmp++ = *s++; - - return dest; -} - -int memcmp(const void * cs,const void * ct,int count) -{ - const unsigned char *su1, *su2; - signed char res = 0; - - for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) - if ((res = *su1 - *su2) != 0) - break; - return res; -} - -unsigned char GetHWversion (void) -{ - if(((IOPIN2 >> 28) & 3) == 3) - return(((((IOPIN0 >> 5) & 1) << 4) | (((IOPIN2 >> 30) & 1) << 3) | (((IOPIN2 >> 16) & 1) << 2) | 3)); - return(((IOPIN2 >> 27) & 2) + ((IOPIN2 >> 29) & 1) + (((IOPIN1 >> 23) & 7) << 2)); -} - -int puts (const char* string) -{ - struct RFendpoint_* cur_ep; - volatile unsigned char i; - - cur_ep = openEP(debugoutbuf,0, packet_test); - - if (cur_ep) - { - for (i=0; (ibuffer[i] = string[i]; - } - - cur_ep->buffer[i] = 0; - cur_ep->bufferlen = i+1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata; - - - RF_changestate(RFtx); - // wait until all date are sent - while(cur_ep->flags & EPnewdata); - closeEP(cur_ep); - } - return 1; -} - -/* - * The width of the CRC calculation and result. - * Modify the typedef for a 16 or 32-bit CRC standard. - */ - -#define CRC_POLYNOMIAL 0x8005 -#define CRC_WIDTH (8 * sizeof(crc)) -#define CRC_TOPBIT (1 << (CRC_WIDTH - 1)) - -crc CRCs(char* message) -{ - crc remainder = 0; - int byte; - unsigned char bit; - - /* - * Perform modulo-2 division, a byte at a time. - */ - for (byte = 0; message[byte]; ++byte) - { - /* - * Bring the next byte into the remainder. - */ - remainder ^= (message[byte] << (CRC_WIDTH - 8)); - - /* - * Perform modulo-2 division, a bit at a time. - */ - for (bit = 8; bit > 0; --bit) - { - /* - * Try to divide the current data bit. - */ - if (remainder & CRC_TOPBIT) - { - remainder = (remainder << 1) ^ CRC_POLYNOMIAL; - } - else - { - remainder = (remainder << 1); - } - } - } - - /* - * The final remainder is the CRC result. - */ - return (remainder); - -} /* crcSlow() */ - diff --git a/boop/trunk/global.h b/boop/trunk/global.h deleted file mode 100644 index 665747c..0000000 --- a/boop/trunk/global.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - global.h - Copyright (C) 2007 Colibri - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef GLOBAL_H -#define GLOBAL_H - -//Uncomment if you want compile with demo sound -//#define WITH_SOUND - -// Set appropriate feature flags -#define FF_UART_REDIRECT 1 -#define FF_LARGE_IDLE_CLOCK 0 -#define FF_LARGE_MENU 1 -#define FF_ICON_TRANSPARENT 1 // enable 3 BitPerPixel icons support - -typedef unsigned char BOOL; -typedef unsigned char BYTE; -typedef unsigned short WORD; -typedef unsigned long DWORD; - -#define false 0 -#define true 1 - -#ifndef NULL -#define NULL 0 -#endif - -#define max(a,b) (((a) > (b)) ? (a) : (b)) -#define min(a,b) (((a) < (b)) ? (a) : (b)) - -#ifndef _BV -#define _BV(bit) (1 << (bit)) -#endif - -#define NUM_OF_ELEMENTS(x) sizeof(x)/sizeof(x[0]) - -#define SPEED_30 0 -#define SPEED_60 1 - -// Execute code in locked sequence -#define INT_LOCK(x) {unsigned cpsr = disableIRQ (); {x;} restoreIRQ (cpsr);} - -/** Let the LPC2200 sleep until the next IRQ -* -* This function tries to enter the sleep mode and stays -* there until the next interrupt wakes up the CPU. -* If that is not possible, the function returns immediately. -*/ -extern void cpu_idle (void); - -#define SYS_NOIDLE 0x08 // No Idle Mode -#define SYS_NOPDOWN 0x10 // No Power Down -#define SYS_IR 0x20 -#define SYS_KEY 0x40 -#define SYS_TURBO 0x80 - -#include -#define printd(...) printf(__VA_ARGS__) -#define debugbuffersize 50 -extern unsigned char debugoutbuf [debugbuffersize]; - -#ifndef __MAIN_C__ -extern char sysInfo; -#endif /* __MAIN_C__ */ - -extern unsigned char debugoutbuf []; - -#define PCON_IDLE 0x01 -#define PCON_PDOWN 0x02 - -typedef unsigned short crc; - -void *memcpy(void *dest,void *src,int count); -int memcmp(const void * cs,const void * ct,int count); -unsigned char GetHWversion(void); -int puts(const char* string); -crc CRCs(char* message); - -#endif diff --git a/boop/trunk/gui/Cross_2bpp.bmp b/boop/trunk/gui/Cross_2bpp.bmp deleted file mode 100644 index 96e496c..0000000 Binary files a/boop/trunk/gui/Cross_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/Cross_t_3bpp_t.bmp b/boop/trunk/gui/Cross_t_3bpp_t.bmp deleted file mode 100644 index 7a8bffe..0000000 Binary files a/boop/trunk/gui/Cross_t_3bpp_t.bmp and /dev/null differ diff --git a/boop/trunk/gui/FF_2bpp.bmp b/boop/trunk/gui/FF_2bpp.bmp deleted file mode 100644 index 2e9ebcd..0000000 Binary files a/boop/trunk/gui/FF_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/FR_2bpp.bmp b/boop/trunk/gui/FR_2bpp.bmp deleted file mode 100644 index d088a47..0000000 Binary files a/boop/trunk/gui/FR_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/Leo_Gray_128_2bpp.bmp b/boop/trunk/gui/Leo_Gray_128_2bpp.bmp deleted file mode 100644 index 5dd731f..0000000 Binary files a/boop/trunk/gui/Leo_Gray_128_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/Make.conf b/boop/trunk/gui/Make.conf deleted file mode 100644 index 3bee914..0000000 --- a/boop/trunk/gui/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := menu.c mainmenu.c testmenu.c settingsmenu.c controls.c diff --git a/boop/trunk/gui/Pause_2bpp.bmp b/boop/trunk/gui/Pause_2bpp.bmp deleted file mode 100644 index e6d9fd1..0000000 Binary files a/boop/trunk/gui/Pause_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/Play_2bpp.bmp b/boop/trunk/gui/Play_2bpp.bmp deleted file mode 100644 index 04a5dd2..0000000 Binary files a/boop/trunk/gui/Play_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/Stop_2bpp.bmp b/boop/trunk/gui/Stop_2bpp.bmp deleted file mode 100644 index 8661f98..0000000 Binary files a/boop/trunk/gui/Stop_2bpp.bmp and /dev/null differ diff --git a/boop/trunk/gui/controls.c b/boop/trunk/gui/controls.c deleted file mode 100644 index 539d859..0000000 --- a/boop/trunk/gui/controls.c +++ /dev/null @@ -1,1017 +0,0 @@ -/* - controls.c - GUI controls - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "rtc.h" -#include "controls.h" -#include "lcd.h" -#include "fonty.h" -#include "global.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "backlight.h" -#include "timerfuncs.h" - -#define Cursor_timeout 150 - -FORM* currentform = 0; - -const char string_yes[] = "JA"; -const char string_no[] = "NEIN"; -const char string_ok[] = "OK"; - -const char TXTKey1[] = ".,-+_1@*;:'&"; -const char TXTKey2[] = "abc2ABC"; -const char TXTKey3[] = "def3DEF"; -const char TXTKey4[] = "ghi4GHI"; -const char TXTKey5[] = "jkl5JKL"; -const char TXTKey6[] = "mno6MNO"; -const char TXTKey7[] = "pqrs7PQRS"; -const char TXTKey8[] = "tuv8TUV"; -const char TXTKey9[] = "wxyz9WXYZ"; -const char TXTKey0[] = " 0"; - -const char* const TXTKeys[10] = {TXTKey1,TXTKey2,TXTKey3,TXTKey4,TXTKey5,TXTKey6,TXTKey7,TXTKey8,TXTKey9,TXTKey0}; - -unsigned char msgbox (unsigned char y,unsigned short flags, char *st) -{ - unsigned short textwidth; - unsigned short textheight; - unsigned char width; - unsigned char height; - unsigned char left; - unsigned char x; - unsigned char sel; - - struct bt_ - { - unsigned char cnt; - unsigned char left[3]; - unsigned char top; - unsigned char ret[3]; - char* text[3]; - unsigned char textHeight; - } button; - - textwidth = get_stringwidth(st); - textheight = get_stringheight(st); - - if(textwidth > 120) - width = 124; - else if(textwidth < 54) - width = 60; - else - width = (textwidth | 0x01) + 6; - - button.textHeight = get_stringheight (string_yes); - if ((flags & 0x03) == BC_YesNo) - { - button.cnt = 2; - button.left[0] = 38; - button.ret[0]=BC_Yes; - button.text[0] = (char*)string_yes; - button.left[1] = 65; - button.ret[1]=BC_No; - button.text[1] = (char*)string_no; - button.top = y + textheight +5; - } - else if ((flags & 0x03) == BC_nobuttons) - { - button.cnt = 0; - button.top = 0; - } - else - { - button.cnt = 1; - button.left[0] = 51; - button.ret[0]=BC_OK; - button.text[0] = (char*)string_ok; - button.top = y + textheight +5; - - } - - if(button.cnt) - height = textheight + button.textHeight + 12; - else - height = textheight + 6; - - left = (128-width)>>1; - - draw_block (left,y,width,height, LCD_COLOR_B, DRAW_ERASE); - draw_rect (left,y,width,height,1, LCD_COLOR_B, DRAW_PUT); - draw_rect (left+1,y+1,width-2,height-2,1, LCD_COLOR_DG, DRAW_PUT); - draw_string (left+3,y+3,st, LCD_COLOR_B, DRAW_PUT); - - for (x=0;x>1), button.top+2, - button.text[x], LCD_COLOR_B, DRAW_PUT); - } - - sel = 0; - if ((flags & 0x0C) == BC_DefaultButton2) - { - if(button.cnt>1) - sel=1; - } - else if ((flags & 0x0C) == BC_DefaultButton3) - { - if(button.cnt>2) - sel=2; - } - - setBacklight(BL_AUTO); - while(KEY_OK) {}; - while(!KEY_OK && button.cnt) - { - draw_block (button.left[sel]+1, button.top+1, 23, button.textHeight, LCD_COLOR_B, DRAW_XOR); - waitKeyUpDown(); - draw_block (button.left[sel]+1, button.top+1, 23, button.textHeight, LCD_COLOR_B, DRAW_XOR); - if(KEY_Left) - { - if(sel>0) - sel--; - } - if(KEY_Right) - { - if(selfont); - if(label->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (label->left,label->top,label->width,label->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_string(label->left+1,label->top+1,label->caption, c, m); - -} - -void button_draw (BUTTON* button, unsigned char sel) -{ - unsigned char c; - unsigned char cleft; - unsigned char ctop; - - set_font (button->font); - if(button->type & BC_Disabled) - c=2; - else - c=3; - - draw_block(button->left,button->top,button->width,button->height,3,DRAW_ERASE); - draw_rect(button->left,button->top,button->width,button->height,1,c,DRAW_PUT); - draw_rect(button->left+1,button->top+1,button->width-2,button->height-2,1,c-1,DRAW_PUT); - - cleft = ((button->width - get_stringwidth(button->caption))>>1) +button->left; - ctop = ((button->height - get_stringheight(button->caption)+1)>>1) +button->top; - - if (sel == 2) - { - draw_block (button->left+2,button->top+2,button->width-4,button->height-4, LCD_COLOR_B, DRAW_PUT); - draw_string(cleft,ctop,button->caption, c, DRAW_ERASE); - } - else if (sel) - { - draw_block(button->left+2,button->top+2,button->width-4,button->height-4,1,DRAW_PUT); - draw_string(cleft,ctop,button->caption, c, DRAW_PUT); - } - else - draw_string(cleft,ctop,button->caption, c, DRAW_PUT); -} // button_draw - -void numbox_draw(NUMBOX* numbox, unsigned char sel) { - - unsigned char c; - unsigned char m; - - set_font (numbox->font); - if(numbox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (numbox->left,numbox->top,numbox->width,numbox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_numU(numbox->left+1,numbox->top+1,numbox->value, 0, c, m); - - -} - -void txtbox_draw(TXTBOX* txtbox, unsigned char sel) { - - unsigned char c; - unsigned char m; - - set_font (txtbox->font); - if(txtbox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (txtbox->left,txtbox->top,txtbox->width,txtbox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - draw_string(txtbox->left+1,txtbox->top+1,txtbox->text, c, m); - -} - -void datebox_draw(DATEBOX* datebox, unsigned char sel) { - - unsigned char c; - unsigned char m; - unsigned char w1,w2; - - set_font (datebox->font); - if(datebox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (datebox->left,datebox->top,datebox->width,datebox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(".")+1; - - draw_char(1+datebox->left ,datebox->top+1,days[datebox->date.weekday * 2], c, m); - draw_char(1+datebox->left+1*w1 ,datebox->top+1,days[(datebox->date.weekday * 2) + 1], c, m); - draw_hexC(1+datebox->left+2*w1+1*w2,datebox->top+1,datebox->date.day, c, m); - draw_char(1+datebox->left+4*w1+1*w2,datebox->top+1,'.', c, m); - draw_hexC(1+datebox->left+4*w1+2*w2,datebox->top+1,datebox->date.month, c, m); - draw_char(1+datebox->left+6*w1+2*w2,datebox->top+1,'.', c, m); - draw_hexC(1+datebox->left+6*w1+3*w2,datebox->top+1,datebox->date.year, c, m); - -} - -void timebox_draw(TIMEBOX* timebox, unsigned char sel) { - - unsigned char c; - unsigned char m; - unsigned char w1,w2; - - set_font (timebox->font); - if(timebox->type & BC_Disabled) - c=2; - else - c=3; - - if(sel) { - draw_block (timebox->left,timebox->top,timebox->width,timebox->height, LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(":")+1; - - draw_hexC(1+timebox->left ,timebox->top+1,timebox->time.hour, c, m); - draw_char(1+timebox->left+2*w1 ,timebox->top+1,':', c, m); - draw_hexC(1+timebox->left+2*w1+1*w2,timebox->top+1,timebox->time.minute, c, m); - draw_char(1+timebox->left+4*w1+1*w2,timebox->top+1,':', c, m); - draw_hexC(1+timebox->left+4*w1+2*w2,timebox->top+1,timebox->time.second, c, m); - -} - -void listbox_draw (LISTBOX* listbox, unsigned char sel) -{ - unsigned char c; - unsigned char m; - unsigned char arrow = (listbox->height - 6) / 2 + 1; - - set_font (listbox->font); - if(listbox->type & BC_Disabled) - c=2; - else - c=3; - - if (sel) - { - draw_block (listbox->left,listbox->top,listbox->width,listbox->height, - LCD_COLOR_B, DRAW_PUT); - m=DRAW_ERASE; - } - else - m=DRAW_PUT; - - if(listbox->listindex < listbox->listcount) - draw_string(listbox->left+1,listbox->top+1,listbox->list[listbox->listindex], c, m); - if (sel) - { - draw_block (listbox->left + listbox->width-((arrow+1)*2+1),listbox->top, - (arrow+1)*2+1,listbox->height, - LCD_COLOR_B, DRAW_PUT); - draw_arrow (listbox->left + listbox->width-(arrow+1)*2, listbox->top + (listbox->height/2)-arrow, - ARROW_LEFT, arrow, LCD_COLOR_B, DRAW_ERASE); - draw_arrow (listbox->left + listbox->width-arrow-1, listbox->top + (listbox->height/2)-arrow, - ARROW_RIGHT, arrow, LCD_COLOR_B, DRAW_ERASE); - } -} - -void control_draw (CONTROL* control, unsigned char select) -{ - draw_block (control->left,control->top,control->width,control->height,LCD_COLOR_B,DRAW_ERASE); - switch ((control->type) & 0x1F) - { - case BC_Label: - label_draw((LABEL*)control,select); - break; - case BC_Button: - button_draw((BUTTON*)control,select); - break; - case BC_Numbox: - numbox_draw((NUMBOX*)control,select); - break; - case BC_Txtbox: - txtbox_draw((TXTBOX*)control,select); - break; - case BC_Datebox: - datebox_draw((DATEBOX*)control,select); - break; - case BC_Timebox: - timebox_draw((TIMEBOX*)control,select); - break; - case BC_Listbox: - listbox_draw((LISTBOX*)control,select); - break; - } -} // control_draw - -void form_draw (FORM* form) -{ - unsigned char x; - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0, 0, form->caption, LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,128,2, LCD_COLOR_B, DRAW_PUT); - - if (form->footer) - { - set_font(SMALLFONT); - draw_block (0,149,128,2, LCD_COLOR_B, DRAW_PUT); - draw_string (0,152, form->footer, LCD_COLOR_B, DRAW_PUT); - } - - for (x=0;xcontrolcount;x++) - { - control_draw(form->controls[x],(form->sel == x)); - } -} // form_draw - -unsigned char get_prev_control(FORM* form) { - - signed short x; - unsigned char type; - - for(x=form->sel-1;x>-1;x--) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - for(x=form->controlcount-1;x>form->sel;x--) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - return form->sel; -} - -unsigned char get_next_control(FORM* form) { - - unsigned char x; - unsigned char type; - - for(x=form->sel+1;xcontrolcount;x++) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - for(x=0;xsel;x++) { - type = (form->controls[x])->type; - if(!(type & 0xe0)) - return x; - } - return form->sel; -} - -extern void cpu_idle(); - -void waitFormKeyUp(void) -{ - while((keys[0] != 0) || (keys[1] != 0)) { - if(currentform->flags & BC_Timer_expired) { - currentform->flags &= ~BC_Timer_expired; - if(currentform->timer) - currentform->timer(currentform); - } - if(currentform->flags & BC_Form_redraw) { - form_draw(currentform); - currentform->flags &= ~BC_Form_redraw; - } - } -} - -void waitFormKeyDown(void) -{ - while((keys[0] == 0) && (keys[1] == 0)) { - if(currentform->flags & BC_Timer_expired) { - currentform->flags &= ~BC_Timer_expired; - if(currentform->timer) - currentform->timer(currentform); - } - if(currentform->flags & BC_Form_redraw) { - form_draw(currentform); - currentform->flags &= ~BC_Form_redraw; - } - cpu_idle(); - }; - setBacklight(BL_AUTO); // pwm value -} - -#define waitFormKeyUpDown() { waitFormKeyUp(); waitFormKeyDown(); } - -void numbox_entervalue(NUMBOX* numbox) { - - unsigned char digit[5]; - unsigned char len; - unsigned char maxlen; - unsigned char cpos; - unsigned char width; - unsigned char space; - unsigned char k; - unsigned short value; - unsigned short x; - unsigned char h; - - if((KEY_Left) || (KEY_Right)) { - if((KEY_Left) && (numbox->value > numbox->min)) - numbox->value--; - if((KEY_Right) && (numbox->value < numbox->max)) - numbox->value++; - return; - } - set_font(numbox->font); - width = get_stringwidth("0"); - space = get_stringwidth("00") - 2 * width; - h=get_stringheight("0"); - - cpos = 0; - len = 0; - x=numbox->max; - for(maxlen = 1;x > 9;maxlen++) - x /= 10; - - while(!(KEY_Exit || KEY_OK)) { - k=getKeynum(); - if((k > 15) && (k < 26)) { - digit[cpos] = k-15; - if(digit[cpos] > 9) - digit[cpos] = 0; - if(len < maxlen) - len++; - cpos++; - if(cpos == maxlen) - cpos--; - } - if(KEY_Left) { - if(len) - len--; - cpos = len; - } - draw_block(numbox->left,numbox->top,numbox->width,numbox->height,3,DRAW_ERASE); - for(x=0; xleft+1)+(width+space)*x ,numbox->top+1, digit[x] + 0x30,3, DRAW_PUT); - draw_hline ((numbox->left+1)+ (width+space)*cpos,numbox->top+h,width, LCD_COLOR_B, DRAW_PUT); - waitFormKeyUpDown(); - } - if((KEY_OK) && len) { - x=1; - value = 0; - for(k=len;k;k--) { - value += x*digit[k-1]; - x *=10; - } - if(value > numbox->max) - numbox->value = numbox->max; - else if(value < numbox->min) - numbox->value = numbox->min; - else - numbox->value = value; - } - waitFormKeyUp(); -} - -void txtbox_entervalue(TXTBOX* txtbox) { - - unsigned char k; - unsigned char kpos; - unsigned char kold; - unsigned char cpos; - unsigned char x; - unsigned char y; - unsigned char h; - char buffer[txtbox->maxlen]; - - memcpy(buffer,txtbox->text,txtbox->maxlen); - - if(KEY_Right) { - for(cpos=0;buffer[cpos] !=0;cpos++); - } - else { - cpos = 0; - buffer[cpos] = 0; - } - if(cpos == txtbox->maxlen-1) - cpos--; - kpos = 0; - - h=get_stringheight("0"); - kold = 10; - while(!(KEY_Exit || KEY_OK)) { - k=getKeynum(); - if((k > 15) && (k < 26)) { - k = k-16; - if(k != kold) { - kpos = 0; - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) - cpos++; - } - else { - kpos++; - if(TXTKeys[k][kpos] == 0) - kpos = 0; - } - buffer[cpos] = TXTKeys[k][kpos]; - buffer[cpos+1] = 0; - kold = k; - } - if(KEY_Right) { - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) { - cpos++; - kold = 10; - } - } - if(KEY_Left) { - if((cpos > 0) && (!buffer[cpos])) - cpos--; - buffer[cpos] = 0; - } - draw_block(txtbox->left,txtbox->top,txtbox->width,txtbox->height,3,DRAW_ERASE); - draw_string (txtbox->left+1,txtbox->top+1,buffer, LCD_COLOR_B, DRAW_PUT); - x=get_stringwidth(buffer); - y=get_stringwidth(&buffer[cpos]); - if(!y){ - y=get_stringwidth("A"); - x+=y+1; - } - - draw_block(txtbox->left+x-y,txtbox->top,y+2,h+2,3,DRAW_XOR); - - waitKeyUp(); - if((buffer[cpos]) && (cpos < txtbox->maxlen-2)) { - unsigned short cnt; - cnt = Cursor_timeout; - while(((keys[0] == 0) && (keys[1] == 0)) && --cnt) { - wait5ms(); - } - setBacklight(BL_AUTO); - if(!cnt) { - if((cpos < txtbox->maxlen-2) && (buffer[cpos])) - cpos++; - buffer[cpos] = 0; - kold = 10; - } - } - else - waitFormKeyDown(); - - } - if(KEY_OK) { - memcpy(txtbox->text,buffer,txtbox->maxlen); - } - waitFormKeyUp(); -} - -void datebox_entervalue(DATEBOX* datebox) { - unsigned char cursor; - signed char x; - signed char v; - char cpos[3]; - unsigned char w1, w2; - struct date_ dateold; - unsigned char exit = 0; - - if(KEY_Right) - cursor = 2; - else - cursor = 0; - - dateold = datebox->date; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(".")+1; - - cpos[0] = 2 * w1 + 1 * w2; - cpos[1] = 4 * w1 + 2 * w2; - cpos[2] = 6 * w1 + 3 * w2; - - draw_block(datebox->left,datebox->top,datebox->width,datebox->height,3,DRAW_ERASE); - datebox_draw(datebox,0); - draw_block(datebox->left+ cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_XOR); - - while(!(KEY_Exit | KEY_OK)) { - - if(KEY_Left || KEY_Right) { - cursor += 3; - if (KEY_Left) - cursor--; - else - cursor++; - cursor %= 3; - } - - x = getNumKeyValue(); - if (x >= 0) { - v= x<<4; - draw_block(datebox->left+cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_ERASE); - draw_char(datebox->left+1+cpos[cursor],datebox->top+1, x + 0x30,3, DRAW_PUT); - draw_char(datebox->left+w1+1+cpos[cursor],datebox->top+1, '_',3, DRAW_PUT); - waitKeyUpDown(); - x = getNumKeyValue(); - if (x >= 0) { - v |= x; - switch (cursor++) { - case 0: - datebox->date.day = checkBCD(v,31,1); - break; - case 1: - datebox->date.month = checkBCD(v,12,1); - break; - case 2: - datebox->date.year = checkBCD(v,99,0); - exit++; - break; - } - cursor %= 3; - } - } - - if(KEY_Down || KEY_Up) { - if (KEY_Up) - x=1; - else - x=-1; - switch (cursor) { - case 0: - calcBCD((unsigned char*)&datebox->date.day, x, 31, 1); - break; - case 1: - calcBCD((unsigned char*)&datebox->date.month, x, 12, 1); - break; - case 2: - calcBCD((unsigned char*)&datebox->date.year, x, 99, 0); - break; - } - } - calcweekday(&datebox->date); - - draw_block(datebox->left,datebox->top,datebox->width,datebox->height,3,DRAW_ERASE); - datebox_draw(datebox,0); - draw_block(datebox->left+ cpos[cursor],datebox->top,2*w1+1,datebox->height,3,DRAW_XOR); - - if(exit) - break; - - waitFormKeyUpDown(); - } - - if (KEY_OK | exit) { - switch (datebox->date.month) { - case 0x02: - x = (((datebox->date.year & 0xf0)>>4) * 10 + (datebox->date.year & 0x0f)) & 0x03; - if (x && (datebox->date.day > 0x28)) - datebox->date.day = 0x28; - else if (!x && (datebox->date.day > 0x29)) - datebox->date.day = 0x29; - break; - case 0x04: - case 0x06: - case 0x09: - case 0x11: - if (datebox->date.day > 0x30) - datebox->date.day = 0x30; - } - calcweekday(&datebox->date); - } - else - datebox->date = dateold; - - waitFormKeyUp(); -} - -void timebox_entervalue(TIMEBOX* timebox) { - unsigned char cursor; - signed char x; - signed char v; - char cpos[3]; - unsigned char w1, w2; - struct time_ timeold; - unsigned char exit = 0; - - if(KEY_Right) - cursor = 2; - else - cursor = 0; - - timeold = timebox->time; - - w1 = get_stringwidth("0")+1; - w2 = get_stringwidth(":")+1; - - cpos[0] = 0; - cpos[1] = 2 * w1 + 1 * w2; - cpos[2] = 4 * w1 + 2 * w2; - - draw_block(timebox->left,timebox->top,timebox->width,timebox->height,3,DRAW_ERASE); - timebox_draw(timebox,0); - draw_block(timebox->left+ cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_XOR); - - while(!(KEY_Exit | KEY_OK)) { - - if(KEY_Left || KEY_Right) { - cursor += 3; - if (KEY_Left) - cursor--; - else - cursor++; - cursor %= 3; - } - - x = getNumKeyValue(); - if (x >= 0) { - v= x<<4; - draw_block(timebox->left+cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_ERASE); - draw_char(timebox->left+1+cpos[cursor],timebox->top+1, x + 0x30,3, DRAW_PUT); - draw_char(timebox->left+w1+1+cpos[cursor],timebox->top+1, '_',3, DRAW_PUT); - waitKeyUpDown(); - x = getNumKeyValue(); - if (x >= 0) { - v |= x; - switch (cursor++) { - case 0: - timebox->time.hour = checkBCD(v,23,0); - break; - case 1: - timebox->time.minute = checkBCD(v,59,0); - break; - case 2: - timebox->time.second = checkBCD(v,59,0); - exit++; - break; - } - cursor %= 3; - } - } - - if(KEY_Down || KEY_Up) { - if (KEY_Up) - x=1; - else - x=-1; - switch (cursor) { - case 0: - calcBCD((unsigned char*)&timebox->time.hour, x, 23, 0); - break; - case 1: - calcBCD((unsigned char*)&timebox->time.minute, x, 59, 0); - break; - case 2: - calcBCD((unsigned char*)&timebox->time.second, x, 59, 0); - break; - } - } - - draw_block(timebox->left,timebox->top,timebox->width,timebox->height,3,DRAW_ERASE); - timebox_draw(timebox,0); - draw_block(timebox->left+ cpos[cursor],timebox->top,2*w1+1,timebox->height,3,DRAW_XOR); - - - if(exit) - break; - - waitFormKeyUpDown(); - } - - if (KEY_Exit) - timebox->time = timeold; - - waitFormKeyUp(); -} - -void listbox_changevalue (LISTBOX* listbox) -{ - if((KEY_Left) && listbox->listindex) - listbox->listindex--; - if((KEY_Right) && listbox->listindex < listbox->listcount - 1) - listbox->listindex++; -} - -void control_onkey(FORM* form, CONTROL* control) { - unsigned short x; - - if (KEY_OK) - { - switch ((control->type) & 0x1F) { - case BC_Label: - case BC_Txtbox: - case BC_Numbox: - case BC_Datebox: - case BC_Timebox: - case BC_Listbox: - if (control->ONclick) - control->ONclick(form,control); - waitFormKeyUp(); - break; - case BC_Button: - x=form->sel; - button_draw((BUTTON*)control,2); - if (control->ONclick) - control->ONclick(form,control); - waitFormKeyUp(); - if(x==form->sel) - x=1; - else - x=0; - button_draw((BUTTON*)control,x); - break; - } - return; - } - switch ((control->type) & 0x1F) { - case BC_Label: - case BC_Button: - break; - case BC_Numbox: - { - NUMBOX* numbox = (NUMBOX*)control; - x=numbox->value; - if(((getKeynum() > 15) && (getKeynum() < 26)) || (KEY_Left) || (KEY_Right)) - numbox_entervalue(numbox); - if((x!=numbox->value) && (numbox->ONchange)) - numbox->ONchange(form,control); - } - break; - case BC_Txtbox: - { - TXTBOX* txtbox = (TXTBOX*)control; - crc oldtext = CRCs(txtbox->text); - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - txtbox_entervalue(txtbox); - if((oldtext != CRCs(txtbox->text)) && (txtbox->ONchange)) - txtbox->ONchange(form,control); - } - break; - case BC_Datebox: - { - DATEBOX* datebox = (DATEBOX*)control; - struct date_ olddate = datebox->date; - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - datebox_entervalue(datebox); - if(memcmp(&olddate,&datebox->date,4) && (datebox->ONchange)) - datebox->ONchange(form,control); - } - break; - case BC_Timebox: - { - TIMEBOX* timebox = (TIMEBOX*)control; - struct time_ oldtime = timebox->time; - if(((getKeynum() > 15) && (getKeynum() < 26)) | KEY_Right) - timebox_entervalue(timebox); - if(memcmp(&oldtime,&timebox->time,4) && (timebox->ONchange)) - timebox->ONchange(form,control); - } - break; - case BC_Listbox: - { - LISTBOX* listbox = (LISTBOX*)control; - unsigned char oldvalue = listbox->listindex; - if(KEY_Left | KEY_Right) - listbox_changevalue((LISTBOX*) control); - if((oldvalue!=listbox->listindex) && (listbox->ONchange)) - listbox->ONchange(form,control); - } - break; - } - control_draw(control,1); -} - -void form_ontimer(unsigned int cb) { - currentform->flags |= BC_Timer_expired; - //currentform->timer(currentform); -} - - - -// displays a form and passes input to form element handlers -void form_exec(FORM* form) { - - unsigned char x; - FORM* oldform; - unsigned int form_cb = 0xff; - - oldform = currentform; - currentform = form; - - if(form->load) - form->load(form); - - if(form->controls[form->sel]->type & BC_NoTabStop) { - x = get_next_control(form); - form->sel = x; - } - - form_draw(form); - - if(form->timer) { - form_cb = addTimerCB(form_ontimer, form->intervall); - startCB(form_cb); - sysInfo |= SYS_NOPDOWN; - } - - while(KEY_Exit) {}; - while((!KEY_Exit) && (!(form->flags & BC_Form_exit))) - { - waitFormKeyUpDown(); - - if(KEY_Up | KEY_Down) { - if(KEY_Up) - x = get_prev_control(form); - else - x = get_next_control(form); - control_draw(form->controls[form->sel],0); - form->sel = x; - control_draw(form->controls[form->sel],1); - } - else - control_onkey(form,form->controls[form->sel]); - } - - if(form_cb != 0xff) { - sysInfo &= ~SYS_NOPDOWN; - stopCB(form_cb); - removeTimerCB(form_cb); - } - - if(form->close) - form->close(form); - - currentform = oldform; - - while(KEY_Exit); -} diff --git a/boop/trunk/gui/controls.h b/boop/trunk/gui/controls.h deleted file mode 100644 index a13a70a..0000000 --- a/boop/trunk/gui/controls.h +++ /dev/null @@ -1,194 +0,0 @@ -/* - controls.h - GUI controls - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef CONTROLS_H -#define CONTROLS_H - -#include "rtc.h" - -#define BC_OKOnly 0 -#define BC_YesNo 1 -#define BC_nobuttons 2 -#define BC_DefaultButton1 0 -#define BC_DefaultButton2 4 -#define BC_DefaultButton3 8 - -#define BC_OK 1 -#define BC_Yes 2 -#define BC_No 3 - -#define BC_NoTabStop 0x80 -#define BC_Disabled 0x40 - -#define BC_Label 1 -#define BC_Labelnotab (BC_Label | BC_NoTabStop) -#define BC_Button 2 -#define BC_Numbox 3 -#define BC_Txtbox 4 -#define BC_Datebox 5 -#define BC_Timebox 6 -#define BC_Listbox 7 - -extern struct FORM dummyform; -extern struct CONTROL dummycontrol; - -typedef void(*event)(struct FORM* form, struct CONTROL* control); -typedef void(*fevent)(struct FORM* form); - -typedef struct CONTROL -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char tag1; - unsigned char tag2; - char* caption; - event ONclick; - event ONchange; -} CONTROL; - -typedef struct FORM -{ - char* caption; - char* footer; - fevent load; - fevent close; - fevent timer; - unsigned long tag; - CONTROL* *controls; - unsigned char sel; - unsigned char controlcount; - unsigned char flags; - unsigned char intervall; -} FORM; - -//form.flags -#define BC_Form_exit (1<<0) -#define BC_Timer_expired (1<<1) -#define BC_Form_redraw (1<<2) - -typedef struct LABEL -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - char* caption; - event ONclick; -} LABEL; - -typedef struct BUTTON -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - char* caption; - event ONclick; -} BUTTON; - -typedef struct NUMBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short value; - unsigned short min; - unsigned short max; - event ONclick; - event ONchange; -} NUMBOX; - -typedef struct TXTBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char maxlen; - unsigned char tag; - char* text; - event ONclick; - event ONchange; -} TXTBOX; - -typedef struct DATEBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - struct date_ date; - event ONclick; - event ONchange; -} DATEBOX; - -typedef struct TIMEBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned short tag; - struct time_ time; - event ONclick; - event ONchange; -} TIMEBOX; - -typedef struct LISTBOX -{ - unsigned char type; - unsigned char left; - unsigned char top; - unsigned char width; - unsigned char height; - unsigned char font; - unsigned char listindex; - unsigned char listcount; - char* *list; - event ONclick; - event ONchange; -} LISTBOX; - -unsigned char msgbox(unsigned char x,unsigned short flags, char *st); -void form_draw(FORM* form); -void control_draw(CONTROL* control, unsigned char select); -void form_exec(FORM* form); - -void listbox_changevalue (LISTBOX* listbox); - -#endif diff --git a/boop/trunk/gui/iconCross.h b/boop/trunk/gui/iconCross.h deleted file mode 100644 index c93ba16..0000000 --- a/boop/trunk/gui/iconCross.h +++ /dev/null @@ -1,144 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Cross.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconCross.data) == 224 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconCross = -{ - /* width = */ 28, - /* height = */ 28, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0xc0, 0x80, - 0xe0, 0xc0, - 0xf0, 0xf0, - 0x38, 0x70, - 0x1c, 0x38, - 0x1c, 0x1c, - 0x0c, 0x0e, - 0x0e, 0x04, - 0x06, 0x0c, - 0x06, 0x06, - 0x06, 0x06, - 0x07, 0xff, - 0x07, 0xff, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x04, - 0x0e, 0x04, - 0x0c, 0x0e, - 0x1c, 0x1c, - 0x1c, 0x38, - 0x38, 0x70, - 0xf0, 0xf0, - 0xe0, 0xc0, - 0xc0, 0x80, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x60, 0x60, - 0xfe, 0xf9, - 0xff, 0xff, - 0x03, 0x65, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0xf0, 0xf8, - 0x6c, 0x94, - 0x62, 0x9e, - 0x62, 0x9d, - 0x61, 0x9f, - 0xff, 0x61, - 0xff, 0x61, - 0x61, 0x9f, - 0x62, 0x9d, - 0x62, 0x9e, - 0x6c, 0x94, - 0xf0, 0xf8, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x00, 0x60, - 0x03, 0x65, - 0xff, 0xff, - 0xfe, 0xf9, - 0x60, 0x60, - //--- Page 2 --- - 0x00, 0x00, - 0x07, 0x09, - 0x3f, 0x1f, - 0x7c, 0x3a, - 0xf0, 0xf0, - 0xc0, 0xe0, - 0x80, 0xc0, - 0x80, 0x80, - 0x00, 0x01, - 0x03, 0x02, - 0x04, 0x07, - 0x04, 0x0b, - 0x08, 0x0f, - 0x0f, 0xf8, - 0x0f, 0xf8, - 0x08, 0x0f, - 0x04, 0x0b, - 0x04, 0x07, - 0x03, 0x02, - 0x00, 0x01, - 0x80, 0x80, - 0x80, 0xc0, - 0xc0, 0xe0, - 0xf0, 0xf0, - 0x7c, 0x3a, - 0x3f, 0x1f, - 0x07, 0x09, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0x00, - 0x03, 0x01, - 0x03, 0x03, - 0x03, 0x07, - 0x07, 0x02, - 0x06, 0x03, - 0x06, 0x06, - 0x06, 0x06, - 0x0e, 0x0f, - 0x0e, 0x0f, - 0x06, 0x06, - 0x06, 0x06, - 0x06, 0x02, - 0x07, 0x02, - 0x03, 0x07, - 0x03, 0x03, - 0x03, 0x01, - 0x01, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00 - } -}; - - diff --git a/boop/trunk/gui/iconCross_t.h b/boop/trunk/gui/iconCross_t.h deleted file mode 100644 index 18fd07a..0000000 --- a/boop/trunk/gui/iconCross_t.h +++ /dev/null @@ -1,148 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Cross_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconCross_t.data) == 336 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconCross_t = -{ - /* width = */ 28, - /* height = */ 28, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x80, 0xc0, 0xc0, - 0xe0, 0xc0, 0xe0, - 0xf0, 0xf0, 0xf0, - 0x38, 0x70, 0x78, - 0x18, 0x3c, 0x3c, - 0x1c, 0x1c, 0x1c, - 0x0c, 0x0e, 0x0e, - 0x0e, 0x04, 0x0e, - 0x06, 0x0c, 0x0e, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x07, 0xff, 0xff, - 0x07, 0xff, 0xff, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x06, 0x0c, 0x0e, - 0x0e, 0x04, 0x0e, - 0x0c, 0x0e, 0x0e, - 0x1c, 0x1c, 0x1c, - 0x18, 0x3c, 0x3c, - 0x38, 0x70, 0x78, - 0xf0, 0xf0, 0xf0, - 0xe0, 0xc0, 0xe0, - 0x80, 0xc0, 0xc0, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 1 --- - // v--- Alpha Channel - 0x60, 0x60, 0x60, - 0xfe, 0xf9, 0xff, - 0xff, 0xff, 0xff, - 0x03, 0x65, 0x67, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0xf0, 0xf8, 0xf8, - 0x6c, 0x94, 0xfc, - 0x62, 0x9e, 0xfe, - 0x62, 0x9d, 0xff, - 0x61, 0x9f, 0xff, - 0xff, 0x61, 0xff, - 0xff, 0x61, 0xff, - 0x61, 0x9f, 0xff, - 0x62, 0x9d, 0xff, - 0x62, 0x9e, 0xfe, - 0x6c, 0x94, 0xfc, - 0xf0, 0xf8, 0xf8, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x00, 0x60, 0x60, - 0x03, 0x65, 0x67, - 0xff, 0xff, 0xff, - 0xfe, 0xf9, 0xff, - 0x60, 0x60, 0x60, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x07, 0x09, 0x0f, - 0x1f, 0x3f, 0x3f, - 0x7c, 0x3a, 0x7e, - 0xf0, 0xf0, 0xf0, - 0xc0, 0xe0, 0xe0, - 0x80, 0xc0, 0xc0, - 0x80, 0x80, 0x80, - 0x00, 0x01, 0x01, - 0x03, 0x02, 0x03, - 0x04, 0x07, 0x07, - 0x04, 0x0b, 0x0f, - 0x08, 0x0f, 0x0f, - 0x0f, 0xf8, 0xff, - 0x0f, 0xf8, 0xff, - 0x08, 0x0f, 0x0f, - 0x04, 0x0b, 0x0f, - 0x04, 0x07, 0x07, - 0x03, 0x02, 0x03, - 0x00, 0x01, 0x01, - 0x80, 0x80, 0x80, - 0x80, 0xc0, 0xc0, - 0xc0, 0xe0, 0xe0, - 0xf0, 0xf0, 0xf0, - 0x7c, 0x3a, 0x7e, - 0x1f, 0x3f, 0x3f, - 0x07, 0x09, 0x0f, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x01, 0x00, 0x01, - 0x01, 0x03, 0x03, - 0x03, 0x03, 0x03, - 0x03, 0x07, 0x07, - 0x07, 0x02, 0x07, - 0x06, 0x03, 0x07, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x0e, 0x0f, 0x0f, - 0x0e, 0x0f, 0x0f, - 0x06, 0x06, 0x06, - 0x06, 0x06, 0x06, - 0x06, 0x03, 0x07, - 0x07, 0x02, 0x07, - 0x03, 0x07, 0x07, - 0x03, 0x03, 0x03, - 0x01, 0x03, 0x03, - 0x01, 0x00, 0x01, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00 - } -}; - - diff --git a/boop/trunk/gui/iconFf.h b/boop/trunk/gui/iconFf.h deleted file mode 100644 index 3787757..0000000 --- a/boop/trunk/gui/iconFf.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\FF.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconFf.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconFf = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x41, 0xe1, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x43, 0xe0, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x10, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconFr.h b/boop/trunk/gui/iconFr.h deleted file mode 100644 index c022efd..0000000 --- a/boop/trunk/gui/iconFr.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\FR.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconFr.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconFr = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x02, 0x03, - 0x41, 0xe0, - 0xe1, 0xf1, - 0xf1, 0xf9, - 0xf9, 0xf9, - 0x41, 0xe1, - 0xe1, 0xf1, - 0xf1, 0xf9, - 0xf9, 0xf9, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x11, - 0x11, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x10, 0x11, - 0x11, 0x13, - 0x13, 0x13, - 0x18, 0x00, - 0x0c, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconHourglas.h b/boop/trunk/gui/iconHourglas.h deleted file mode 100644 index 6e99e15..0000000 --- a/boop/trunk/gui/iconHourglas.h +++ /dev/null @@ -1,173 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconHourglas.data) == 280 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x0e, 0x11, - 0x3f, 0x1e, - 0x7f, 0x3a, - 0xff, 0x6a, - 0xff, 0xca, - 0xff, 0xca, - 0x3f, 0x0a, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3b, 0x0e, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0x3f, 0x0a, - 0xff, 0xca, - 0xff, 0xca, - 0xff, 0x6a, - 0x7f, 0x3a, - 0x3f, 0x1e, - 0x0e, 0x11, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x0f, - 0xfe, 0xfd, - 0x70, 0xb8, - 0xe0, 0x70, - 0xc0, 0xa0, - 0x80, 0x50, - 0x30, 0x80, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x00, - 0xf0, 0x08, - 0x70, 0x88, - 0xb0, 0xc8, - 0xd8, 0x64, - 0x78, 0xe4, - 0x36, 0xf8, - 0xfe, 0xfd, - 0xff, 0x0f, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x80, 0x80, - 0xc1, 0xc0, - 0x61, 0xb3, - 0x3f, 0x12, - 0x1c, 0x0f, - 0x07, 0x00, - 0x1d, 0x0e, - 0x3f, 0x12, - 0x63, 0xb5, - 0xc1, 0xe2, - 0x80, 0xc1, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0x00, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xff, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0x0f, - 0x07, 0x0b, - 0x81, 0x03, - 0xc0, 0x01, - 0xc0, 0x20, - 0xe0, 0x10, - 0xf0, 0x00, - 0xf8, 0x00, - 0xf0, 0x00, - 0xe0, 0x10, - 0xc0, 0x20, - 0xc0, 0x01, - 0x81, 0x03, - 0x03, 0x87, - 0x0e, 0x17, - 0xff, 0x1f, - 0xff, 0xf8, - 0xff, 0xff, - 0x00, 0xff, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x70, 0x88, - 0xfc, 0x78, - 0xfe, 0x7c, - 0xff, 0x76, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x74, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xf7, 0x7c, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xff, 0x74, - 0xfe, 0x75, - 0xff, 0x74, - 0xff, 0x77, - 0xff, 0x77, - 0xff, 0x76, - 0xfe, 0x7c, - 0xfc, 0x78, - 0x70, 0x88 - } -}; - - diff --git a/boop/trunk/gui/iconHourglas_t.h b/boop/trunk/gui/iconHourglas_t.h deleted file mode 100644 index d46a555..0000000 --- a/boop/trunk/gui/iconHourglas_t.h +++ /dev/null @@ -1,178 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Hourglas_t.bmp -// -// ICON_GRAY_TRANSPARENT - 3 bpp (Bit per Pixel) -// sizeof (iconHourglas_t.data) == 420 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconHourglas_t = -{ - /* width = */ 28, - /* height = */ 40, - /* info = */ ICON_INFO (ICON_GRAY_TRANSPARENT) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - // v--- Alpha Channel - 0x0e, 0x11, 0x1f, - 0x3f, 0x1e, 0x3f, - 0x7f, 0x3a, 0x7f, - 0xff, 0x6a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0x3f, 0x0a, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3b, 0x0e, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0x3f, 0x0a, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0xca, 0xff, - 0xff, 0x6a, 0xff, - 0x7f, 0x3a, 0x7f, - 0x3f, 0x1e, 0x3f, - 0x0e, 0x11, 0x1f, - //--- Page 1 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x0f, 0xff, - 0xfe, 0xfd, 0xff, - 0x70, 0xb8, 0xff, - 0xe0, 0x70, 0xff, - 0xc0, 0xa0, 0xff, - 0x80, 0x50, 0xff, - 0x30, 0x80, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xf0, 0x08, 0xff, - 0x70, 0x88, 0xff, - 0xb0, 0xc8, 0xff, - 0xd8, 0x64, 0xff, - 0x78, 0xe4, 0xff, - 0x36, 0xf8, 0xff, - 0xfe, 0xfd, 0xff, - 0xff, 0x0f, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 2 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x80, 0x80, 0x80, - 0xc1, 0xc0, 0xc1, - 0x61, 0xb3, 0xf3, - 0x3f, 0x12, 0xff, - 0x1c, 0x0f, 0xff, - 0x07, 0x00, 0xff, - 0x1d, 0x0e, 0xff, - 0x3f, 0x12, 0xff, - 0x63, 0xb5, 0xf7, - 0xc1, 0xe2, 0xe3, - 0x80, 0xc1, 0xc1, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0x00, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 3 --- - // v--- Alpha Channel - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, - 0xff, 0xfc, 0xff, - 0xff, 0x0f, 0xff, - 0x07, 0x0b, 0xff, - 0x81, 0x03, 0xff, - 0xc0, 0x01, 0xff, - 0xc0, 0x20, 0xff, - 0xe0, 0x10, 0xff, - 0xf0, 0x00, 0xff, - 0xf8, 0x00, 0xff, - 0xf0, 0x00, 0xff, - 0xe0, 0x10, 0xff, - 0xc0, 0x20, 0xff, - 0xc0, 0x01, 0xff, - 0x81, 0x03, 0xff, - 0x03, 0x87, 0xff, - 0x0e, 0x17, 0xff, - 0xff, 0x1f, 0xff, - 0xff, 0xf8, 0xff, - 0xff, 0xff, 0xff, - 0x00, 0xff, 0xff, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, - //--- Page 4 --- - // v--- Alpha Channel - 0x70, 0x88, 0xf8, - 0xfc, 0x78, 0xfc, - 0xfe, 0x7c, 0xfe, - 0xff, 0x76, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xf7, 0x7c, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x74, 0xff, - 0xfe, 0x75, 0xff, - 0xff, 0x74, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x77, 0xff, - 0xff, 0x76, 0xff, - 0xfe, 0x7c, 0xfe, - 0xfc, 0x78, 0xfc, - 0x70, 0x88, 0xf8 - } -}; - - diff --git a/boop/trunk/gui/iconLeo_gray_128.h b/boop/trunk/gui/iconLeo_gray_128.h deleted file mode 100644 index 858328c..0000000 --- a/boop/trunk/gui/iconLeo_gray_128.h +++ /dev/null @@ -1,1189 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Leo_Gray_128.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconLeo_gray_128.data) == 2304 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconLeo_gray_128 = -{ - /* width = */ 128, - /* height = */ 65, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x38, - 0x78, 0x9c, - 0x64, 0xf2, - 0xc2, 0x80, - 0x02, 0xc3, - 0x02, 0xc3, - 0x02, 0xe3, - 0x02, 0xe3, - 0x02, 0xe3, - 0x02, 0xe2, - 0x02, 0xe0, - 0x02, 0xf0, - 0x02, 0xf4, - 0x02, 0xf4, - 0x04, 0xf2, - 0x04, 0xf6, - 0x04, 0xf6, - 0x04, 0xf6, - 0x04, 0xf2, - 0x10, 0xe4, - 0x10, 0xec, - 0xb8, 0x54, - 0xf8, 0x20, - 0xf0, 0x28, - 0xe0, 0x30, - 0xc0, 0xe0, - 0x00, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 1 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0xf7, 0xe8, - 0xff, 0x0f, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x00, 0xff, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0x80, 0x7f, - 0xc0, 0x3f, - 0xe0, 0x1f, - 0xf0, 0x0f, - 0xf8, 0x07, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0xe0, - 0x3f, 0xfe, - 0x03, 0x07, - 0x01, 0x02, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 2 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xe0, 0xc0, - 0xff, 0x3f, - 0x01, 0xfe, - 0x00, 0xff, - 0x80, 0x7f, - 0xe0, 0x1f, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0xfe, - 0x07, 0xfb, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0x00, 0x30, - 0x00, 0x18, - 0x00, 0x88, - 0x00, 0x84, - 0x04, 0x80, - 0x00, 0xc6, - 0x00, 0xc2, - 0x00, 0xe2, - 0x80, 0x62, - 0x82, 0x6c, - 0x06, 0xf8, - 0x84, 0x7e, - 0x84, 0x7e, - 0x8c, 0xf2, - 0x8c, 0xf8, - 0x88, 0xfc, - 0x08, 0xf4, - 0x10, 0xf8, - 0x10, 0xf8, - 0x30, 0xd0, - 0x30, 0xe0, - 0xe0, 0x30, - 0xe0, 0x40, - 0x80, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0xc0, - 0x00, 0x20, - 0x00, 0x30, - 0x00, 0x10, - 0x00, 0x18, - 0x00, 0x08, - 0x08, 0x84, - 0xc8, 0x84, - 0xc8, 0x94, - 0xc8, 0xb4, - 0xe8, 0x9c, - 0xc8, 0xb0, - 0xd8, 0xa8, - 0xd8, 0xa8, - 0xf8, 0x88, - 0xf8, 0x10, - 0xf0, 0x10, - 0xf0, 0x10, - 0xf0, 0x30, - 0xe0, 0x30, - 0xe0, 0x30, - 0xe0, 0x60, - 0xc0, 0xe0, - 0xc0, 0xe0, - 0xc0, 0x80, - 0x80, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 3 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xff, 0xff, - 0xff, 0x00, - 0xfc, 0x03, - 0xf8, 0x07, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x07, - 0xfc, 0x0b, - 0xf8, 0x0c, - 0xe8, 0x1c, - 0x88, 0x7c, - 0x98, 0x68, - 0x98, 0x70, - 0x98, 0x70, - 0xd8, 0x30, - 0xf0, 0x38, - 0xf0, 0x20, - 0xe0, 0x30, - 0xc0, 0xe0, - 0xc0, 0xc0, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x30, 0x68, - 0xfe, 0xfc, - 0xe1, 0x1e, - 0xe0, 0x1e, - 0xf0, 0x0f, - 0xf8, 0x07, - 0xfc, 0x03, - 0xfe, 0x01, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x00, - 0xff, 0x80, - 0xff, 0x44, - 0x7f, 0x4e, - 0x79, 0x4d, - 0x78, 0x4c, - 0x7c, 0x4c, - 0x7e, 0x45, - 0x7f, 0x47, - 0x7e, 0x41, - 0x7e, 0x61, - 0x7e, 0xe1, - 0xff, 0xe0, - 0xff, 0xe0, - 0xff, 0xb0, - 0x3f, 0x30, - 0x1f, 0x3f, - 0x08, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0xf8, 0xfb, - 0xe0, 0xf9, - 0xf0, 0xc8, - 0xf0, 0xec, - 0xf8, 0xe4, - 0xf0, 0xff, - 0xfb, 0xfc, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0x7f, 0x3f, - 0x0f, 0x07, - 0x07, 0x03, - 0x03, 0x01, - 0xc3, 0xe7, - 0xff, 0xff, - 0xff, 0xfc, - 0xff, 0xfa, - 0xff, 0xfc, - 0xff, 0xfa, - 0xff, 0xfc, - 0xff, 0xfe, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0x7f, - 0x00, 0x7c, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 4 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x02, 0x01, - 0x0f, 0x0f, - 0x0f, 0x0c, - 0x1f, 0x18, - 0x3f, 0x70, - 0x7f, 0x30, - 0x7f, 0x60, - 0xff, 0x60, - 0xff, 0x78, - 0xff, 0xe0, - 0xff, 0x70, - 0xff, 0xf0, - 0xff, 0x70, - 0x7f, 0xe8, - 0x7f, 0xe0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf0, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0xff, 0x78, - 0x7f, 0xf8, - 0x7f, 0xf8, - 0x7f, 0xe0, - 0x7f, 0xf0, - 0x7f, 0x38, - 0x3f, 0x70, - 0x3f, 0x7e, - 0x3f, 0x9f, - 0x98, 0xc3, - 0xc0, 0x00, - 0x40, 0x00, - 0x00, 0xc0, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x40, - 0x01, 0xc1, - 0x43, 0xa7, - 0xc7, 0x46, - 0xc7, 0x8c, - 0xcf, 0x8c, - 0x8f, 0xcc, - 0x8f, 0xd8, - 0xdf, 0x9c, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x98, - 0xdf, 0x99, - 0xdf, 0x9b, - 0xdf, 0x9f, - 0xde, 0x9f, - 0xde, 0x9f, - 0xdf, 0x9e, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0x9f, - 0xdf, 0xdf, - 0xcf, 0x8f, - 0xcf, 0xcf, - 0xcf, 0x86, - 0xc0, 0x46, - 0x40, 0x80, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x00, - 0x00, 0x00, - 0x01, 0xa0, - 0x33, 0xc1, - 0x1f, 0x7f, - 0xdf, 0x2f, - 0xff, 0x0f, - 0xdf, 0x2f, - 0x9f, 0x67, - 0x1f, 0xe7, - 0xff, 0x3f, - 0xff, 0xbf, - 0xff, 0xff, - 0xdf, 0xaf, - 0x1f, 0x9e, - 0x1e, 0x0b, - 0x1f, 0x9e, - 0x1f, 0x9f, - 0x1f, 0x9f, - 0x1f, 0x9f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x9f, 0x1f, - 0x8f, 0x1f, - 0x8f, 0x0f, - 0x87, 0x07, - 0x83, 0x03, - 0x81, 0x03, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x00, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x00, - 0x80, 0x80, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x80, - 0x80, 0x80, - 0x80, 0x80, - 0x00, 0x80, - 0x00, 0x00, - //--- Page 5 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0x80, 0x00, - 0xc0, 0x00, - 0x80, 0x40, - 0xc0, 0x00, - 0xc0, 0x00, - 0x80, 0x60, - 0xa0, 0x80, - 0x00, 0xf0, - 0x10, 0xe6, - 0x97, 0x63, - 0xb1, 0x47, - 0xb0, 0x43, - 0xf8, 0x07, - 0xf9, 0xc6, - 0xfe, 0xff, - 0xfe, 0xf9, - 0xf8, 0x17, - 0xf8, 0x07, - 0xfc, 0x03, - 0xfc, 0x03, - 0xfe, 0x00, - 0xff, 0x00, - 0x1e, 0xff, - 0xfd, 0xfc, - 0xf9, 0xff, - 0xff, 0xe1, - 0xff, 0x00, - 0xff, 0x01, - 0xff, 0x00, - 0xff, 0x01, - 0xfb, 0x05, - 0xfb, 0x84, - 0xf9, 0x86, - 0xc1, 0xbe, - 0x01, 0xfe, - 0x03, 0xf8, - 0xff, 0x6f, - 0xff, 0xff, - 0xff, 0xf8, - 0xff, 0xe0, - 0xff, 0x00, - 0xff, 0xa0, - 0xfc, 0xe3, - 0xfc, 0xf2, - 0xf8, 0x86, - 0xf8, 0xc7, - 0xf8, 0xc6, - 0xf8, 0xc6, - 0xfc, 0x82, - 0xfc, 0xc2, - 0xfc, 0x83, - 0x9e, 0xa1, - 0x9e, 0xa3, - 0x0c, 0x92, - 0x00, 0x00, - 0xdb, 0x24, - 0xff, 0x00, - 0xff, 0x00, - 0xfe, 0x01, - 0xff, 0x80, - 0xff, 0xe1, - 0xff, 0xff, - 0xff, 0xff, - 0xfd, 0x73, - 0x3d, 0x71, - 0x3f, 0x39, - 0x3d, 0x7b, - 0x3d, 0x79, - 0x39, 0x3d, - 0x39, 0x3d, - 0x39, 0x3d, - 0x3d, 0x19, - 0x7d, 0x39, - 0x7d, 0x39, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x31, - 0x7d, 0x71, - 0x7d, 0x71, - 0x78, 0x7d, - 0x78, 0x75, - 0x7c, 0x71, - 0x7d, 0x70, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x7c, - 0x79, 0x74, - 0x78, 0x7d, - 0x78, 0x7d, - 0x79, 0x7c, - 0x39, 0x7e, - 0x3d, 0x38, - 0x3f, 0x1f, - 0x1e, 0x1f, - //--- Page 6 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x80, - 0x00, 0x80, - 0x00, 0x40, - 0x00, 0x40, - 0x00, 0x40, - 0x00, 0x60, - 0x00, 0x20, - 0x00, 0xb0, - 0xc0, 0x90, - 0x80, 0xd8, - 0xc0, 0xe8, - 0xe0, 0xc0, - 0xf0, 0x40, - 0x70, 0x68, - 0x70, 0x38, - 0x38, 0x34, - 0x38, 0x3c, - 0x1c, 0x3a, - 0x1c, 0x1a, - 0x1d, 0x0e, - 0x0f, 0x0c, - 0x0f, 0x04, - 0x0f, 0x06, - 0x07, 0x0e, - 0x07, 0x02, - 0x07, 0x02, - 0x07, 0x03, - 0x03, 0x07, - 0x03, 0x03, - 0x03, 0x03, - 0x03, 0x01, - 0x03, 0x01, - 0x01, 0x07, - 0x3d, 0x4f, - 0x7d, 0x3f, - 0xff, 0x7d, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xff, - 0xff, 0xbf, - 0xff, 0xf8, - 0xff, 0xf8, - 0xff, 0xfc, - 0xff, 0xfe, - 0xff, 0xfe, - 0xff, 0x7e, - 0x7c, 0xfe, - 0x7f, 0x3f, - 0x7f, 0x3f, - 0x3f, 0x7f, - 0x3f, 0x3e, - 0x3f, 0x3f, - 0x3f, 0x36, - 0x37, 0x3e, - 0x3f, 0x3f, - 0x3f, 0x3e, - 0x37, 0x1f, - 0x3f, 0x13, - 0x1c, 0x3b, - 0x1e, 0x19, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x1f, - 0x1f, 0x0f, - 0x0f, 0x1f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x07, - 0x07, 0x0f, - 0x0f, 0x07, - 0x07, 0x0f, - 0x0f, 0x0f, - 0x0f, 0x0f, - 0x1f, 0x1f, - 0x1f, 0x37, - 0x3f, 0x2e, - 0x7f, 0x3e, - 0x7f, 0x7f, - 0x3f, 0x7f, - 0x3f, 0x3f, - 0x1f, 0x1f, - 0x0f, 0x07, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 7 --- - 0x10, 0x30, - 0x30, 0x6c, - 0x60, 0xf6, - 0x60, 0xe2, - 0x60, 0xe0, - 0x70, 0xe0, - 0x70, 0xa1, - 0x30, 0xf9, - 0x38, 0x30, - 0x38, 0x18, - 0x1c, 0x38, - 0x1c, 0x1a, - 0x0e, 0x0c, - 0x0e, 0x06, - 0x07, 0x06, - 0x07, 0x03, - 0x03, 0x03, - 0x01, 0x03, - 0x01, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x01, - 0x00, 0x01, - 0x01, 0x00, - 0x01, 0x00, - 0x01, 0x01, - 0x01, 0x01, - 0x01, 0x01, - 0x00, 0x01, - 0x00, 0x01, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - //--- Page 8 --- - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00, - 0x00, 0x00 - } -}; - - diff --git a/boop/trunk/gui/iconPause.h b/boop/trunk/gui/iconPause.h deleted file mode 100644 index 087924c..0000000 --- a/boop/trunk/gui/iconPause.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Pause.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconPause.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconPause = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf9, 0xf9, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf9, 0xf9, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x13, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x13, 0x13, - 0x13, 0x13, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconPlay.h b/boop/trunk/gui/iconPlay.h deleted file mode 100644 index 6224718..0000000 --- a/boop/trunk/gui/iconPlay.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Play.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconPlay.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconPlay = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0x01, 0x01, - 0xf9, 0xf9, - 0xf1, 0xf9, - 0xe1, 0xf1, - 0x41, 0xe1, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x10, 0x10, - 0x13, 0x13, - 0x11, 0x13, - 0x10, 0x11, - 0x10, 0x10, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/iconStop.h b/boop/trunk/gui/iconStop.h deleted file mode 100644 index ffaf217..0000000 --- a/boop/trunk/gui/iconStop.h +++ /dev/null @@ -1,56 +0,0 @@ -//////////////////////////////////////////////////// -// This file was generated by the tool GrayScaler. -// Source bitmap: R:\Project\GrayScaler\Icons\Stop.bmp -// -// ICON_GRAY - 2 bpp (Bit per Pixel) -// sizeof (iconStop.data) == 52 -// -//////////////////////////////////////////////////// -#include "icon.h" - -#ifndef ICON_INFO -#define ICON_INFO(i) i, -#endif - - -const ICON iconStop = -{ - /* width = */ 13, - /* height = */ 13, - /* info = */ ICON_INFO (ICON_GRAY) - /* data [] = */ - { - // Bit 0 is the upper most pixel - // of the page, which is 8 pixel high - //--- Page 0 --- - 0xfc, 0xfa, - 0x06, 0x03, - 0x03, 0x00, - 0x01, 0x01, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0xf1, 0xf1, - 0x01, 0x01, - 0x03, 0x00, - 0x06, 0x03, - 0xfc, 0xfa, - //--- Page 1 --- - 0x07, 0x0b, - 0x0c, 0x18, - 0x18, 0x00, - 0x10, 0x10, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x11, 0x11, - 0x10, 0x10, - 0x10, 0x00, - 0x08, 0x18, - 0x07, 0x0b - } -}; - - diff --git a/boop/trunk/gui/mainmenu.c b/boop/trunk/gui/mainmenu.c deleted file mode 100644 index 406f7c0..0000000 --- a/boop/trunk/gui/mainmenu.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "menu.h" -#include "testmenu.h" -#include "gamesmenu.h" -#include "settingsmenu.h" -#include "toolsmenu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "global.h" -#include "flash.h" -#ifndef DEBUGMODE - #include "sounds.h" - #include "sound3.h" - #include "sound.h" -#endif -#include "version.h" - -unsigned int testdata1, testdata2; - - -void show_info(void) { - unsigned short flashID; - unsigned short hwID; - flashID = getFlashID(); - draw_hexC (0, 30, flashID, LCD_COLOR_B, DRAW_PUT); - - hwID = GetHWversion(); - draw_hexS (0, 38, hwID, LCD_COLOR_B, DRAW_PUT); - - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0,0,"Info", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - draw_string(0,14,"Flash \n" - "Manuf. ID\n" - "Device ID\n" - "\n" - "Betty\n" - "HW Version\n", LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 23, (flashID>>8), LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 32, (flashID&0x00ff), LCD_COLOR_B, DRAW_PUT); - draw_hexC (65, 59, (unsigned char)hwID, LCD_COLOR_B, DRAW_PUT); - draw_string (0,77,"Boop", LCD_COLOR_B, DRAW_PUT); -#ifdef RELEASE - draw_numU (65,86,SVNVERSION+1,0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,86,"SVN Release", LCD_COLOR_B, DRAW_PUT); -#else - draw_numU (65,86,SVNVERSION,0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,86,"SVN Revision", LCD_COLOR_B, DRAW_PUT); -#endif - draw_string (0,95,__DATE__, LCD_COLOR_B, DRAW_PUT); - draw_string (0,104,__TIME__, LCD_COLOR_B, DRAW_PUT); - - set_font(SMALLFONT); - - waitKeyUpDown(); -} // show_info - - -void show_credits(void) -{ - lcd_fill(0); - set_font(BOLDFONT); - draw_string (0,0,"Credits", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - draw_string (0,14,"Netguy\tBasics\n" - "Telekatz\tBasics, IR/RF\n" - "Theborg\tFirst Steps, HW\n" - "Colibri\tFlash SW\n" - "Damaltor\tSupport\n" - "Pr0nbug\tFirst Steps\n" - "Asgart\tForum/Wiki\n" - "Spessi\tSurport, HW", LCD_COLOR_B, DRAW_PUT); - - draw_string(0,95,"Und alle Anderen\n" - "die vergessen wurden.", LCD_COLOR_B, DRAW_PUT); - - draw_string(0,120,"Thanks to Max Fleischer\n" - "for a great Cartoon!", LCD_COLOR_B, DRAW_PUT); - set_font(BOLDFONT); - draw_string (8,150,"www.bettyhacks.com", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); -#ifndef DEBUGMODE - playSound((unsigned char*)sound1_data, sound1_len); - waitSound(); - playSound((unsigned char*)sound2_data, sound2_len); - waitSound(); -#endif - waitKeyUpDown(); -} // show_credits - -const struct MENU_ENTRY mainMenuEntries[] = -{ - { 0, (void*)&gamesMenu, MENUENTRY, "Games", "Play some games" }, - { 0, (void*)&testMenu, MENUENTRY, "TestStuff", "Various tests" }, - { enter_settings_menu, 0, FUNCENTRY, "Settings", "Change settings" }, - { 0, (void*)&toolsMenu, MENUENTRY, "Tools", "Tools" }, - { show_credits, 0, FUNCENTRY, "Credits", "Show Credits" }, - { show_info, 0, FUNCENTRY, "Info", "Show Info" } -}; - - -const struct MENU mainMenu = -{ - NUM_OF_ELEMENTS (mainMenuEntries), (MENU_ENTRY*)&mainMenuEntries, "Main Menu" -}; diff --git a/boop/trunk/gui/mainmenu.h b/boop/trunk/gui/mainmenu.h deleted file mode 100644 index d53d3df..0000000 --- a/boop/trunk/gui/mainmenu.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - mainmenu.h - the main menu for boop - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef MAINMENU_H -#define MAINMENU_H - -extern struct MENU mainMenu; - -#endif diff --git a/boop/trunk/gui/menu.c b/boop/trunk/gui/menu.c deleted file mode 100644 index 7e5a484..0000000 --- a/boop/trunk/gui/menu.c +++ /dev/null @@ -1,250 +0,0 @@ -/* - menu.c - menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "global.h" -#include "menu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "lpc2220.h" - -//----------------------------------------------------------------------------- -#if FF_LARGE_MENU -#define MENU_FONT SMOOTHFONT -#define MENU_LINE_HEIGHT (SMOOTHFONT_HEIGHT+2) -#else -#define MENU_FONT SMALLFONT -#define MENU_LINE_HEIGHT SMALLFONT_HEIGHT+1 -#endif - -#define MENU_HEAD_LINE_HEIGHT (BOLDFONT_HEIGHT+2+2+2) -#define MENU_LINE_WIDTH (LCD_SIZE_X - 10) -#define MENU_BOTTOM_LINE_HEIGHT (SMALLFONT_HEIGHT+5) - -#define MENU_ARROW_SIZE (min(MENU_LINE_HEIGHT-6, (LCD_SIZE_X-MENU_LINE_WIDTH-1)/2+1)) - -#define MENU_START_Y MENU_HEAD_LINE_HEIGHT -#define MENU_LIST_LEN ((LCD_SIZE_Y - MENU_HEAD_LINE_HEIGHT - MENU_BOTTOM_LINE_HEIGHT) / MENU_LINE_HEIGHT) - -#define MENU_SCROLLBAR_HEIGHT (MENU_LINE_HEIGHT*MENU_LIST_LEN-10-10-3) // [px] -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -int menu_execentry(struct MENU_ENTRY *entry) -{ - unsigned int *val; - struct MENU *m; - - draw_block (0, 100, LCD_SIZE_X, 8, LCD_COLOR_B, DRAW_ERASE); - switch(entry->type) - { - case INTENTRY: - val = (unsigned int*)entry->data; - draw_block (0, 50, LCD_SIZE_X, 8, LCD_COLOR_B, DRAW_ERASE); - draw_hexW (0, 50, *val, LCD_COLOR_B, DRAW_PUT); - break; - case FUNCENTRY: - entry->exec(); - return 1; - break; - case MENUENTRY: - m = (MENU*)entry->data; - if(m->num_entries != 0) - { - menu_exec((MENU*)entry->data); - return 1; - } - break; - default: - break; - } - return 0; -} // menu_execentry -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void menu_exec(struct MENU *menu) -{ - unsigned char total; // entries in menu - unsigned char csel; // selected entry - - unsigned char moff; // first entry displayed - unsigned char moffold; // only used to detect change - - unsigned char set; // iterator for visible entries - - csel = 0; - moff = 0; - -again: - lcd_fill(0); - - //----------------------------------------- - // Menu head line - set_font(BOLDFONT); - draw_string (0, 0, (char*)menu->name, LCD_COLOR_B, DRAW_PUT); - draw_block (0, BOLDFONT_HEIGHT+2, LCD_SIZE_X, 2, LCD_COLOR_B, DRAW_PUT); - // Menu bottom line - draw_block (0, LCD_SIZE_Y-SMALLFONT_HEIGHT-3, LCD_SIZE_X, 2, LCD_COLOR_B, DRAW_PUT); - //----------------------------------------- - - total = menu->num_entries; - moffold = total; - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - // draw list: initially or when selection is on next 'page' and all entries 'move' - if (moff!=moffold) - { - // menu list - set_font (MENU_FONT); - draw_block (0, MENU_START_Y, LCD_SIZE_X, MENU_LINE_HEIGHT*MENU_LIST_LEN, LCD_COLOR_B, DRAW_ERASE); - for (set=moff; (setentry [set].name, LCD_COLOR_B, DRAW_PUT); - } - // scroll arrows - if (moff) // not the first page - { - draw_arrow (MENU_LINE_WIDTH+1, MENU_START_Y+3, - ARROW_UP, MENU_ARROW_SIZE, LCD_COLOR_B, DRAW_PUT); - } - if (total > moff+MENU_LIST_LEN) // not the last page - { - draw_arrow (MENU_LINE_WIDTH+1, MENU_LINE_HEIGHT*MENU_LIST_LEN+7, - ARROW_DOWN, MENU_ARROW_SIZE, LCD_COLOR_B, DRAW_PUT); - } - // scroll handle - if (total > MENU_LIST_LEN) - { - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_PUT); - } - // select entry (invert) - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - } - moffold = moff; - - //----------------------------------------- - // Menu bottom line - set_font (SMALLFONT); - draw_block ( 0, LCD_SIZE_Y-SMALLFONT_HEIGHT, LCD_SIZE_X, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_ERASE); - - // entry number - draw_char (0, LCD_SIZE_Y-SMALLFONT_HEIGHT, '0' + (csel+1)/10, LCD_COLOR_B, DRAW_PUT); - draw_char (6, LCD_SIZE_Y-SMALLFONT_HEIGHT, '0' + (csel+1)%10, LCD_COLOR_B, DRAW_PUT); - - // entry help text - draw_string (16, LCD_SIZE_Y-SMALLFONT_HEIGHT, (char*)menu->entry [csel].help, LCD_COLOR_B, DRAW_PUT); - //----------------------------------------- - - // wait for key press - waitKeyUpDown(); - - // deselect current entry - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - - // clear scroll handle - if (total > MENU_LIST_LEN) - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_XOR); - - if(KEY_OK) - { - if(menu_execentry((MENU_ENTRY*)&menu->entry[csel])) - goto again; - } - if(KEY_Up) - { - csel--; - if(csel= total) - { - if (total > MENU_LIST_LEN) - moff = total - MENU_LIST_LEN; - csel = total-1; - } - } - if(KEY_Down) - { - csel++; - if (csel == MENU_LIST_LEN+moff) - moff++; - if (csel == total) - { - moff = 0; - csel = 0; - } - } - if(KEY_Left) - { - csel = 0; - moff = 0; - } - if(KEY_Right) - { - csel = total -1; - if (total > MENU_LIST_LEN) - moff = total - MENU_LIST_LEN; - } - unsigned char num = getKeynum(); - if (num >= 16 && num <= 25) - { - csel = num - 16; - if (csel >= total) - csel = total-1; - if(csel < moff) - moff = csel; - if (csel >= MENU_LIST_LEN-moff) - moff = csel - MENU_LIST_LEN+1; - if(menu_execentry((MENU_ENTRY*)&menu->entry[csel])) - goto again; - } - - // select new entry (invert) - draw_block (0, MENU_START_Y + ((csel-moff) * MENU_LINE_HEIGHT), - MENU_LINE_WIDTH, MENU_LINE_HEIGHT, LCD_COLOR_B, DRAW_XOR); - - // scroll handle moved - if (total > MENU_LIST_LEN) - draw_block (MENU_LINE_WIDTH+1, MENU_START_Y + 10 + (MENU_SCROLLBAR_HEIGHT/(total-1))*(csel), - 9, MENU_SCROLLBAR_HEIGHT/(total-1), - LCD_COLOR_DG, DRAW_PUT); - } // while (!KEY_Exit) -} // menu_exec -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void init_menu(void) -{ -} -//----------------------------------------------------------------------------- - diff --git a/boop/trunk/gui/menu.h b/boop/trunk/gui/menu.h deleted file mode 100644 index 30f04b6..0000000 --- a/boop/trunk/gui/menu.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - menu.h - menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef MENU_H -#define MENU_H - -#define NONE 0 -#define INTENTRY 1 -#define FUNCENTRY 2 -#define MENUENTRY 3 - -typedef void(*menu_fn)(void); - -typedef struct MENU_ENTRY -{ - menu_fn exec; - void *data; - unsigned char type; - char *name; - char *help; -} MENU_ENTRY; - -typedef struct MENU -{ - unsigned int num_entries; - struct MENU_ENTRY *entry; - char *name; -} MENU; - -void init_menu(void); - -void menu_exec(struct MENU *menu); -int menu_execentry(struct MENU_ENTRY *entry); - -#endif diff --git a/boop/trunk/gui/settingsmenu.c b/boop/trunk/gui/settingsmenu.c deleted file mode 100644 index 5f3f469..0000000 --- a/boop/trunk/gui/settingsmenu.c +++ /dev/null @@ -1,196 +0,0 @@ -/* - settingsmenue.c - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "menu.h" -#include "settingsmenu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "rtc.h" -#include "ir_selector.h" -#include "backlight.h" -#include "bfs.h" -#include "rf.h" -#include "ir_capture.h" -#include "controls.h" -#include "global.h" - -extern volatile unsigned char bl_val; -extern unsigned int bl_timeout; -extern unsigned char bl_max; -extern unsigned char bl_speed; -unsigned char lcd_contrast; - -const struct MENU_ENTRY settingsMenuEntries[] = -{ - { change_clock, 0, FUNCENTRY, "Clock", "set time/date" }, - { RC_setting, 0, FUNCENTRY, "RC keys", "assign RC keys" }, - { display_setting, 0, FUNCENTRY, "Display", "backlight, contrast" }, - { RF_setting, 0, FUNCENTRY, "RF", "ID, channel" }, - { RAW_learnmenue, 0, FUNCENTRY, "IR learn", "Learn IR commands" }, -}; - -const struct MENU settingsMenu = -{ - 5, (MENU_ENTRY*)&settingsMenuEntries, "Settings" -}; - -const struct settings_ default_settings = -{ - 0x02, // version change this when modifying the struct - 63, // bl_max hardware limit of LCD controller - LCD_CONTRAST, - 2, // bl_speed; - 1000 // bl_timeout -}; - -// change handlers - -void brightness_onchange(FORM* form, CONTROL* control) { - bl_max=((NUMBOX*)control)->value; - setBacklight(bl_max); -} - -void timeout_onchange(FORM* form, CONTROL* control) { - bl_timeout=((NUMBOX*)control)->value * 200; - setBacklight(bl_max); -} - -void contrast_onchange(FORM* form, CONTROL* control) -{ - lcd_contrast = ((NUMBOX*)control)->value; - //~ lcd_set_contrast(0x3A); - lcd_set_contrast(lcd_contrast); -} - -void speed_onchange(FORM* form, CONTROL* control) -{ - bl_speed=((NUMBOX*)control)->value; - //~ setBLSpeed(bl_speed); -} - -// the submenus - -void display_setting(void) { - - const LABEL label1 = {BC_Labelnotab, 0,15,100,10,BOLDFONT,0,"Brightness",0}; - NUMBOX numbox1 = {BC_Numbox, 0,25, 13, 9,SMALLFONT,bl_val,0,63,brightness_onchange,NULL}; - const LABEL label2 = {BC_Labelnotab, 0,37,100,10,BOLDFONT,0,"Contrast",0}; - NUMBOX numbox2 = {BC_Numbox, 0,47, 19, 9,SMALLFONT,lcd_contrast,0,63,contrast_onchange,NULL}; - const LABEL label3 = {BC_Labelnotab, 0,59,100,10,BOLDFONT,0,"Backlight timeout",0}; - NUMBOX numbox3 = {BC_Numbox, 0,69, 19, 9,SMALLFONT,bl_timeout/200,1,200,timeout_onchange,NULL}; - const LABEL label4 = {BC_Labelnotab, 0,81,100,10,BOLDFONT,0,"Backlight fade time",0}; - NUMBOX numbox4 = {BC_Numbox, 0,91, 19, 9,SMALLFONT,bl_speed,1,6,speed_onchange,NULL}; - - CONTROL* controls[8] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&label4, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2, - (CONTROL*)&numbox3, - (CONTROL*)&numbox4}; - - FORM form = {"Display settings"," ",0,0,0,0,controls,4,8,0,0}; - form_exec(&form); // controls.c - - // grayscale staircase test pattern for calibration - // form_exec->form_draw clears the screen - // either add this as a control or - // clear screen manually before form_exec - //~ draw_block ( 0, 80, 20, 20, LCD_COLOR_B, DRAW_PUT); - //~ draw_block (21, 80, 20, 20, LCD_COLOR_DG, DRAW_PUT); - //~ draw_block (42, 80, 20, 20, LCD_COLOR_LG, DRAW_PUT); -} - -void RF_setting(void) { - struct RFsettings_ RFsettings; - - BFS_LoadFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - - const LABEL label1 = {BC_Labelnotab, 0,15,100,10,BOLDFONT,0,"Device address",0}; - NUMBOX numbox1 = {BC_Numbox, 0,25, 19, 9,SMALLFONT,RFsettings.address,1,127,NULL,NULL}; - const LABEL label2 = {BC_Labelnotab, 0,37,100,10,BOLDFONT,0,"Channel",0}; - NUMBOX numbox2 = {BC_Numbox, 0,47, 19, 9,SMALLFONT,RFsettings.channel,0,255,NULL,NULL}; - - CONTROL* controls[4] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2}; - - FORM form = {"RF settings"," ",0,0,0,0,controls,2,4,0,0}; - - form_exec(&form); - - RFsettings.address = numbox1.value; - RFsettings.channel = numbox2.value; - - BFS_SaveFile(BFS_ID_RFsettings, sizeof(struct RFsettings_), (unsigned char*) &RFsettings); - load_RF_setting(); -} - -// learned remotes -void load_RC_setting(void) { - - if(BFS_LoadFile(BFS_ID_remotes, sizeof(struct irDeviceTable_), (unsigned char*) &irDevTab) != sizeof(struct irDeviceTable_)) { - irDevTab = default_irDevTab; - BFS_SaveFile(BFS_ID_remotes, sizeof(struct irDeviceTable_), (unsigned char*) &irDevTab); - draw_string(0, 30, "default RC load", 3, DRAW_PUT); - } -} - -// load values stored in flash to ram -// called by main() for init -void load_setting(void) { - struct settings_ settings; - - BFS_LoadFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); - - // if neccessary, use hard-coded defaults - if(settings.version != default_settings.version) - { - settings = default_settings; - BFS_SaveFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); - draw_string(0, 40, "default settings load", 3, DRAW_PUT); - } - // backlight // TODO: see void initBacklight(void) in backlight.c) - bl_timeout = settings.bl_timeout; - bl_max = settings.bl_max; - setBacklight(bl_max); - bl_speed = settings.bl_speed; - - // LCD contrast - lcd_contrast = settings.lcd_contrast ; - lcd_set_contrast(lcd_contrast); -} - -// called by the parent menu -void enter_settings_menu(void) { - struct settings_ settings; - - // run menu - menu_exec((struct MENU *)&settingsMenu); - - // save changes - settings = default_settings; - settings.bl_timeout = bl_timeout; - settings.bl_max = bl_max; - settings.lcd_contrast = lcd_contrast; - settings.bl_speed = bl_speed; - BFS_SaveFile(BFS_ID_settings, sizeof(struct settings_), (unsigned char*) &settings); -} diff --git a/boop/trunk/gui/settingsmenu.h b/boop/trunk/gui/settingsmenu.h deleted file mode 100644 index fde3564..0000000 --- a/boop/trunk/gui/settingsmenu.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - settingsmenue.h - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef SETTINGSMENU_H -#define SETTINGSMENU_H - -extern const struct MENU settingsMenu; - -struct settings_ { - unsigned char version; - unsigned char bl_max; - unsigned char lcd_contrast; - unsigned char bl_speed; - unsigned int bl_timeout; -}; - -void RF_setting(void); -void display_setting(void); -void load_RC_setting(void); -void load_setting(void); -void enter_settings_menu(void); - -#endif diff --git a/boop/trunk/gui/testmenu.c b/boop/trunk/gui/testmenu.c deleted file mode 100644 index 792d712..0000000 --- a/boop/trunk/gui/testmenu.c +++ /dev/null @@ -1,1247 +0,0 @@ -/* - testmenu.c - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "menu.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "backlight.h" -#include "adc.h" -#include "rf.h" -#include "flash.h" -#include "ir_raw.h" -#include "ir_capture.h" -#include "ir_selector.h" -#include "infrared.h" -#include "sid.h" -#include "timerfuncs.h" -#include "sound.h" -#include "lpc2220.h" -#include "controls.h" -#include "global.h" -#include "cc1100.h" -#include "rf.h" -#include "irq.h" -#include "serial.h" -#include "rtctimer.h" - -#include "icon.h" -#include "iconLeo_gray_128.h" - -#define TRANSPARENT_CROSS 1 // 0/1 -#if TRANSPARENT_CROSS -# include "iconCross_t.h" -# define ICON_CROSS iconCross_t -#else -# include "iconCross.h" -# define ICON_CROSS iconCross -#endif - -#include "iconHourglas.h" -#include "iconHourglas_t.h" - -//#include "sidfiles.h" - -extern volatile unsigned char bat_state; - -unsigned int testdata1, testdata2; - -#define MAX_SOFTMENU 16 - -void test_circle(void) -{ - lcd_fill (LCD_COLOR_W); - draw_disc (20, 20, 18, LCD_COLOR_B, DRAW_PUT); - draw_disc (20, 20, 14, LCD_COLOR_B, DRAW_XOR); - - draw_qdisc (60, 20, 18, 0, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 40, 18, 1, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 60, 18, 2, LCD_COLOR_B, DRAW_PUT); - draw_qdisc (60, 80, 18, 3, LCD_COLOR_B, DRAW_PUT); - - draw_qcircle (100, 20, 18, 0, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 40, 18, 1, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 60, 18, 2, LCD_COLOR_B, DRAW_PUT); - draw_qcircle (100, 80, 18, 3, LCD_COLOR_B, DRAW_PUT); - - - draw_circle (30,120,20, LCD_COLOR_B, DRAW_PUT); - - waitKeyUpDown(); -} - -void test_movearound(void) -{ - int xpos=0; - int ypos=0; - int oldx=0; - int oldy=0; - - lcd_fill (LCD_COLOR_W); - draw_disc (xpos+5, ypos+5, 5, LCD_COLOR_B, DRAW_PUT); - while (!KEY_Exit) - { - waitKeyUpDown(); - oldx=xpos; - oldy=ypos; - if (KEY_Up) - ypos -= 3; - if (KEY_Down) - ypos += 3; - if (KEY_Left) - xpos -= 3; - if (KEY_Right) - xpos += 3; - - if (xpos > 117) - xpos = 117; - if (xpos < 0) - xpos = 0; - if (ypos > 149) - ypos = 149; - if (ypos < 0) - ypos = 0; - - draw_disc (oldx+5, oldy+5, 5, LCD_COLOR_B, DRAW_ERASE); - draw_disc (xpos+5, ypos+5, 5, LCD_COLOR_B, DRAW_PUT); - } -} - - -void test_frame(void) -{ - lcd_fill (LCD_COLOR_W); - - draw_frame (0,0,40,40,4,0, LCD_COLOR_B, DRAW_PUT); - draw_frame (42,0,40,40,3,16, LCD_COLOR_B, DRAW_PUT); - draw_frame (84,0,40,40,7,3, LCD_COLOR_B, DRAW_PUT); - - - draw_frame (0,42,40,40,4,7, LCD_COLOR_B, DRAW_PUT); - draw_frame (42,42,40,40,4,8, LCD_COLOR_B, DRAW_PUT); - draw_frame (84,42,40,40,1,7, LCD_COLOR_B, DRAW_PUT); - - waitKeyUpDown(); -} - -void test_frame2(void) -{ - - unsigned char t, r; - t = 1; - r = 0; -again: - lcd_fill (LCD_COLOR_W); - - draw_string(0, 152, "t:", LCD_COLOR_B, DRAW_PUT); - draw_numU(12,152,t,0,LCD_COLOR_B,DRAW_PUT); - draw_string(64, 152, "r:", LCD_COLOR_B, DRAW_PUT); - draw_numU(76,152,r,0,LCD_COLOR_B,DRAW_PUT); - - draw_frame (0,0,LCD_SIZE_X,128,t,r, LCD_COLOR_B, DRAW_PUT); - - while(!KEY_Exit) - { - waitKeyUpDown(); - if(KEY_Vplus) - { - t++; - if(t>64) - t = 1; - goto again; - } - if(KEY_Vminus) - { - if(t==1) - t = 64; - else - t--; - goto again; - } - if(KEY_Pplus) - { - r++; - if(r>63) - r = 0; - goto again; - } - if(KEY_Pminus) - { - if(r==0) - r = 63; - else - r--; - goto again; - } - } -} - -#define DRAW_FONTS_LINESPACE 1 -#define DRAW_FONTS_XSTART 15 -void draw_fonts () -{ - unsigned short y = 10; - unsigned short h; - - lcd_fill (LCD_COLOR_W); -#if 0 - set_font (SMOOTHFONT); - draw_string (0, y, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (15, y+1, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (30, y+2, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (45, y+3, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (60, y+5, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (75, y+6, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (90, y+7, "ÜJ", LCD_COLOR_B, DRAW_PUT); - draw_string (105, y+8, "ÜJ", LCD_COLOR_B, DRAW_PUT); - y += 8; - y += SMOOTHFONT_HEIGHT + DRAW_FONTS_LINESPACE; -#endif - - set_font (SMALLFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(SMALLFONT); - draw_string (DRAW_FONTS_XSTART, y, "Small Font", LCD_COLOR_B, DRAW_PUT); - y += SMALLFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (DOUBLEFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, DOUBLEFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(DOUBLEFONT); - draw_string (DRAW_FONTS_XSTART, y, "Double Font", LCD_COLOR_B, DRAW_PUT); - y += DOUBLEFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font(BOLDFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, BOLDFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (BOLDFONT); - draw_string (DRAW_FONTS_XSTART, y, "Bold Font", LCD_COLOR_B, DRAW_PUT); - y += BOLDFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (BOLDDOUBLEFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, BOLDDOUBLEFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(BOLDDOUBLEFONT); - draw_string (DRAW_FONTS_XSTART, y, "B.Double", LCD_COLOR_B, DRAW_PUT); - y += BOLDDOUBLEFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (SMALLFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y+1, DRAW_FONTS_XSTART-1, SMALLFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (SMALLFONT); - draw_string (DRAW_FONTS_XSTART+1, y + 1, "Invers Small Font", LCD_COLOR_B, DRAW_PUT); - draw_block (DRAW_FONTS_XSTART, y, LCD_SIZE_X, SMALLFONT_HEIGHT+2, LCD_COLOR_B, DRAW_XOR); - y += SMALLFONT_HEIGHT + 2 + DRAW_FONTS_LINESPACE; - - set_font (SMOOTHFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y, DRAW_FONTS_XSTART-1, SMOOTHFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+1, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font(SMOOTHFONT); - draw_string (DRAW_FONTS_XSTART, y, "Smooth Font", LCD_COLOR_B, DRAW_PUT); - y += SMOOTHFONT_HEIGHT + DRAW_FONTS_LINESPACE; - - set_font (SMOOTHFONT); - h = get_stringheight ("gÜJ"); - draw_block (0, y+1, DRAW_FONTS_XSTART-1, SMOOTHFONT_HEIGHT, LCD_COLOR_B, DRAW_PUT); - set_font (SMALLFONT); - draw_numU (1, y+2, h, 0, LCD_COLOR_B, DRAW_XOR); - set_font (SMOOTHFONT); - draw_string (DRAW_FONTS_XSTART+1, y + 1, "Invers Smooth", LCD_COLOR_B, DRAW_PUT); - draw_block (DRAW_FONTS_XSTART, y, LCD_SIZE_X, SMOOTHFONT_HEIGHT+2, LCD_COLOR_B, DRAW_XOR); - y += SMOOTHFONT_HEIGHT + 2 + DRAW_FONTS_LINESPACE; - - set_font(BOLDFONT); - waitKeyUpDown(); -} - -void test_logo(void) -{ - lcd_fill (LCD_COLOR_W); - draw_logo(); - waitKeyUpDown(); -} - - - -//----------------------------------------------------------------------------- -#undef ICON_INFO -#define ICON_INFO(i) - -#undef ICON_INFO_ELEMENT -#define ICON_INFO_ELEMENT - -#undef ICON -#define ICON iconElement_t - -#include "iconFr.h" -#include "iconPlay.h" -#include "iconPause.h" -#include "iconStop.h" -#include "iconFf.h" - -static const ICON* const iconList [] = -{ - &iconFr, - &iconPlay, - &iconPause, - &iconStop, - &iconFf -}; - -//----------------------------------------------------------------------------- -#define HOURGLAS_CENTER 120 -void test_DrawIcon (int x, int y, int h, int w) -{ - int i; - int ix; - - lcd_fill (LCD_COLOR_W); - - draw_block (LCD_SIZE_X / 2, LCD_SIZE_Y / 2, - 32, HOURGLAS_CENTER - LCD_SIZE_Y / 2 + 2, - LCD_COLOR_LG, DRAW_NORCU); - draw_block (LCD_SIZE_X / 2, HOURGLAS_CENTER, - 32, LCD_SIZE_Y - HOURGLAS_CENTER, LCD_COLOR_DG, DRAW_NORCU); - - drawIcon (0, 10, &iconLeo_gray_128, LCD_COLOR_B, DRAW_PUT); - - drawIcon (LCD_SIZE_X / 2 - iconHourglas.width / 2, HOURGLAS_CENTER - iconHourglas.height / 2, - &iconHourglas, LCD_COLOR_B, DRAW_PUT); - drawIcon (LCD_SIZE_X / 2 + 32 - iconHourglas_t.width / 2, HOURGLAS_CENTER - iconHourglas.height / 2, - &iconHourglas_t, LCD_COLOR_B, DRAW_ALPHA); - -#if TRANSPARENT_CROSS - drawIcon (x, y, &ICON_CROSS, LCD_COLOR_B, DRAW_ALPHA); -#else - drawIcon (x, y, &ICON_CROSS, LCD_COLOR_B, DRAW_PUT); -#endif - - //------------------------------------------------------- - ix = w; - for (i = 0; i < NUM_OF_ELEMENTS (iconList); i++) - { - drawIconExt (ix, LCD_SIZE_Y-1 - h, - iconList [i]->data, - iconList [i]->width, iconList [i]->height, ICON_GRAY, - LCD_COLOR_B, DRAW_NORCU); - ix += w + iconList [i]->width; - } - //------------------------------------------------------- - draw_numU (0, 0, - x, 0, LCD_COLOR_B, DRAW_NORCU); - draw_numU (30, 0, - y, 0, LCD_COLOR_B, DRAW_NORCU); -} // test_DrawIcon -//----------------------------------------------------------------------------- - - - -//----------------------------------------------------------------------------- -void test_icon () -{ - int i; - int x, y; - int w = 0; - int h = 0; - - set_font (SMALLFONT); - - x = LCD_SIZE_X / 2 - ICON_CROSS.width / 2; - y = LCD_SIZE_Y / 2 - ICON_CROSS.height / 2; - - for (i = 0; i < NUM_OF_ELEMENTS (iconList); i++) - { - w += iconList [i]->width; - h = max (h, iconList [i]->height); - } - w = LCD_SIZE_X - w; - w /= NUM_OF_ELEMENTS (iconList) + 1; - - test_DrawIcon (x, y, h, w); - - //waitKeyUpDown (); - - setBacklight (BL_AUTO); - while (KEY_Exit) {}; - waitKeyUp (); - while (1) - { - if (isKeyPressed ()) - { - setBacklight (BL_AUTO); // pwm value - if (KEY_Exit) - return; - //--------------------------------------- - - if (KEY_Up) - y--; - else if (KEY_Down) - y++; - else if (KEY_Left) - x--; - else if (KEY_Right) - x++; - else if (KEY_OK) - { - x += 10; - y -= 10; - } - else - { - unsigned char num = getKeynum (); - if (num >= 16 && num <= 25) - { - if (num == 25) - num = 0; - else - num -= 15; - - x += num; - y -= num; - } - } - - if (x >= LCD_SIZE_X) - x = 0; - else if (x < 0) - x = LCD_SIZE_X-1 - ICON_CROSS.width; - - if (y >= LCD_SIZE_Y) - y = 0; - else if (y < 0) - y = LCD_SIZE_Y-1 - ICON_CROSS.height; - - test_DrawIcon (x, y, h, w); - - //--------------------------------------- - waitKeyUp (); - } // if (isKeyPressed ()) - } // while (1) -} // test_icon -//----------------------------------------------------------------------------- - - - -void fp1 () -{ - unsigned char x,y; - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - - for(x=0;x<16;x++) - { - for(y=0;y<16;y++) - { - draw_char (x*8, (y*8)+16,x*16+y, LCD_COLOR_B, DRAW_PUT); - } - } - waitKeyUpDown(); -} - -extern volatile unsigned char bl_val; - -void set_bl(void) -{ - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - - draw_string (0, 20, "Set Backlight:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 30, "Prog/Vol+: brighter", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 40, "Prog/Vol-: darker", LCD_COLOR_B, DRAW_PUT); - draw_numU (0, 64, bl_val, 0, LCD_COLOR_B, DRAW_PUT); - - while(!KEY_Exit) - { - waitKeyUpDown(); - bl_val &= 0x3F; - if(KEY_Pplus || KEY_Pminus || KEY_Vplus || KEY_Vminus) - { - draw_block(0,64,32,8,3,DRAW_ERASE); - if(KEY_Pplus) - bl_val++; - if(KEY_Pminus) - bl_val--; - if(KEY_Vplus) - bl_val+=10; - if(KEY_Vminus) - bl_val-=10; - draw_numU (0, 64, bl_val, 0, LCD_COLOR_B, DRAW_PUT); - } - } - -} - -/* -void softfunc1(void) -{ - set_font(BOLDFONT); -draw_block (0, 80, LCD_SIZE_X, 20, LCD_COLOR_B, DRAW_ERASE); -draw_string (0, 80, "softfunc1 called", LCD_COLOR_B, DRAW_PUT); -while(!KEY_Exit) {}; -} -*/ - -void draw_itile(unsigned char x, unsigned char y, unsigned char type) -{ -again: - if(type < 0xF0) - { - if(type & 0x10) - draw_block(x+1, y+1, 2, 2, 3, DRAW_XOR); - if(type & 0x20) - draw_block(x+5, y+1, 2, 2, 3, DRAW_XOR); - if(type & 0x40) - draw_block(x+1, y+5, 2, 2, 3, DRAW_XOR); - if(type & 0x80) - draw_block(x+5, y+5, 2, 2, 3, DRAW_XOR); - } - - type <<= 4; - - if(type) - { - x += 8; - goto again; - } -} - -const char itilemap[7][7] = -{ - { 0x00, 0x00, 0x00, 0x6C, 0x90, 0x00, 0x00 }, - { 0x00, 0x00, 0x66, 0x6C, 0x99, 0x90, 0x00 }, - { 0x00, 0x06, 0x66, 0x6C, 0x99, 0x99, 0x00 }, - { 0x00, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x90 }, - { 0x00, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x90 }, - { 0x06, 0x66, 0x66, 0x6C, 0x99, 0x99, 0x99 }, - { 0x0A, 0xAA, 0xAA, 0xA0, 0x55, 0x55, 0x55 } -}; - -void illusion(void) -{ - int x,y,z; - - lcd_fill (LCD_COLOR_W); - z = 1; - for(x=0;x<15;x++) - { - for(y=0;y<15;y++) - { - if(z++ & 0x01) - { - draw_block (2+ (x*8), 16+ (y*8), 8, 8, LCD_COLOR_B, DRAW_PUT); - } - } - } - - for(y=0;y<7;y++) - { - for(x=0;x<7;x++) - { - draw_itile(2+(x*16), 24+(y*8), itilemap[y][x]); - } - } - - for(y=0;y<6;y++) - { - for(x=0;x<7;x++) - { - draw_itile(2+(x*16), 80+(y*8), ~itilemap[5-y][x]); - } - } - - - waitKeyUpDown(); -} - -void test_bl(void) -{ - setBacklight(BL_AUTO); -} - -void bat_dbg(void) -{ - bat_state ^= BAT_DEBUG; -} - -void tkey(void) -{ - while(1) - { - waitKeyUpDown(); - setBacklight(BL_AUTO); - lcd_fill (LCD_COLOR_W); - set_font(SMALLFONT); - draw_hexW (0, 16, keys[0], LCD_COLOR_B, DRAW_PUT); - draw_hexW (0, 24, keys[1], LCD_COLOR_B, DRAW_PUT); - } -} - -// plot a graph RSSI/t -void RSSI_monitor(void) { - unsigned char row = 0; - int rssi_dBm; - unsigned char rssi; - volatile unsigned long timer = 0; - unsigned char x; - lcd_fill (LCD_COLOR_W); - - // title - set_font(BOLDFONT); - draw_string (0, 0, "RF test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RF_changestate(RFrx); - - // coordinate system - // x (time) - draw_block (19,20,102,1, LCD_COLOR_B, DRAW_PUT); - - // y (RSSI) - draw_block (19,20,1,129, LCD_COLOR_B, DRAW_PUT); // axis - for(x=20;x<150;x+=10) // ticks - draw_pixel (18,x, LCD_COLOR_B, DRAW_PUT); - for(x=20;x<160;x+=20) // value - draw_numU (0, x-3, x-20, 0, LCD_COLOR_B, DRAW_PUT); - draw_string (0,152, "-dBm", LCD_COLOR_B, DRAW_PUT); // label - - - while(KEY_Exit) {}; - while (!KEY_Exit) - { - // wait - while (timer) - { - if(KEY_Exit) - timer = 0; - } - addTimeout(&timer,20); // next sample in n*5 ms (100 ms) - - // read RSSI - VICIntEnClr = INT_EINT0; - rssi = cc1100_read1(RSSI); - VICIntEnable = INT_EINT0; - - // scale - if(rssi & 0x80) - rssi_dBm = (rssi-256)/2-75; - else - rssi_dBm = rssi/2-75; - - if(rssi_dBm < 0) - rssi_dBm = ~rssi_dBm + 1; - else - rssi_dBm = 0; - - // plot - draw_block (row+20,21,1,128, LCD_COLOR_B, DRAW_ERASE); - draw_pixel(row+20, rssi_dBm+30, LCD_COLOR_B, DRAW_PUT); - draw_pixel (row+20,19, LCD_COLOR_B,DRAW_ERASE); - - // next time - row++; - if(row == 100) - row=0; - draw_pixel (row+20, 19, LCD_COLOR_B, DRAW_PUT); - //draw_block (row+20,30,1,100, LCD_COLOR_B, DRAW_PUT); - } - removeTimeout(&timer); - RF_changestate(RFwor); -} - - -// plot incoming radio data in single shot mode -// CC1100 datasheet section 31.1 Asynchronous Operation, p. 57 -// 1 px is 50 ys -void RF_viewer(void) { - unsigned char row = 0; - unsigned char col = 16; - - lcd_fill (LCD_COLOR_W); - set_font(BOLDFONT); - draw_string (0, 0, "RF viewer", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - RFasyncmode(true); - - //cc1100_write1(FREQ2,0x20); - //cc1100_write1(FREQ1,0x29); - //cc1100_write1(FREQ0,0x3E); - - //cc1100_write1(AGCCTRL2,0x07); - //cc1100_write1(AGCCTRL1,0x00); - //cc1100_write1(AGCCTRL0,0x91); - //~ cc1100_write1(AGCCTRL2,0x03); - //~ cc1100_write1(AGCCTRL1,0x00); - //~ cc1100_write1(AGCCTRL0,0x92); - -//~ #define RF2UART - -#ifdef RF2UART - unsigned char bits=0; - unsigned char bitno=7; - - // set uart baudrate - serial_setbrg(230400); // fastest - - // set frequency - //~ cc1100_write1(FREQ2,0x10); - //~ cc1100_write1(FREQ1,0x12); - //~ cc1100_write1(FREQ0,0xF6); - - // set gain // OOK/ASK optima. see TI DN022 - //~ cc1100_write1(AGCCTRL2,0x07); // A - cc1100_write1(AGCCTRL2,0x03); // B - cc1100_write1(AGCCTRL1,0x00); - //~ cc1100_write1(AGCCTRL0,0x92); // A - cc1100_write1(AGCCTRL0,0x91); // B -#endif - - cc1100_strobe(SFRX); - cc1100_strobe(SRX); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { -#ifdef RF2UART - //~ waitus(100); // 1 byte -> 10 bits / 115200 baud = 86,8 ys - waitus(50); // 1 byte -> 10 bits / 230400 baud = 43,4 ys - - if (!(FIOPIN0 & GDO2)) // get rf state as bit - bits |= (1< uart - { - bitno = 7; - serial_putbyte(bits); - bits = 0; - } - else - bitno--; // advance - -#else - waitus(50); - - draw_block(row,col,2,8,3,DRAW_ERASE); - - // plot: get data from CC1100's GDO2 on P0.24 (fast IO) - if((FIOPIN0 & GDO2)) - draw_pixel (row,col+2, LCD_COLOR_B, DRAW_PUT); - else - draw_pixel (row,col, LCD_COLOR_B, DRAW_PUT); - - // advance plot position - row++; - if(row == 127) - { - col +=8; - row=0; - - // screen is full, wait for keypress - if(col >140) - { - wait5ms(); - col = 16; - while(!(keys[0] || keys[1]));// && !(FIOPIN0 & GDO2)); // this seems strange, alternatives: while(!ANYKEY) or isKeyPressed - } - } -#endif - } - RFasyncmode(false); -} - - -void test_RF(void) { - - unsigned char destAddr; - - lcd_fill (LCD_COLOR_W); - destAddr = 0x01; - - set_font(BOLDFONT); - draw_string (0, 0, "RF test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_string (1, 15, "Destination address", LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 60, "TV/Power Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 69, "send something", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 86, "OK Key: Ping", LCD_COLOR_B, DRAW_PUT); - - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_PUT); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - waitKeyUpDown(); - - - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_XOR); - if(KEY_Left) { - destAddr--; - } - if(KEY_Right) { - destAddr++; - } - draw_numU (1, 25, destAddr, 0, LCD_COLOR_B, DRAW_XOR); - - - if(KEY_OK) - { - unsigned char ping; - draw_block (0,40,LCD_SIZE_X,10,3,DRAW_ERASE); - draw_string (0, 40, "send ping", LCD_COLOR_B, DRAW_PUT); - - ping = RF_sendping(destAddr); - - draw_block (0,40,LCD_SIZE_X,10,3,DRAW_ERASE); - if (ping) { - draw_string (0, 40, "ping received", LCD_COLOR_B, DRAW_PUT); - } - else { - draw_string (0, 40, "ping timeout", LCD_COLOR_B, DRAW_PUT); - } - - } - else if(KEY_Power) - { - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_test); - if(cur_ep) { - cur_ep->dest = destAddr; - cur_ep->data[0] = 'P'; - cur_ep->data[1] = 'W'; - cur_ep->data[2] = 0x00; - cur_ep->bufferlen = 3; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - } - } - else if(KEY_TV) - { - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_test); - cur_ep->dest = destAddr; - cur_ep->data[0] = 'T'; - cur_ep->data[1] = 'V'; - cur_ep->data[2] = 0x00; - cur_ep->bufferlen = 3; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - } - } -} - - -void test_irrec(void) { - - struct RAWcmd_ test_cmd; - - test_cmd.tval = 0; - - lcd_fill (LCD_COLOR_W); - - set_font(BOLDFONT); - draw_string (0, 0, "IR receive test", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 20, "OK Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 29, "receive IR command", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 40, "Mute Key:", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 49, "send received command", LCD_COLOR_B, DRAW_PUT); - - while(KEY_Exit) {}; - while(!KEY_Exit) - { - waitKeyUpDown(); - if(KEY_OK) - { - getIR_test(&test_cmd); - } - if(KEY_Mute) - { - RAW_Send((unsigned long)&test_cmd); - while(KEY_Mute) - RAW_Repeat(); - RAW_Stop(); - } - } - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); -} - -void erase_flash1(void) -{ int x; - - x = eraseFlash(1); - -} - -void test_sid(void) { - unsigned char temp; - - lcd_fill (LCD_COLOR_W); - - set_font(BOLDFONT); - draw_string (0, 0, "SID", LCD_COLOR_B, DRAW_PUT); - draw_block (0,10,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - draw_block (0,149,LCD_SIZE_X,2, LCD_COLOR_B, DRAW_PUT); - set_font(SMALLFONT); - - draw_string (0, 20, "A B C D", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 29, "set envelope", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 45, "OK", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 54, "play a song", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 70, "1-7", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 79, "play a note", LCD_COLOR_B, DRAW_PUT); - - draw_string (0, 95, "color keys", LCD_COLOR_B, DRAW_PUT); - draw_string (0, 104, "set waveform", LCD_COLOR_B, DRAW_PUT); - - sysInfo |= SYS_IR; - SID.noise = 0xaa; - playstate = 0x00; - playtone[0] = 0; - playtone[1] = 0; - playtone[2] = 0; - temp = 0; - PWMPR = 0; - switchSound(SOUND_ON); - SID.flags |= SIDenable; - SIDsetwave(0,TRIANGLE); - SIDsetadsr(0,8,8,10,8); - - while(KEY_Exit) {}; - do { - waitKeyUp(); - if (temp) - { - SID.reg[REG_Control] &= ~GATE; - temp = 0; - } - waitKeyDown(); - if (KEY_1) - { - SIDsetfrq(0,4455); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_2) - { - SIDsetfrq(0,5001); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_3) - { - SIDsetfrq(0,5613); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_4) - { - SIDsetfrq(0,5947); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_5) - { - SIDsetfrq(0,6676); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_6) - { - SIDsetfrq(0,7493); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_7) - { - SIDsetfrq(0,8411); - SID.reg[REG_Control] |= GATE; - temp =1; - } - else if (KEY_A) - { - SIDsetadsr(0,0,10,7,5); - } - else if (KEY_B) - { - SIDsetadsr(0,0,10,0,10); - } - else if (KEY_C) - { - SIDsetadsr(0,8,8,10,6); - } - else if (KEY_D) - { - SIDsetadsr(0,0,0,15,1); - } - else if (KEY_Red) - { - SIDsetwave(0,TRIANGLE); - } - else if (KEY_Green) - { - SIDsetwave(0,SAWTOOTH); - } - else if (KEY_Yellow) - { - SID.reg[REG_PWhi] = 0x08; - SIDsetwave(0,RECTANGLE); - } - else if (KEY_Blue) - { - SIDsetwave(0,NOISE); - } - else if (KEY_OK) - { - if (playstate == 0) - { - playstate = 1; - - SIDsetadsr(1,0,5,0,5); - SIDsetwave(1,SAWTOOTH); - SID.reg[7+REG_PWhi] = 0x06; - tonelen[1] = 0; - playtone[1] = (unsigned char*)&song3[0]; - - SIDsetadsr(2,0,9,0,9); - SIDsetwave(2,RECTANGLE); - SID.reg[14+REG_PWhi] = 0x08; - tonelen[2] = 0; - playtone[2] = (unsigned char*)&song2[0]; - - playtone_cb = addTimerCB(SIDplaytone, 4); - startCB(playtone_cb); - } - } - } while (!KEY_Exit); - sysInfo &= ~SYS_IR; - switchSound(SOUND_OFF); - SID.flags &= ~SIDenable; -} - -void test_click(FORM* form, CONTROL* control) { - unsigned char x; - x=msgbox(45,BC_OKOnly | BC_DefaultButton1,control->caption); - form_draw(form); -} - -void test2_click(FORM* form, CONTROL* control) { - beep(0); -} - -void test3_click(FORM* form, CONTROL* control) { - beep(1); -} - -void test_numbox(FORM* form, CONTROL* control) { - unsigned char x; - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"numbox click"); - form_draw(form); -} - -void test_numchange(FORM* form, CONTROL* control) { - unsigned short x; - x=((NUMBOX*)control)->value; - if(x==50) { - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"numbox =50"); - form_draw(form); - } -} - -void test_change(FORM* form, CONTROL* control) { - unsigned short x; - x=msgbox(30,BC_OKOnly | BC_DefaultButton1,"geaendert"); - form_draw(form); -} - -void formload (FORM* form) -{ - unsigned char x; - struct RFendpoint_* cur_ep; - - cur_ep = openEP(&(form->controls[7])->tag1, 1, packet_RFenc); - form->tag = (unsigned long) cur_ep; - if (cur_ep) - { - cur_ep->flags |= EPenabled; - RF.flags &= ~WORenabled; - RF_changestate(RFrx); - } - - x=msgbox(50,BC_OKOnly | BC_DefaultButton1,"Form open"); -} - -void formclose (FORM* form) -{ - unsigned char x; - - if (form->tag) - { - closeEP((struct RFendpoint_*)form->tag); - RF_changestate(RFwor); - } - - x=msgbox(50,BC_OKOnly | BC_DefaultButton1,"Form close"); - -} - -void test_timer (FORM* form) -{ - struct RFendpoint_* cur_ep; - - cur_ep = (struct RFendpoint_*)form->tag; - if (cur_ep->flags & EPnewdata) - { - cur_ep->flags &= ~EPnewdata; - control_draw(form->controls[7], (form->sel == 7)); - } -} - -void test_controls(void) { - - const char* listbox1items[5] = { "Listitem1", - "Listitem2", - "Listitem3", - "Listitem4", - "Listitem555"}; - - char txtbuffer[20]; - const LABEL label1 = {BC_Label,0,15,40,10,SMALLFONT,0,"label1",test_click}; - const LABEL label2 = {BC_Labelnotab,50,15,40,9,BOLDFONT,0,"label2",0}; - const LABEL label3 = {BC_Labelnotab,0,110,40,9,BOLDFONT,0,"Numbox:",0}; - const BUTTON button1 = {BC_Button,0,30,40,15,SMALLFONT,0,"Button1",test_click}; - const BUTTON button2 = {BC_Button,0,50,40,16,SMALLFONT,0,"Button2",test2_click}; - const BUTTON button3 = {BC_Button,0,70,40,16,SMALLFONT,0,"Button3",test3_click}; - const BUTTON button4 = {BC_Button | BC_Disabled,0,90,40,16,SMALLFONT,0,"Button4",test_click}; - NUMBOX numbox1 = {BC_Numbox,0,120,20,9,SMALLFONT,1,1,500,test_numbox,test_numchange}; - TXTBOX txtbox1 = {BC_Txtbox,0,135,120,10,SMALLFONT,20,0,txtbuffer,test_click,test_change}; - DATEBOX datebox1 = {BC_Datebox,50,30,58,9,SMALLFONT,0,{0x01, 0x02, 0x01, 0x08},NULL,test_change}; - TIMEBOX timebox1 = {BC_Timebox,50,50,58,9,SMALLFONT,0,{0x00, 0x00, 0x12, 0x00},NULL,test_change}; - LISTBOX listbox1 = {BC_Listbox,50,70,58,10,SMALLFONT,0,5,(char**)listbox1items,NULL,test_change}; - - CONTROL* controls[12] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3, - (CONTROL*)&button4, - (CONTROL*)&numbox1, - (CONTROL*)&txtbox1, - (CONTROL*)&datebox1, - (CONTROL*)&timebox1, - (CONTROL*)&listbox1}; - - FORM form = {"Controls","footer\tTab\tTab",formload,formclose,test_timer,0,controls,3,12,0,10}; - memcpy(txtbuffer,"Textbox",8); - - form_exec(&form); - -} - -/* -struct MENU_ENTRY softMenuEntries[16]; -struct MENU softMenu; -*/ - -const struct MENU_ENTRY testMenuEntries[] = -{ - {RTCtimer_edit, 0, FUNCENTRY, "Timer", "Timer" }, - {test_icon, 0, FUNCENTRY, "Icon Demo", "Draw icons" }, - {test_irrec, 0, FUNCENTRY, "Receive IR", "Receive IR" }, - {test_RF, 0, FUNCENTRY, "RF test", "Test RF" }, - {RSSI_monitor, 0, FUNCENTRY, "RSSI Monitor", "RSSI Monitor" }, - {RF_viewer, 0, FUNCENTRY, "RF viewer", "RF viewer" }, - {test_circle, 0, FUNCENTRY, "Circle", "Draw circles" }, - {test_controls, 0, FUNCENTRY, "Controls", "Control elements" }, - {test_frame, 0, FUNCENTRY, "Frame", "Draw frame" }, - {test_frame2, 0, FUNCENTRY, "Frame2", "Draw frame2" }, - {draw_fonts, 0, FUNCENTRY, "Fonts", "Draw fonts" }, - {test_logo, 0, FUNCENTRY, "Logo", "Draw logo" }, - {fp1, 0, FUNCENTRY, "Charset", "Draw charset" }, - {illusion, 0, FUNCENTRY, "Illusion", "Optical illusion" }, - {test_bl, 0, FUNCENTRY, "Auto backlight", "Test auto backlight" }, - {bat_dbg, 0, FUNCENTRY, "Bat debug", "Show/hide bat values"}, - {tkey, 0, FUNCENTRY, "Keytest", "Test keypad" }, - {erase_flash1, 0, FUNCENTRY, "Erase Flash1", "Erase Flash1" }, - {test_sid, 0, FUNCENTRY, "Sound", "Play music" }, - {test_movearound, 0, FUNCENTRY, "Move", "Slowly move a cursor"}, -// { 0, (void*)&softMenu, MENUENTRY, "Soft-Test", "access soft" } -}; - -const struct MENU testMenu = -{ - NUM_OF_ELEMENTS (testMenuEntries), (MENU_ENTRY*)&testMenuEntries, "Test Menu" -}; - -/* -void testmenu_init(void) -{ - testdata1 = 0; - testdata2 = 0; - - for(i=0;i<16;i++) - { - softMenuEntries[i].exec = 0; - softMenuEntries[i].data = 0; - softMenuEntries[i].type = 0; - softMenuEntries[i].name = 0; - softMenuEntries[i].help = 0; - } - - softMenuEntries[0].exec = softfunc1; - softMenuEntries[0].data = 0; - softMenuEntries[0].type = FUNCENTRY; - softMenuEntries[0].name = "softfunc test"; - softMenuEntries[0].help = "run softfunc test"; - - - softMenu.name = "Soft Menu"; - softMenu.num_entries = 1; - softMenu.entry = softMenuEntries; - -} -*/ - diff --git a/boop/trunk/gui/testmenu.h b/boop/trunk/gui/testmenu.h deleted file mode 100644 index 79f990e..0000000 --- a/boop/trunk/gui/testmenu.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - testmenu.h - testmenu for menuing system - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef TESTMENU_H -#define TESTMENU_H - -extern struct MENU testMenu; -//void testmenu_init(void); -void test_irrec(void); - -#endif diff --git a/boop/trunk/infrared/Make.conf b/boop/trunk/infrared/Make.conf deleted file mode 100644 index 2a1fa32..0000000 --- a/boop/trunk/infrared/Make.conf +++ /dev/null @@ -1,5 +0,0 @@ -THUMBSRCS := infrared.c codes.c encoders.c ir_capture.c ir_selector.c -SRCS := infraredirq.c -THUMBSRCSUNOPT := ir_itt.c ir_nrc17.c \ - ir_raw.c ir_rc5.c ir_rc6.c ir_rca.c ir_rcmm.c ir_rec80.c ir_recs80.c ir_rf.c \ - ir_sirc.c ir_spaceenc.c ir_lirc.c diff --git a/boop/trunk/infrared/codes.c b/boop/trunk/infrared/codes.c deleted file mode 100644 index f30c7ad..0000000 --- a/boop/trunk/infrared/codes.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - codes.c - structs for accessing the infrared-codetables - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "codes.h" -#include "ir_lirc.h" - -const struct TABLES_S ITT = -{ - 4, - { - { - #include "ir_codes/itt/seleco_019" - "Seleco #19" - }, - { - #include "ir_codes/itt/seleco_049" - "Seleco #49" - }, - { - #include "ir_codes/itt/seleco_108" - "Seleco #108" - }, - { - #include "ir_codes/itt/seleco_131" - "Seleco #131" - }, - } -}; - -const struct TABLES_S NRC17 = -{ - 2, - { - { - #include "ir_codes/nrc17/dbox2" - "DBox 2" - }, - { - #include "ir_codes/nrc17/grundig_tp720" - "Grundig TP720" - } - } -}; - - -#define RC5_STD(cmd) 0x1000 | cmd -#define RC5X(cmd) cmd - -const struct TABLES_S RC5 = -{ - 3, - { - { - #include "ir_codes/rc5/tv" - "Generic TV" - }, - { - #include "ir_codes/rc5/HARMONY_655" - "Logitec Harmony" - }, - { - #include "ir_codes/rc5/technisat_satreceiver_103TS103" - "SAT(103TS103)" - } - } -}; - -const struct TABLES_I RC6 = -{ - 3, - { - { - #include "ir_codes/rc6/tv" - "RC6 TV" - }, - { - #include "ir_codes/rc6/dvd" - "RC6 DVD" - }, - { - #include "ir_codes/rc6/ufs922" - "UFS 922" - } - } -}; - -const struct TABLES_C RCA = -{ - 1, - { - { - #include "ir_codes/rca/xbox" - "X-Box" - } - } -}; - -const struct TABLES_I RCMM = -{ - 2, - { - { - #include "ir_codes/rcmm/galaxis" - "Galaxis Sat" - }, - { - #include "ir_codes/rcmm/ufs910" - "UFS 910" - } - } -}; - -const struct TABLES_I REC80 = -{ - 1, - { - { - #include "ir_codes/rec80/rak_sc957wk" - "RAK SC-957-WK" - } - } -}; - -const struct TABLES_S RECS80 = -{ - 2, - { - { - #include "ir_codes/recs80/seleco_020" - "seleco#20" - }, - { - #include "ir_codes/recs80/seleco_157" - "Seleco #157" - } - } -}; - -const struct TABLES_S SIRC = -{ - 3, - { - { - #include "ir_codes/sirc/rm-pp411" - "RM-PP411" - }, - { - #include "ir_codes/sirc/tv" - "Generic TV" - }, - { - #include "ir_codes/sirc/UFD400" - "Katrein UFD400" - } - } -}; - -const struct TABLES_C SPACEENC = -{ - 2, - { - { - #include "ir_codes/spaceenc/schneider_dtv3" - "Schneider DTV3" - }, - { - #include "ir_codes/spaceenc/seleco_027" - "Seleco #27" - } - } -}; - -const struct TABLES_S IRRF = -{ - 2, - { - { - #include "ir_codes/rf/cc1100_a0" - "RF 0" - }, - { - #include "ir_codes/rf/cc1100_a1" - "RF 1" - } - } -}; - -const struct TABLES_N RAW = -{ - 4, - { - { - "RAW Set 1" - }, - { - "RAW Set 2" - }, - { - "RAW Set 3" - }, - { - "RAW Set 4" - } - - } -}; - -const struct TABLES_L LIRC = -{ - 9, - { - { - #include "ir_codes/lirc/ufs922" - "UFS 922" - }, - { - #include "ir_codes/lirc/str_de545" - "STR-DE545" - }, - { - #include "ir_codes/lirc/ufs910" - "UFS 910" - }, - { - #include "ir_codes/lirc/fs20" - "FS20" - }, - { - #include "ir_codes/lirc/hx2262" - "HX2262" - }, - { - #include "ir_codes/lirc/rev008340" - "REV 008340" - }, - { - #include "ir_codes/lirc/olympus_rm-1" - "Olympus RM-1" - }, - { - #include "ir_codes/lirc/apple_remote1" - "Apple Remote 1st gen." - }, - { - #include "ir_codes/lirc/samsung_ue46b6000" - "Samsung TV" - } - } -}; diff --git a/boop/trunk/infrared/codes.h b/boop/trunk/infrared/codes.h deleted file mode 100644 index 8188a03..0000000 --- a/boop/trunk/infrared/codes.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - codes.h - structs for accessing the infrared-codetables - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef CODES_H -#define CODES_H - -typedef struct CODE_TABLE_C -{ - const unsigned char codes[42]; - const char *name; -} CODE_TABLE_C; - -typedef struct CODE_TABLE_S -{ - const unsigned short codes[42]; - const char *name; -} CODE_TABLE_S; - -typedef struct CODE_TABLE_I -{ - const unsigned int codes[42]; - const char *name; -} CODE_TABLE_I; - -typedef struct CODE_TABLE_N -{ - const char *name; -} CODE_TABLE_N; - -typedef struct CODE_TABLE_L -{ - const unsigned long pre_data; // data which the remote sends before actual keycode - const unsigned long post_data; // data which the remote sends after actual keycode - const unsigned long long toggle_bit_mask; // toggle_bit - const unsigned long gap; // time between signals - const unsigned long repeat_gap; // time between two repeat codes - const unsigned char bits; // bits (length of code) - const unsigned char pre_data_bits; // length of pre_data - const unsigned char post_data_bits; // length of post_data - const unsigned char rc6_bit; // doubles signal length of this bit (only used for RC-6) - const unsigned long freq; // modulation frequency - const unsigned short flags; // flags - const unsigned short phead,shead; // header - const unsigned short pthree,sthree; // 3 (only used for RC-MM) - const unsigned short ptwo,stwo; // 2 (only used for RC-MM) - const unsigned short pone,sone; // 1 - const unsigned short pzero,szero; // 0 - const unsigned short plead; // leading pulse - const unsigned short ptrail; // trailing pulse - const unsigned short pfoot,sfoot; // foot - const unsigned short pre_p,pre_s; // signal between pre_data and keycode - const unsigned short post_p, post_s; // signal between keycode and post_code - const unsigned short prepeat,srepeat; // indicate repeating - const unsigned char min_repeat; // code is repeated at least x times code sent once -> min_repeat=0 - const unsigned char duty_cycle; // 0 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -#include "ir_itt.h" -#include "ir_nrc17.h" -#include "ir_rc5.h" -#include "ir_rc6.h" -#include "ir_rca.h" -#include "ir_rcmm.h" -#include "ir_rec80.h" -#include "ir_recs80.h" -#include "ir_sirc.h" -#include "ir_spaceenc.h" -#include "ir_rf.h" -#include "ir_raw.h" -#include "ir_lirc.h" -#include "encoders.h" -#include "codes.h" - -const struct ENCODERS encoders = -{ - 13, - { - { ITT_Init, (void*)&ITT, 1, "ITT\0" }, - { NRC17_Init, (void*)&NRC17, 1, "NRC17\0" }, - { RC5_Init, (void*)&RC5, 1, "RC-5\0" }, - { RC6_Init, (void*)&RC6, 2, "RC-6\0" }, - { RCA_Init, (void*)&RCA, 0, "RCA\0" }, - { RCMM_Init, (void*)&RCMM, 2, "RC-MM\0" }, - { REC80_Init, (void*)&REC80, 2, "REC-80\0" }, - { RECS80_Init, (void*)&RECS80, 1, "RECS-80\0" }, - { SIRC_Init, (void*)&SIRC, 1, "SIRC\0" }, - { SPACEENC_Init,(void*)&SPACEENC, 0, "SPACEENC\0" }, - { IRRF_Init, (void*)&IRRF, 1, "RF\0" }, - { RAW_Init, (void*)&RAW, 3, "learn" }, - { LIRC_Init, (void*)&LIRC, 4, "LIRC" } - } -}; diff --git a/boop/trunk/infrared/encoders.h b/boop/trunk/infrared/encoders.h deleted file mode 100644 index 194a716..0000000 --- a/boop/trunk/infrared/encoders.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - encoders.h - structs for accessing the infrared-encoders - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef ENCODERS_H -#define ENCODERS_H - -#define ENC_ITT 0 -#define ENC_NRC17 1 -#define ENC_RC5 2 -#define ENC_RCA 3 -#define ENC_RCMM 4 -#define ENC_REC80 5 -#define ENC_RECS80 6 -#define ENC_SIRC 7 -#define ENC_SPACEENC 8 -#define ENC_RF 9 -#define ENC_RAW 10 -#define ENC_LIRC 11 - -typedef void(*cfunc)(unsigned char); - -typedef struct IR_ENCODER -{ - const cfunc init; - const void* data; - const unsigned char type; - const char *name; -} IR_ENCODER; - -typedef struct ENCODERS -{ - const unsigned int num_encoders; - const struct IR_ENCODER encoder[]; -} ENCODERS; - -extern const struct TABLES_S ITT; -extern const struct TABLES_S NRC17; -extern const struct TABLES_S RC5; -extern const struct TABLES_I RC6; -extern const struct TABLES_C RCA; -extern const struct TABLES_I RCMM; -extern const struct TABLES_I REC80; -extern const struct TABLES_S RECS80; -extern const struct TABLES_S SIRC; -extern const struct TABLES_C SPACEENC; -extern const struct TABLES_S IRRF; -extern const struct TABLES_N RAW; -extern const struct TABLES_L LIRC; - -#endif diff --git a/boop/trunk/infrared/infrared.c b/boop/trunk/infrared/infrared.c deleted file mode 100644 index e0ac240..0000000 --- a/boop/trunk/infrared/infrared.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - infrared.c - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "global.h" -#include "infrared.h" -#include "infraredirq.h" -#include "irq.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "encoders.h" -#include "codes.h" -#include "ir_selector.h" - -volatile unsigned char mod_enable; -volatile unsigned char hi_border; -volatile unsigned char lo_border; -volatile unsigned int cycles; -volatile unsigned long keyMap[42]; - -ir_fn irEncoder; -ir_sfn irSend; -ir_fn irRepeat; -ir_fn irStop; - -unsigned char act_encoder, act_set; - -const struct irModule defModule = { defIR, defSender, defRepeater, defStopper, 50, 1, 4 }; -void dummy(void) -{ - irStop = RC_setting; //make compiler happy for select_ir in mainmenu -} - -void initIR(void) -{ -// irStop = select_ir; //make compiler happy for select_ir in mainmenu - setIR(defModule); -} - -void startIrIRQ(void) -{ - - T1TCR = 0x03; - T1TC = 0; - T1PC = 0; - T1PR = 0x00; -// T1PR = 0x01; - T1MCR = 0x03; - - //VICVectAddr1 = (unsigned long)&(irIRQ); - //VICVectCntl1 = VIC_SLOT_EN | INT_SRC_TIMER1; - VICIntSelect |= INT_TIMER1; - VICIntEnable = INT_TIMER1; -} - -void setIR(struct irModule module) -{ - T1TCR = 0x02; - irEncoder = module.encoder; - irSend = module.sender; - irRepeat = module.repeater; - irStop = module.stopper; -// setIRspeed(module); - T1MR0 = module.tval; - hi_border = module.hi_border; - lo_border = module.lo_border; - cycles = 100; - ir.state = 0x00; - ir.actcmd = 0; - ir.cmd = 0; - T1TCR = 0x03; -} -/* Stubs for various interrupts (may be replaced later) */ -/* ---------------------------------------------------- */ - -void __attribute__ ((section(".text.fastcode"))) defIR(void) -{ - return; -} - -void defSender(unsigned long cmd) -{ - return; -} - -void defRepeater(void) -{ - return; -} -void defStopper(void) -{ - return; -} - -void runIR(void) -{ - T1TCR = 0x01; -} - -void stopIR(void) -{ - T1TCR = 0x03; -} - -void copyMapC(unsigned char *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -void copyMapPC(unsigned int pre, unsigned char *map) -{ - int x; - for(x=0;x<42;x++) - { - if(map[x] != 0) - keyMap[x] = pre | map[x]; - else - keyMap[x] = 0x00000000; - } -} - -void copyMapS(unsigned short *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -void copyMapI(unsigned int *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -} - -unsigned long setEncoder( unsigned char x, unsigned char y ) -{ - if(EncIsValid(x,y)) { - act_encoder = x; - act_set = y; - encoders.encoder[act_encoder].init(act_set); - return(1); - } - return(0); -} - -unsigned long getCode(void) { - - int keynum = getKeynum(); - - if (keynum < 42) - return keyMap[keynum]; - else - return 0xFFFFFFFF; -} diff --git a/boop/trunk/infrared/infrared.h b/boop/trunk/infrared/infrared.h deleted file mode 100644 index b10991e..0000000 --- a/boop/trunk/infrared/infrared.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - infrared.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef INFRARED_H -#define INFRARED_H - -volatile unsigned char hi_border; -volatile unsigned char lo_border; - -typedef void(*ir_fn)(void); -typedef void(*ir_sfn)(unsigned long cmd); - -typedef struct irModule -{ - ir_fn encoder; - ir_sfn sender; - ir_fn repeater; - ir_fn stopper; - unsigned char tval; - unsigned char hi_border; - unsigned char lo_border; -} irModule; - -struct IR_VARS_ { - union { - struct IR_GENERAL_ { //63 Bytes - unsigned int header_cmd; - unsigned int startstop; - unsigned int bit; - unsigned int header_bit; - unsigned int numbits; - unsigned int wait; - unsigned int pause; - unsigned int leadtime; - unsigned int bittime0; - unsigned int bittime1; - unsigned int togglebit; - unsigned int len; - unsigned int trail; - unsigned int preamble; - unsigned int pre; - unsigned char prebits; - unsigned char waittime; - unsigned char bittime; - } general; - struct IR_LIRC_ { //61 Bytes - unsigned long pre_data; // data which the remote sends before actual keycode - unsigned long actpre_data; - unsigned long post_data; // data which the remote sends after actual keycode - unsigned long actpost_data; - unsigned short flags; // flags - unsigned short phead,shead; // header - unsigned short plead; // leading pulse - unsigned short ptrail; // trailing pulse - unsigned short pfoot,sfoot; // foot - unsigned short pre_p,pre_s; // signal between pre_data and keycode - unsigned short post_p,post_s; // signal between keycode and post_code - unsigned short gap; - unsigned short repeat_gap; - unsigned short prepeat,srepeat; - unsigned short cycles_counter; - unsigned char bits; // bits (length of code) - unsigned char pre_data_bits; // length of pre_data - unsigned char post_data_bits; // length of post_data - unsigned char rc6_bit; // doubles signal length of this bit (only used for RC-6) - unsigned char pthree,sthree; // 3 (only used for RC-MM) - unsigned char ptwo,stwo; // 2 (only used for RC-MM) - unsigned char pone,sone; // 1 - unsigned char pzero,szero; // 0 - unsigned char min_repeat; - unsigned char bit; - unsigned char map; - unsigned char stop; - unsigned char repeats; - } lirc; - }; - unsigned int cmd; - unsigned int actcmd; - unsigned char toggle; - unsigned char state; -} ir; - - -//#define setIRspeed( _m ) { if(sysInfo & 0x80) T1MR0 = _m.tval1; else T1MR0 = _m.tval; } -#define setIRspeed( _m ) { T1MR0 = _m.tval; } - -void __attribute__ ((section(".text.fastcode"))) defIR(void); -void defSender(unsigned long cmd); -void defRepeater(void); -void defStopper(void); - -void initIR(void); -void startIrIRQ(void); -void setIR(struct irModule module); -void runIR(void); -void stopIR(void); - -unsigned long setEncoder( unsigned char _x, unsigned char _y ); - -void copyMapC(unsigned char *map); -void copyMapPC(unsigned int pre, unsigned char *map); -void copyMapS(unsigned short *map); -void copyMapI(unsigned int *map); - -unsigned long getCode(void); - -#endif - diff --git a/boop/trunk/infrared/infrared_encoders.h b/boop/trunk/infrared/infrared_encoders.h deleted file mode 100644 index 54a4ce8..0000000 --- a/boop/trunk/infrared/infrared_encoders.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - infraredirq.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef INFRARED_ENCODERS_H -#define INFRARED_ENCODERS_H - -#include "ir_nrc17.h" -#include "ir_itt.h" -#include "ir_rc5.h" -#include "ir_rc6.h" -#include "ir_rca.h" -#include "ir_rcmm.h" -#include "ir_rec80.h" -#include "ir_recs80.h" -#include "ir_sirc.h" -#include "ir_spaceenc.h" - -#endif - diff --git a/boop/trunk/infrared/infraredirq.c b/boop/trunk/infrared/infraredirq.c deleted file mode 100644 index 5fa7314..0000000 --- a/boop/trunk/infrared/infraredirq.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - infraredirq.c - ir interrupt - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "infrared.h" -#include "infraredirq.h" -#include "irq.h" -#include "lpc2220.h" -#include "keyboard.h" -#include "rf.h" -#include "cc1100.h" - -static unsigned int c_cnt = 0; -static unsigned int b_len = 0; -extern volatile unsigned char mod_enable; -extern volatile unsigned char hi_border; -extern volatile unsigned char lo_border; -extern volatile unsigned int cycles; - -extern ir_fn irEncoder; - -void __attribute__ ((section(".text.fastcode"))) irIRQ(void) -{ - c_cnt++; - if(c_cnt <= hi_border) - { - FIOSET0 = (mod_enable<<21); - } - else - { - FIOCLR0 = (1<<21); - if(c_cnt >= lo_border) - { - c_cnt = 0; - b_len++; - if(b_len >= cycles) - { - irEncoder(); - b_len = 0; - - if(!hi_border) { //RF mode - if(mod_enable) - FIOCLR0 = GDO0; - else - FIOSET0 = GDO0; - } - } - } - } - - T1IR = 1; -// VICVectAddr = 0; -} diff --git a/boop/trunk/infrared/infraredirq.h b/boop/trunk/infrared/infraredirq.h deleted file mode 100644 index 27f5a48..0000000 --- a/boop/trunk/infrared/infraredirq.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - infraredirq.h - ir carrier generation and encoding core - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef INFRAREDIRQ_H -#define INFRAREDIRQ_H - -void irIRQ (void) __attribute__ ((section(".text.fastcode"))); - -#endif - diff --git a/boop/trunk/infrared/ir_capture.c b/boop/trunk/infrared/ir_capture.c deleted file mode 100644 index 0b07f4a..0000000 --- a/boop/trunk/infrared/ir_capture.c +++ /dev/null @@ -1,710 +0,0 @@ -/* - ir_capture.c - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - - -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "lpc2220.h" -#include "irq.h" -#include "backlight.h" -#include "ir_capture.h" -#include "global.h" -#include "ir_raw.h" -#include "infrared.h" -#include "ir_selector.h" -#include "flash.h" -#include "controls.h" -#include "bfs.h" -#include "serial.h" -#include "codes.h" -#include "encoders.h" - - -const char string_unknown[] = ""; -#define len_string_unknown 12 - -extern volatile unsigned char autorepeat; -extern void setSpeed(unsigned char sp); - - -unsigned long waitIrHi(unsigned short* onpulse, unsigned long* time, unsigned long start) { - - unsigned long lowpulse; - unsigned long l; - unsigned long x; - - *onpulse = 0; - lowpulse = 0; - while (1) { - T0CCR = (1<<9) | (1<<11); - while (!(T0IR)); - T0IR = 0xff; - T0CCR = (1<<9) | (1<<10) | (1<<11); - l = T0CR3; - *time = l-start + lowpulse; - (*onpulse)++; - x = start + *time + 30; - while (!(T0IR)) { - if (T0TC > x) - return (l + lowpulse); - } - T0IR = 0xff; - x = T0CR3; - lowpulse = x-l; - } -} - -unsigned char decodewide(unsigned long value, struct widetable_* wide) { - - unsigned char x; - unsigned long minvalue; - unsigned long maxvalue; - unsigned long dif; - - dif = (value / 10); - - if (dif < 1) - dif = 1; - if (value > 1) - minvalue = value - dif; - else - minvalue = 0; - - maxvalue = value + dif; - - for (x=0;x < (wide->count);x++) { - if ((wide->value[x] >= minvalue) && (wide->value[x] <= maxvalue)) { - return x; - } - } - if (wide->count < 15) { - wide->value[wide->count] = value; - wide->count++; - return (wide->count -1); - } - else { - return 0xff; - } -} - -//--------------------------------------------------------------------------- -// captureIR -//--------------------------------------------------------------------------- -/* Return Values: - 0 = OK - 1 = too manny pulse lengths - 2 = abort - 3 = too long -*/ -unsigned char captureIR(struct ir_raw_* capture) { - - unsigned long hightime, lowtime; - unsigned long T0count; - unsigned short highpulse, lowpulse; - unsigned long T1count; - unsigned long timeout; - unsigned char status; - unsigned char wide; - - while(ANYKEY); - - setSpeed(SPEED_60); - disableIRQ(); - T0MCR = 0x00; - - FIODIR0 &= ~(1<<4); - FIOCLR0 |= (1<<12); - PINSEL1 |= (1<<27); - - T0CCR = (1<<9) | (1<<10) | (1<<11); - - capture->widetable[0].count = 0; - capture->widetable[1].count = 0; - capture->count = 0; - status = 0; - - T0TC = 0; - while (T0TC < 5000); - - T0IR = 0xff; - while (!T0IR && !ANYKEY); - if(!ANYKEY) { - T0TC = 0; - T0IR = 0xff; - T0count = waitIrHi(&highpulse,&hightime,0); - capture->pulsetime = (hightime * 1000) / highpulse; - capture->data[0] = (decodewide(highpulse, &capture->widetable[1]) & 0x0F)<<4; - - while (!(T0IR)); - T0IR = 0xff; - T1count= T0CR3; - while ((capture->count < max_capture_data-1) && !status) { - lowtime = T1count-T0count; - T0count = waitIrHi(&highpulse,&hightime,T1count); - lowpulse = ((lowtime *1000)+(capture->pulsetime / 2)) / capture->pulsetime; - wide = decodewide(lowpulse, &capture->widetable[1]); - if(wide & 0xf0) - status = 2; - capture->data[capture->count] |= wide; - wide = decodewide(highpulse, &capture->widetable[1]); - if(wide & 0xf0) - status = 2; - capture->count++; - capture->data[capture->count] = wide<<4; - timeout = T0count + 500000; - while (!(T0IR) && !status) { - if (T0TC > timeout) - status =1; - } - T0IR = 0xff; - T1count= T0CR3; - } - } - else - status = 3; - if(capture->count == max_capture_data-1) - status = 4; - T0TC = 0; - T0MCR = 0x03; - FIOSET0 |= (1<<12); - T0CCR = 0; - T0IR = 0xff; - enableIRQ(); - setBacklight(BL_AUTO); - setSpeed(SPEED_30); - return status - 1; -} - -# define MAX_messages 25 - -unsigned char compare_message(unsigned char* message1, unsigned char* message2, unsigned char len) { - - unsigned char x; - - for(x=0; x < (len-1); x++) { - if(message1[x] != message2[x]) - return 1; - } - if((message1[len-1] & 0xf0) != (message2[len-1] & 0xf0)) - return 1; - return 0; - -} - -unsigned short get_signalfree(struct ir_raw_* capture,unsigned short signalmin) { - unsigned short signalfree; - unsigned char i; - - signalfree = 32000; - for (i=4; (i < capture->count);i++) { - unsigned short y; - unsigned short sum; - sum = 0; - for (y = i-4; y < i; y++) { - sum += capture->widetable[1].value[(capture->data[y]) & 0x0f]; - } - y = capture->widetable[1].value[(capture->data[i]) & 0x0f]; - if ((sum < y) && (y < signalfree) && (y > signalmin)) - signalfree=y; - } - - return(signalfree); - -} - - -//--------------------------------------------------------------------------- -// analyzeIR -//--------------------------------------------------------------------------- -/* Return Values: - 0 = OK - 1 = too manny messages - 2 = too few messages - 3 = repeat messages not equal - 4 = messages too long - 5 = unknown format -*/ -unsigned char analyzeIR1(struct ir_raw_* capture, struct RAWcmd_* cmd, unsigned char mode) { - - unsigned short signalfree; - unsigned char message[MAX_messages]; - unsigned char messagecount; - unsigned char x; - unsigned char first; - unsigned char middle; - unsigned char last; - - clear_cmd(cmd); - signalfree = get_signalfree(capture,1); - if(mode) - signalfree = get_signalfree(capture,signalfree); - - messagecount = 1; - message[0] = 0; - for(x = 0; (x < capture->count) && (messagecount < MAX_messages); x++) { - if(capture->widetable[1].value[capture->data[x] & 0x0f] >= signalfree) { - if(messagecount < MAX_messages) - message[messagecount++] = x+1; - else - return 1; - } - } - - if(messagecount < 2) - return 2; - - first = compare_message(&capture->data[message[0]], &capture->data[message[1]],message[1] - message[0]); - middle = 0; - for(x=1; x < messagecount-2; x++) { - middle += compare_message(&capture->data[message[x]], &capture->data[message[x+1]],message[x+1] - message[x]); - } - last = compare_message(&capture->data[message[messagecount-2]], &capture->data[message[messagecount-1]],message[messagecount-1] - message[messagecount-2]); - - if((first && last && (messagecount < 4)) || ((first + last) && (messagecount < 3))) - return 2; - - if(middle) - return 3; - - if(first + last == 0) { - for(x=0;x<3;x++) { - cmd->CMDstart[x] = 0; - cmd->CMDlen[x] = message[1]; - } - if(cmd->CMDlen[0] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - - } - else if(first + last == 2) { - cmd->CMDstart[0] = 0; - cmd->CMDlen[0] = message[1]; - - cmd->CMDstart[1] = cmd->CMDstart[0] + cmd->CMDlen[0]; - cmd->CMDlen[1] = message[2]-message[1]; - - cmd->CMDstart[2] = cmd->CMDstart[1] + cmd->CMDlen[1]; - cmd->CMDlen[2] = message[messagecount-1]-message[messagecount-2]; - - if(cmd->CMDlen[0]+cmd->CMDlen[1]+cmd->CMDlen[2] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[1]],(unsigned char *)&capture->data[message[1]],cmd->CMDlen[1]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[2]],(unsigned char *)&capture->data[message[messagecount-1]],cmd->CMDlen[2]); - } - else if((first == 1)&& !last) { - cmd->CMDstart[0] = 0; - cmd->CMDlen[0] = message[1]; - - cmd->CMDstart[1] = cmd->CMDstart[0] + cmd->CMDlen[0]; - cmd->CMDlen[1] = message[2]-message[1]; - - cmd->CMDstart[2] = cmd->CMDstart[1]; - cmd->CMDlen[2] = cmd->CMDlen[1]; - - if(cmd->CMDlen[0]+cmd->CMDlen[1] > max_CMD_data) return 4; - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[1]],(unsigned char *)&capture->data[message[1]],cmd->CMDlen[1]); - memcpy((unsigned char *)&cmd->data[cmd->CMDstart[0]],(unsigned char *)&capture->data[0],cmd->CMDlen[0]); - - } - else { - return 5; - } - - cmd->borders = 0x13; - cmd->tval = (15 * capture->pulsetime) / ((cmd->borders & 0x0f) * 1000); - memcpy((unsigned char *)&cmd->pulselen[0],(unsigned char *)&capture->widetable[1].value[0],(capture->widetable[1].count) * sizeof(unsigned short)); - - return 0; -} - -unsigned char analyzeIR(struct ir_raw_* capture, struct RAWcmd_* cmd) { - unsigned char result; - - result = analyzeIR1(capture, cmd,0); - if(result) { - if(!(analyzeIR1(capture, cmd,1))) - return(0); - } - return(result); -} - -void debug_print_capture(struct ir_raw_* capture) { - - unsigned short signalfree; - unsigned char x; - unsigned char ro; - unsigned char co; - - signalfree = get_signalfree(capture,0); - - x= 0; - ro = 0; - co = 0; - while((x <= capture->count) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,capture->data[x], 3, DRAW_PUT); - if((capture->widetable[1].value[capture->data[x++] & 0x0f] >= signalfree) || (co > 5)) { - ro++; - co = 0; - } - } - - draw_numU(90,8,capture->pulsetime,0, 3, DRAW_PUT); - - for (x = 0; x < capture->widetable[1].count; x++) { - draw_numU(90,36+(x*8),capture->widetable[1].value[x],0, 3, DRAW_PUT); - } -} - -void debug_print_cmd(struct RAWcmd_* cmd) { - - unsigned char x; - unsigned char ro; - unsigned char co; - - x= 0; - ro = 0; - co = 0; - - while((x < cmd->CMDlen[0]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[0]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - x=0; - co = 0; - ro++; - while((x < cmd->CMDlen[1]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[1]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - x=0; - co = 0; - ro++; - while((x < cmd->CMDlen[2]) && (ro < 20)) { - draw_hexC(co++ * 14,ro * 8,cmd->data[cmd->CMDstart[2]+ x++], 3, DRAW_PUT); - if(co > 4) { - ro++; - co = 0; - } - } - - draw_numU(90,8,cmd->tval,0, 3, DRAW_PUT); - - for (x = 0; x < 16; x++) { - draw_numU(75,20+(x*8),cmd->pulselen[x],0, 3, DRAW_PUT); - } -} - -void serialsend_ir_cmd(struct RAWcmd_* cmd) { - unsigned short i; - unsigned char *s; - - s=(unsigned char*)cmd; - - for(i=0;iRAWcmd[cmd])); - } - else { - RAW_Send((unsigned long)&(RAWset->RAWcmd[cmd])); - while(ANYKEY) - RAW_Repeat(); - RAW_Stop(); - } - } - } -} - -void RAW_learnset(FORM* form, CONTROL* control) { - RAW_learn((struct RAWset_*)(form->tag)); - form_draw(form); -} - -void RAW_keyerase(FORM* form, CONTROL* control) { - unsigned char x; - - x=msgbox(50,BC_nobuttons,"\nZu loeschende Taste\ndruecken.\n"); - waitKeyDown(); - x=getKeynum(); - if(x>3) { - clear_cmd(&(((struct RAWset_*)(form->tag))->RAWcmd[x-4])); - } - form_draw(form); -} - -void RAW_allkeyserase(FORM* form, CONTROL* control) { - unsigned char x; - - x=msgbox(50,BC_YesNo | BC_DefaultButton2,"Moechten Sie wirklich\nalle Tasten loeschen?\n"); - if(x == BC_Yes) { - for(x=0;x<38;x++) { - clear_cmd(&(((struct RAWset_*)(form->tag))->RAWcmd[x])); - - } - } - form_draw(form); -} - -void RAW_editset(FORM* form, CONTROL* control) { - - struct RAWset_ RAWset; - const BUTTON button1 = {BC_Button,0,15,120,15,SMALLFONT,0,"Anlernen/Testen",RAW_learnset}; - const BUTTON button2 = {BC_Button,0,35,120,15,SMALLFONT,0,"Taste loeschen",RAW_keyerase}; - const BUTTON button3 = {BC_Button,0,55,120,15,SMALLFONT,0,"Alle Tasten loeschen",RAW_allkeyserase}; - const LABEL label1 = {BC_Labelnotab,0,80,60,10,BOLDFONT,0,"Bezeichnung",0}; - TXTBOX txtbox1 = {BC_Txtbox,0,90,120,10,SMALLFONT,20,0,(char*)RAWset.name,NULL,NULL}; - - CONTROL* controls[5] = { (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3, - (CONTROL*)&label1, - (CONTROL*)&txtbox1}; - - FORM form2 = {"RAW Set bearbeiten",0,0,0,0,0,controls,0,5,0,0}; - unsigned long x; - - x = (unsigned long)BFS_LoadFileAddr(BFS_ID_RAWslot0 + ((LABEL*)control)->tag); - - if(x) - memcpy(&RAWset,(void *)x,sizeof(struct RAWset_)); - else - RAWset.id[0] = 0xff; - - x=memcmp(&RAWset,"RC01",4); - if(x) { - for(x=0;xtag, sizeof(struct RAWset_), (unsigned char*) &RAWset); - } - - if(RAWset.name[0]==0xff) - memcpy(&RAWset.name[0],(char*)string_unknown,len_string_unknown); - - form2.tag =(unsigned long)&RAWset; - - form_exec(&form2); - - if(!memcmp(&RAWset.name[0],string_unknown,len_string_unknown)) - for(x=0;xtag, sizeof(struct RAWset_), (unsigned char*) &RAWset) == 0) { - x=msgbox(50,BC_YesNo | BC_DefaultButton1,"Sollen die Aenderungen\ngespeichert werden?\n"); - if(x == BC_Yes) { - memcpy(&RAWset.id[0],"RC01",4); - BFS_SaveFile(BFS_ID_RAWslot0 + ((LABEL*)control)->tag, sizeof(struct RAWset_), (unsigned char*) &RAWset); - if(BFS_CmpFile(BFS_ID_RAWslot0 + ((LABEL*)control)->tag, sizeof(struct RAWset_), (unsigned char*) &RAWset) == 0) { - msgbox(50,BC_OKOnly | BC_DefaultButton1,"Fehler\n"); - } - } - } - - form_draw(form); -} - -void RAW_eraseall(FORM* form, CONTROL* control) { - - unsigned char x; - - x=msgbox(50,BC_YesNo | BC_DefaultButton2,"Moechten Sie wirklich\nalle gespeicherten\nCodes loeschen?\n"); - if(x == BC_Yes) { - for(x=0;x<4;x++) - BFS_DeleteFile(BFS_ID_RAWslot0 + x); - } - form_draw(form); -} -extern const struct TABLES_N RAW; - -void RAW_learnmenue(void) { - - const LABEL label5 = {BC_Labelnotab,0,15,100,10,BOLDFONT,0,"RAW Set bearbeiten:",0}; - const BUTTON button1 = {BC_Button,0,70,80,15,SMALLFONT,0,"Alles loeschen",RAW_eraseall}; - - CONTROL* controls[2 + MAX_slots]; - LABEL l_rawset[MAX_slots]; - controls[0] = (CONTROL*)&label5; - controls[1] = (CONTROL*)&button1; - - FORM form = {"IR-Codes anlernen",0,0,0,0,0,controls,2, 2 + MAX_slots,0,0}; - - int set; - /* load menu entries for four RAW sets from filesystem / default names */ - for (set = 0; set < MAX_slots; set++) { - l_rawset[set] = (LABEL){BC_Label,0,25 + 10*set,50,10,SMALLFONT,set,NULL,RAW_editset}; - struct RAWset_ *rs = (struct RAWset_*)BFS_LoadFileAddr(BFS_ID_RAWslot0 + set); - if(rs && (rs->name[0] != 0xff)) { - l_rawset[set].caption = (char*)rs->name; - } else - l_rawset[set].caption = (char*)RAW.table[set].name; - - controls[2 + set] = (CONTROL*)&l_rawset[set]; - } - - form_exec(&form); - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - -} - diff --git a/boop/trunk/infrared/ir_capture.h b/boop/trunk/infrared/ir_capture.h deleted file mode 100644 index cc9aa60..0000000 --- a/boop/trunk/infrared/ir_capture.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - ir_capture.h - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_CAPTURE_H -#define IR_CAPTURE_H - -#define max_CMD_data 102 - -#define MAX_slots 4 -#define RAWnamelen 20 -struct RAWcmd_ { - unsigned char tval; - unsigned char borders; - unsigned char flags; - unsigned char toggle; - unsigned char CMDstart[3]; - unsigned char CMDlen[3]; - unsigned short pulselen[16]; - unsigned char data[max_CMD_data]; -}; - -struct RAWset_ { - unsigned char id[4]; - unsigned char name[RAWnamelen]; - struct RAWcmd_ RAWcmd[38]; -}; - -struct widetable_ { - unsigned short value[15]; - unsigned char count; -}; - -#define max_capture_data 200 - -struct ir_raw_ { - unsigned long pulsetime; - unsigned char data[max_capture_data]; - struct widetable_ widetable[2]; - unsigned char count; - -}; - -void getIR_test(struct RAWcmd_* cmd); -void RAW_learnmenue(void); -void clear_cmd(struct RAWcmd_* cmd); - -#endif diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_019 b/boop/trunk/infrared/ir_codes/itt/seleco_019 deleted file mode 100644 index ae2cf7c..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_019 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 019 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x330, // Up -> Play - 0x340, // Down -> Stop - 0x020, // Left -> Rewind - 0x310, // Right -> Forward - 0x080, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x070, // Prog+ -> Prog+ - 0x040, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x3F0, // -/-- -> A/B - 0x000, // AV -> - 0x1D0, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x1E0, // VTX1 -> VTX2 - 0x3C0, // VTX2 -> VTX3 - 0x020, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1E0, // Red -> Record - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_049 b/boop/trunk/infrared/ir_codes/itt/seleco_049 deleted file mode 100644 index 584144f..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_049 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 019 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x360, // Up -> Play - 0x330, // Down -> Stop - 0x320, // Left -> Rewind - 0x350, // Right -> Forward - 0x050, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x0D0, // Prog+ -> Prog+ - 0x0E0, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x1F0, // -/-- -> A/B - 0x000, // AV -> - 0x3A0, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x1E0, // VTX1 -> VTX2 - 0x3C0, // VTX2 -> VTX3 - 0x020, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1E0, // Red -> Record - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_108 b/boop/trunk/infrared/ir_codes/itt/seleco_108 deleted file mode 100644 index 883e336..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_108 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 108 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x1C0, // Up -> Play - 0x330, // Down -> Stop - 0x210, // Left -> Rewind - 0x1F0, // Right -> Forward - 0x230, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x3F0, // Mute -> Muting - 0x070, // Prog+ -> Prog+ - 0x080, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x1E0, // -/-- -> A/B - 0x000, // AV -> - 0x000, // Menu -> - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x0F0, // Info -> VTX1 - 0x0D0, // VTX1 -> VTX2 - 0x200, // VTX2 -> VTX3 - 0x000, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1D0, // Red -> Pause - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/itt/seleco_131 b/boop/trunk/infrared/ir_codes/itt/seleco_131 deleted file mode 100644 index 7bd12ee..0000000 --- a/boop/trunk/infrared/ir_codes/itt/seleco_131 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for ITT seleco 131 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x000, // A -> - 0x000, // B -> - 0x000, // C -> - 0x000, // D -> - 0x000, // Betty -> - 0x000, // Exit -> - 0x020, // Up -> Play - 0x300, // Down -> Stop - 0x250, // Left -> Rewind - 0x050, // Right -> Forward - 0x390, // OK -> Enter - 0x2E0, // Vol+ -> Vol+ - 0x2F0, // Vol- -> Vol- - 0x060, // Mute -> Muting - 0x0D0, // Prog+ -> Prog+ - 0x040, // Prog- -> Prog- - 0x100, // 1 -> 1 - 0x110, // 2 -> 2 - 0x120, // 3 -> 3 - 0x130, // 4 -> 4 - 0x140, // 5 -> 5 - 0x150, // 6 -> 6 - 0x160, // 7 -> 7 - 0x170, // 8 -> 8 - 0x180, // 9 -> 9 - 0x190, // 0 -> 0 - 0x000, // -/-- -> - 0x000, // AV -> - 0x390, // Menu -> Info - 0x000, // PiP -> - 0x000, // A/B -> - 0x000, // 16:9 -> - 0x1C0, // Info -> VTX1 - 0x0A0, // VTX1 -> VTX2 - 0x380, // VTX2 -> VTX3 - 0x200, // VTX3 -> VTX4 - 0x000, // Blue -> - 0x000, // Yello -> - 0x000, // Green -> - 0x1D0, // Red -> Pause - 0x000, // TV -> - 0x010 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/lirc/apple_remote1 b/boop/trunk/infrared/ir_codes/lirc/apple_remote1 deleted file mode 100644 index e962faf..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/apple_remote1 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Apple Remote 1st generation (6 buttons) http://lirc.sourceforge.net/remotes/apple/A1156 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x77E1, /*Apple's ID for NEC code*/ /*post_data*/ 0xC5, /*Remote's ID (which can be changed on the original remote)*/ /*toggle_bit_mask*/ 0x00, /*gap*/ 37600, /*repeat_gap*/ 0, /*bits*/ 8, /*pre_data_bits*/ 16, /*post_data_bits*/ 8, /*rc6_bit*/ 0, /*frequency*/ 38000, /*flags*/ LIRC_SPACE_ENC, /*header*/ 9000,4500, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 560,1690, /*zero*/ 560,560, /*plead*/ 0, /*ptrail*/ 560, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 9000,2250, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x00, // A -> 0x00, // B -> 0x00, // C -> 0x00, // D -> 0x00, // Betty -> 0x00, // Exit -> 0xD0, // Up -> up, plus 0xB0, // Down -> down, minus 0x10, // Left -> << rev 0xE0, // Right -> >> ffwd 0x20, // OK -> play 0x00, // Vol+ -> 0x00, // Vol- -> 0x40, // Mute -> menu 0x00, // Prog+ -> 0x00, // Prog- -> 0x00, // 1 -> 0x00, // 2 -> 0x00, // 3 -> 0x00, // 4 -> 0x00, // 5 -> 0x00, // 6 -> 0x00, // 7 -> 0x00, // 8 -> 0x00, // 9 -> 0x00, // 0 -> 0x00, // -/-- -> 0x00, // AV -> 0x00, // Menu -> 0x00, // PiP -> 0x00, // A/B -> 0x00, // 16:9 -> 0x00, // Info -> 0x00, // VTX1 -> 0x00, // VTX2 -> 0x00, // VTX3 -> 0x00, // Blue -> 0x00, // Yello -> 0x00, // Green -> 0x00, // Red -> 0x00, // TV -> 0x00 // Power -> }, diff --git a/boop/trunk/infrared/ir_codes/lirc/fs20 b/boop/trunk/infrared/ir_codes/lirc/fs20 deleted file mode 100644 index dcdd03e..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/fs20 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for FS20 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ calcFS20pre(0x11,0,0x11,0), //Synchr + HC:12121212 /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x00, /*gap*/ 10000, /*repeat_gap*/ 500000, //gap after min_repeats /*bits*/ 27, /*pre_data_bits*/ 32, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x0020293E, //868.350174MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 600,600, /*zero*/ 400,400, /*plead*/ 0, /*ptrail*/ 400, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 2, /*duty cycle*/ 0, { 0x00000, // A -> 0x00000, // B -> 0x00000, // C -> 0x00000, // D -> 0x00000, // Betty -> 0x00000, // Exit -> 0x00000, // Up -> 0x00000, // Down -> 0x00000, // Left -> 0x00000, // Right -> 0x00000, // OK -> 0x00000, // Vol+ -> 0x00000, // Vol- -> 0x00000, // Mute -> 0x00000, // Prog+ -> 0x00000, // Prog- -> calcFS20code(0x01,1,0x00,0,0x29,1), // 1 -> Addr:1112 Cmd:0(Off) calcFS20code(0x01,1,0x12,0,0x3B,1), // 2 -> Addr:1112 Cmd:18(Toggle) calcFS20code(0x01,1,0x11,0,0x3A,0), // 3 -> Addr:1112 Cmd:17(On) 0x00000, // 4 -> 0x00000, // 5 -> 0x00000, // 6 -> 0x00000, // 7 -> 0x00000, // 8 -> 0x00000, // 9 -> 0x00000, // 0 -> 0x00000, // -/-- -> 0x00000, // AV -> 0x00000, // Menu -> 0x00000, // PiP -> 0x00000, // A/B -> 0x00000, // 16:9 -> 0x00000, // Info -> 0x00000, // VTX1 -> 0x00000, // VTX2 -> 0x00000, // VTX3 -> 0x00000, // Blue -> 0x00000, // Yello -> 0x00000, // Green -> 0x00000, // Red -> 0x00000, // TV -> 0x00000 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/hx2262 b/boop/trunk/infrared/ir_codes/lirc/hx2262 deleted file mode 100644 index 06e220e..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/hx2262 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for HX2262 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ //Bit translation: //HX2262 LIRC_RF //0 00 //F (floating) 01 //1 11 /*pre_data*/ 0x00000000, //bit 0-4 = 00000 /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x00, /*gap*/ 11160, /*repeat_gap*/ 11160, //gap after min_repeats /*bits*/ 14, /*pre_data_bits*/ 10, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x00101234, //433,919861MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1080,360, /*zero*/ 360,1080, /*plead*/ 0, /*ptrail*/ 360, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 10, /*duty cycle*/ 0, { 0x00000, // A -> 0x00000, // B -> 0x00000, // C -> 0x00000, // D -> 0x00000, // Betty -> 0x00000, // Exit -> 0x00000, // Up -> 0x00000, // Down -> 0x00000, // Left -> 0x00000, // Right -> 0x00000, // OK -> 0x00000, // Vol+ -> 0x00000, // Vol- -> 0x00000, // Mute -> 0x00000, // Prog+ -> 0x00000, // Prog- -> 0x00551, // 1 -> bit5-8(Device) 0FFF bit9-11(cmd) F0F ->ON 0x01151, // 2 -> bit5-8(Device) 0FFF bit9-11(cmd) FF0 ->OFF 0x01451, // 3 -> bit5-8(Device) F0FF bit9-11(cmd) F0F ->ON 0x00554, // 4 -> bit5-8(Device) F0FF bit9-11(cmd) FF0 ->OFF 0x01154, // 5 -> bit5-8(Device) FF0F bit9-11(cmd) F0F ->ON 0x01454, // 6 -> bit5-8(Device) FF0F bit9-11(cmd) FF0 ->OFF 0x00000, // 7 -> 0x00000, // 8 -> 0x00000, // 9 -> 0x00000, // 0 -> 0x00000, // -/-- -> 0x00000, // AV -> 0x00000, // Menu -> 0x00000, // PiP -> 0x00000, // A/B -> 0x00000, // 16:9 -> 0x00000, // Info -> 0x00000, // VTX1 -> 0x00000, // VTX2 -> 0x00000, // VTX3 -> 0x00000, // Blue -> 0x00000, // Yello -> 0x00000, // Green -> 0x00000, // Red -> 0x00000, // TV -> 0x00000 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 b/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 deleted file mode 100644 index ab59b3c..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/olympus_rm-1 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Olympus RM-1 (digital camera remote) NEC Code http://lirc.sourceforge.net/remotes/olympus/RM-1 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x61DC, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000000000, /*gap*/ 107013, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 16, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 38000, /*flags*/ LIRC_SPACE_ENC | LIRC_CONST_LENGTH, /*header*/ 9000,4500, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 560,1690, /*zero*/ 560,560, /*plead*/ 0, /*ptrail*/ 560, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 9000,2250, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0xC03F, // Up -> tele 0x40BF, // Down -> wide 0x20DF, // Left -> - 0xA05F, // Right -> + 0x807F, // OK -> capture 0x0000, // Vol+ -> 0x0000, // Vol- -> 0x0000, // Mute -> 0x0000, // Prog+ -> 0x0000, // Prog- -> 0x0000, // 1 -> 0x0000, // 2 -> 0x0000, // 3 -> 0x0000, // 4 -> 0x0000, // 5 -> 0x0000, // 6 -> 0x0000, // 7 -> 0x0000, // 8 -> 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0000 // Power -> }, diff --git a/boop/trunk/infrared/ir_codes/lirc/rev008340 b/boop/trunk/infrared/ir_codes/lirc/rev008340 deleted file mode 100644 index c3a55e3..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/rev008340 +++ /dev/null @@ -1 +0,0 @@ -/* RF codes for REV 008340 remote control HS2260A-R4 based on hx2262 by telekatz 2010-10-04 by eme This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ // Bit translation: // HX2262 LIRC_RF // 0 00 // F (floating) 01 // 1 11 // "channel" // A: 1FFF -> 11010101 -> 0xD5 // B: F1FF -> 01110101 -> 0x75 // C: FF1F -> 01011101 -> 0x5D // D: FFF1 -> 01010111 -> 0x57 // "device" // 1: 1FF0 -> 11010100 -> 0xD4 // 2: F1F0 -> 01110100 -> 0x74 // 3: FFF1 -> 01010111 -> 0x57 // "action" // 1: 0010 (on/+) -> 00001100 -> 0x0C // 0: 0001 (off/-) -> 00000011 -> 0x03 /*pre_data*/ 0xD5, // A0-A3 /*post_data*/ 0x00, /*toggle_bit_mask*/ 0x00, /*gap*/ 14570, /*repeat_gap*/ 14570, // gap after min_repeats /*bits*/ 16, // data bits /*pre_data_bits*/ 8, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 0x00101234, // 433,919861MHz /*flags*/ LIRC_RF, /*header*/ 0,0, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1410,470, /*zero*/ 470,1410, /*plead*/ 0, /*ptrail*/ 470, // sync pulse /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 0, /*duty cycle*/ 0, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0000, // Up -> 0x0000, // Down -> 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0000, // Vol+ -> 0x0000, // Vol- -> 0x0000, // Mute -> 0x0000, // Prog+ -> 0x0000, // Prog- -> 0xD40C, // 1 -> 1 on 0xD403, // 2 -> 1 off 0x0000, // 3 -> 0x740C, // 4 -> dim2 + 0x7403, // 5 -> dim2 - 0x0000, // 6 -> 0x570C, // 7 -> dim3 + 0x5703, // 8 -> dim3 - 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0000 // Power -> }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 b/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 deleted file mode 100644 index 508fdcd..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/samsung_ue46b6000 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Samsung UE46B6000 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x0000E0E0, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000000000, /*gap*/ 107635, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 16, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 36000, /*flags*/ LIRC_CONST_LENGTH, /*header*/ 4498,4450, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 588,1646, /*zero*/ 588,535, /*plead*/ 0, /*ptrail*/ 584, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0xB44B, // Exit -> Exit 0x06F9, // Up -> UP 0x8679, // Down -> Down 0xA659, // Left -> Left 0x46B9, // Right -> Right 0x16E9, // OK -> OK 0xE01F, // Vol+ -> Vol+ 0xD02F, // Vol- -> Vol- 0xF00F, // Mute -> Mute 0x48B7, // Prog+ -> Prog+ 0x48B7, // Prog- -> Prog- 0x20DF, // 1 -> 1 0xA05F, // 2 -> 2 0x609F, // 3 -> 3 0x10EF, // 4 -> 4 0x906F, // 5 -> 5 0x50AF, // 6 -> 6 0x30CF, // 7 -> 7 0xB04F, // 8 -> 8 0x708F, // 9 -> 9 0x8877, // 0 -> 0 0xF20D, // -/-- -> Guide 0x807F, // AV -> Source 0x58A7, // Menu -> Menue 0xD22D, // PiP -> Tools 0x1AE5, // A/B -> Return 0x7C83, // 16:9 -> P.Size 0xF807, // Info -> Info 0xD629, // VTX1 -> Ch.List 0x0000, // VTX2 -> 0xC837, // VTX3 -> Pre-CH 0x6897, // Blue -> Blue 0xA857, // Yello -> Yellow 0x28D7, // Green -> Green 0x36C9, // Red -> Red 0xC23D, // TV -> TV/DTV 0x40BF // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/str_de545 b/boop/trunk/infrared/ir_codes/lirc/str_de545 deleted file mode 100644 index ff078e4..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/str_de545 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x00000000, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 45152, /*repeat_gap*/ 0, /*bits*/ 12, /*pre_data_bits*/ 0, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 40000, /*flags*/ LIRC_CONST_LENGTH, /*header*/ 2400,600, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 1200,600, /*zero*/ 600,600, /*plead*/ 0, /*ptrail*/ 0, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 25, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0000, // Up -> 0x0000, // Down -> 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0481, // Vol+ -> Vol+ 0x0C81, // Vol- -> Vol- 0x0281, // Mute -> Mute 0x0096, // Prog+ -> Tuner Prog+ 0x0896, // Prog- -> Tuner Prog- 0x0561, // 1 -> TV/SAT 0x0441, // 2 -> Video 0x0BE1, // 3 -> DVD 0x0841, // 4 -> Tuner 0x0A41, // 5 -> CD 0x0B81, // 6 -> AUX 0x0961, // 7 -> MD/TAPE 0x04E1, // 8 -> 5.1 0x0000, // 9 -> 0x0000, // 0 -> 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x0A81 // Power -> Power }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/ufs910 b/boop/trunk/infrared/ir_codes/lirc/ufs910 deleted file mode 100644 index 4b03d1d..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/ufs910 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS910 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x00229000, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 99000, /*repeat_gap*/ 0, /*bits*/ 8, /*pre_data_bits*/ 24, /*post_data_bits*/ 0, /*rc6_bit*/ 0, /*frequency*/ 36000, /*flags*/ LIRC_RCMM | LIRC_CONST_LENGTH, /*header*/ 417,278, /*three*/ 167,778, /*two*/ 167,611, /*one*/ 167,444, /*zero*/ 167,278, /*plead*/ 0, /*ptrail*/ 167, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x00, // A -> 0x00, // B -> 0x00, // C -> 0x00, // D -> 0x00, // Betty -> 0x55, // Exit -> Back 0x58, // Up -> Up 0x59, // Down -> Down 0x5A, // Left -> Left 0x5B, // Right -> Right 0x5c, // OK -> OK 0x10, // Vol+ -> Vol+ 0x11, // Vol- -> Vol- 0x0D, // Mute -> Mute 0x1E, // Prog+ -> Prog+ 0x1F, // Prog- -> Prog- 0x01, // 1 -> 1 0x02, // 2 -> 2 0x03, // 3 -> 3 0x04, // 4 -> 4 0x05, // 5 -> 5 0x06, // 6 -> 6 0x07, // 7 -> 7 0x08, // 8 -> 8 0x09, // 9 -> 9 0x100, // 0 -> 0 //eigentlich 0x00 0xCC, // -/-- -> EPG 0x00, // AV -> 0x54, // Menu -> Menue 0x21, // PiP -> Rewind 0x38, // A/B -> Play 0x20, // 16:9 -> Forward 0x0F, // Info -> Info 0x39, // VTX1 -> Pause 0x37, // VTX2 -> Record 0x31, // VTX3 -> Stop 0x70, // Blue -> Blue 0x6F, // Yello -> Yellow 0x6E, // Green -> Green 0x6D, // Red -> Red 0x3C, // TV -> Text 0x0C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/lirc/ufs922 b/boop/trunk/infrared/ir_codes/lirc/ufs922 deleted file mode 100644 index 45ec946..0000000 --- a/boop/trunk/infrared/ir_codes/lirc/ufs922 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /*pre_data*/ 0x00037FB9, /*post_data*/ 0x00000000, /*toggle_bit_mask*/ 0x0000000000008000, /*gap*/ 106291, /*repeat_gap*/ 0, /*bits*/ 16, /*pre_data_bits*/ 21, /*post_data_bits*/ 0, /*rc6_bit*/ 5, /*frequency*/ 36000, /*flags*/ LIRC_RC6 | LIRC_CONST_LENGTH, /*header*/ 2676,870, /*three*/ 0,0, /*two*/ 0,0, /*one*/ 454,429, /*zero*/ 454,429, /*plead*/ 0, /*ptrail*/ 0, /*foot*/ 0,0, /*pre*/ 0,0, /*post*/ 0,0, /*repeat*/ 0,0, /*min_repeat*/ 1, /*duty cycle*/ 33, { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0xFFAA, // Exit -> Back 0xFFA7, // Up -> Up 0xFFA6, // Down -> Down 0xFFA5, // Left -> Left 0xFFA4, // Right -> Right 0xFFA3, // OK -> OK 0xFFEF, // Vol+ -> Vol+ 0xFFEE, // Vol- -> Vol- 0xFFF2, // Mute -> Mute 0xFFE1, // Prog+ -> Prog+ 0xFFE0, // Prog- -> Prog- 0xFFFE, // 1 -> 1 0xFFFD, // 2 -> 2 0xFFFC, // 3 -> 3 0xFFFB, // 4 -> 4 0xFFFA, // 5 -> 5 0xFFF9, // 6 -> 6 0xFFF8, // 7 -> 7 0xFFF7, // 8 -> 8 0xFFF6, // 9 -> 9 0xFFF5, // 0 -> 0 0xFF33, // -/-- -> EPG 0xFFB9, // AV -> Archiv 0xFFAB, // Menu -> Menue 0xFFDE, // PiP -> Rewind 0xFFC7, // A/B -> Play 0xFFDF, // 16:9 -> Forward 0xFFF0, // Info -> Info 0xFFC6, // VTX1 -> Pause 0xFFC8, // VTX2 -> Record 0xFFCE, // VTX3 -> Stop 0xFF8F, // Blue -> Blue 0xFF90, // Yello -> Yellow 0xFF91, // Green -> Green 0xFF92, // Red -> Red 0xFF2A, // TV -> Media 0xFFF3 // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/nrc17/dbox2 b/boop/trunk/infrared/ir_codes/nrc17/dbox2 deleted file mode 100644 index e6f2c73..0000000 --- a/boop/trunk/infrared/ir_codes/nrc17/dbox2 +++ /dev/null @@ -1,64 +0,0 @@ -/* - NRC17_dbox2.code - infrared codes for the dbox2 in NRC17 coding - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// codes are: subcode[4]:address[4]:command[8] = 16 bits - -{ - 0x0000, // A - 0x0000, // B - 0x0000, // C - 0x0000, // D - 0x5c20, // Betty -> Home - 0x5c27, // Exit -> dbox - 0x5c0e, // Up -> Up - 0x5c0f, // Down -> Down - 0x5c2f, // Left -> Left - 0x5c2e, // Right -> Right - 0x5c30, // OK -> OK - 0x5c16, // Vol+ -> Vol+ - 0x5c17, // Vol- -> Vol- - 0x5c28, // Mute -> Mute - 0x5c54, // Prog+ -> Next - 0x5c53, // Prog- -> Prev - 0x5c01, // 1 -> 1 - 0x5c02, // 2 -> 2 - 0x5c03, // 3 -> 3 - 0x5c04, // 4 -> 4 - 0x5c05, // 5 -> 5 - 0x5c06, // 6 -> 6 - 0x5c07, // 7 -> 7 - 0x5c08, // 8 -> 8 - 0x5c09, // 9 -> 9 - 0x5c00, // 0 -> 0 - 0x0000, // -/-- - 0x0000, // AV - 0x5c27, // Menu -> dbox - 0x0000, // PiP - 0x0000, // A/B - 0x0000, // 16:9 - 0x5c82, // Info -> Help - 0x0000, // VTX1 - 0x0000, // VTX2 - 0x0000, // VTX3 - 0x5c3b, // Blue -> Blue - 0x5c52, // Yellow -> Yellow - 0x5c55, // Green -> Green - 0x5c2d, // Red -> Red - 0x5c20, // TV -> Home - 0x5c0c // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 b/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 deleted file mode 100644 index 20ea9ae..0000000 --- a/boop/trunk/infrared/ir_codes/nrc17/grundig_tp720 +++ /dev/null @@ -1,64 +0,0 @@ -/* - infrared codes for the grundig tp720 tv - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// codes are: command[9] = 9 bits - -{ - 0x0000, // A - 0x0000, // B - 0x0000, // C - 0x0000, // D - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x000C, // Up -> COLOR+ - 0x000D, // Down -> COLOR- - 0x000B, // Left -> BR- - 0x000A, // Right -> BR+ - 0x8000, // OK -> OK - 0x0008, // Vol+ -> V+ - 0x0009, // Vol- -> V- - 0x0001, // Mute -> Mute - 0x002A, // Prog+ -> P+ - 0x002B, // Prog- -> P- - 0x0011, // 1 -> 1 - 0x0012, // 2 -> 2 - 0x0013, // 3 -> 3 - 0x0014, // 4 -> 4 - 0x0015, // 5 -> 5 - 0x0016, // 6 -> 6 - 0x0017, // 7 -> 7 - 0x0018, // 8 -> 8 - 0x0019, // 9 -> 9 - 0x0010, // 0 -> 0 - 0x0000, // -/-- - 0x0000, // AV - 0x001A, // Menu -> PC - 0x0000, // PiP - 0x0000, // A/B - 0x0000, // 16:9 - 0x002D, // Info -> I - 0x0030, // VTX1 -> Teletext - 0x0000, // VTX2 - 0x0000, // VTX3 - 0x002E, // Blue -> Blue - 0x003B, // Yellow -> Yellow - 0x003e, // Green -> Green - 0x003a, // Red -> Red - 0x0007, // TV -> Aux - 0x0002 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 b/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 deleted file mode 100644 index fa174b0..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/HARMONY_655 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for technisat satreceiver - Copyright (C) 2008 p.c.squirrel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -{ - RC5_STD(0x0000), // A -> - RC5_STD(0x0000), // B -> - RC5_STD(0x0000), // C -> - RC5_STD(0x0000), // D -> - RC5_STD(0x0000), // Betty -> - RC5_STD(0x100B), // Exit -> Zurück - RC5_STD(0x1012), // Up -> - RC5_STD(0x1013), // Down -> - RC5_STD(0x1015), // Left -> - RC5_STD(0x1014), // Right -> - RC5_STD(0x1023), // OK -> - RC5_STD(0x0210), // Vol+ -> Vol+ - RC5_STD(0x0211), // Vol- -> Vol- - RC5_STD(0x020D), // Mute -> Mute - RC5_STD(0x1020), // Prog+ -> Prog+ - RC5_STD(0x1021), // Prog- -> Prog- - RC5_STD(0x0201), // 1 -> 1 - RC5_STD(0x0202), // 2 -> 2 - RC5_STD(0x0203), // 3 -> 3 - RC5_STD(0x0204), // 4 -> 4 - RC5_STD(0x0205), // 5 -> 5 - RC5_STD(0x0206), // 6 -> 6 - RC5_STD(0x0207), // 7 -> 7 - RC5_STD(0x0208), // 8 -> 8 - RC5_STD(0x0209), // 9 -> 9 - RC5_STD(0x1000), // 0 -> 0 - RC5_STD(0x17C0), // -/-- -> AUDIO - RC5_STD(0x0238), // AV -> EXT - RC5_STD(0x100E), // Menu -> - RC5_STD(0x17FB), // PiP -> Full - RC5_STD(0x17FC), // A/B -> GO - RC5_STD(0x1165), // 16:9 -> FR - RC5_STD(0x1166), // Info -> FF - RC5_STD(0x1175), // VTX1 -> Play - RC5_STD(0x17F6), // VTX2 -> Stop - RC5_STD(0x17F7), // VTX3 -> Record - RC5_STD(0x1034), // Blue -> - RC5_STD(0x1032), // Yello -> - RC5_STD(0x1036), // Green -> - RC5_STD(0x1037), // Red -> - RC5_STD(0x1169), // TV -> Pause - RC5_STD(0x020C) // Power -> Standby -}, - diff --git a/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 b/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 deleted file mode 100644 index 8cc2205..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/technisat_satreceiver_103TS103 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for technisat satreceiver Copyright (C) 2008 p.c.squirrel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { RC5_STD(0x0000), // A -> RC5_STD(0x0000), // B -> RC5_STD(0x0000), // C -> RC5_STD(0x0000), // D -> RC5_STD(0x0000), // Betty -> RC5_STD(0x0000), // Exit -> RC5_STD(0x0210), // Up -> RC5_STD(0x0211), // Down -> RC5_STD(0x0215), // Left -> RC5_STD(0x0216), // Right -> RC5_STD(0x0217), // OK -> RC5_STD(0x0210), // Vol+ -> Vol+ RC5_STD(0x0211), // Vol- -> Vol- RC5_STD(0x020D), // Mute -> Mute RC5_STD(0x0220), // Prog+ -> Prog+ RC5_STD(0x0221), // Prog- -> Prog- RC5_STD(0x0201), // 1 -> 1 RC5_STD(0x0202), // 2 -> 2 RC5_STD(0x0203), // 3 -> 3 RC5_STD(0x0204), // 4 -> 4 RC5_STD(0x0205), // 5 -> 5 RC5_STD(0x0206), // 6 -> 6 RC5_STD(0x0207), // 7 -> 7 RC5_STD(0x0208), // 8 -> 8 RC5_STD(0x0209), // 9 -> 9 RC5_STD(0x0200), // 0 -> 0 RC5_STD(0x0000), // -/-- -> RC5_STD(0x0238), // AV ->EXT RC5_STD(0x0000), // Menu -> RC5_STD(0x0000), // PiP -> RC5_STD(0x0000), // A/B -> RC5_STD(0x0000), // 16:9 -> RC5_STD(0x0000), // Info -> RC5_STD(0x0000), // VTX1 -> RC5_STD(0x0000), // VTX2 -> RC5_STD(0x0000), // VTX3 -> RC5_STD(0x022E), // Blue -> RC5_STD(0x022D), // Yello -> RC5_STD(0x022C), // Green -> RC5_STD(0x022B), // Red -> RC5_STD(0x0000), // TV -> RC5_STD(0x020C) // Power -> Standby /* SAT1-OPTION 0x000000000000120A SAT1-A/B 0x0000000000001223 SAT1-SFI 0x000000000000122F SAT1-EXIT 0x0000000000001222 SAT1-INFO 0x000000000000020F SAT1-TV/RADIO 0x0000000000000213 SAT1-MENU 0x0000000000000212 SAT1-TV/SAT 0x0000000000000200 SAT1-TXT 0x000000000000123C SAT1-STOP 0x0000000000001229*/ }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc5/tv b/boop/trunk/infrared/ir_codes/rc5/tv deleted file mode 100644 index 532d2b8..0000000 --- a/boop/trunk/infrared/ir_codes/rc5/tv +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC5 tv Copyright (C) 2007 Ch. Klippel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { RC5_STD(0x0000), // A -> RC5_STD(0x0000), // B -> RC5_STD(0x0000), // C -> RC5_STD(0x0000), // D -> RC5_STD(0x0000), // Betty -> RC5_STD(0x0000), // Exit -> RC5_STD(0x0812), // Up -> Brightness+ RC5_STD(0x0813), // Down -> Brightness- RC5_STD(0x0000), // Left -> RC5_STD(0x0000), // Right -> RC5_STD(0x0000), // OK -> RC5_STD(0x0810), // Vol+ -> Vol+ RC5_STD(0x0811), // Vol- -> Vol- RC5_STD(0x080D), // Mute -> Mute RC5_STD(0x0820), // Prog+ -> Prog+ RC5_STD(0x0821), // Prog- -> Prog- RC5_STD(0x0801), // 1 -> 1 RC5_STD(0x0802), // 2 -> 2 RC5_STD(0x0803), // 3 -> 3 RC5_STD(0x0804), // 4 -> 4 RC5_STD(0x0805), // 5 -> 5 RC5_STD(0x0806), // 6 -> 6 RC5_STD(0x0807), // 7 -> 7 RC5_STD(0x0808), // 8 -> 8 RC5_STD(0x0809), // 9 -> 9 RC5_STD(0x0800), // 0 -> 0 RC5_STD(0x080A), // -/-- -> RC5_STD(0x0000), // AV -> RC5_STD(0x0000), // Menu -> RC5_STD(0x0000), // PiP -> RC5_STD(0x0000), // A/B -> RC5_STD(0x0000), // 16:9 -> RC5_STD(0x0000), // Info -> RC5_STD(0x0000), // VTX1 -> RC5_STD(0x0000), // VTX2 -> RC5_STD(0x0000), // VTX3 -> RC5_STD(0x0000), // Blue -> RC5_STD(0x0000), // Yello -> RC5_STD(0x0000), // Green -> RC5_STD(0x0000), // Red -> RC5_STD(0x0000), // TV -> RC5_STD(0x080C) // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/dvd b/boop/trunk/infrared/ir_codes/rc6/dvd deleted file mode 100644 index b351666..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/dvd +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC6 DVD Copyright (C) 2008 p.c.squirrel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0458, // Up -> Brightness+ 0x0459, // Down -> Brightness- 0xFBA5, // Left -> 0x045B, // Right -> 0x045C, // OK -> 0x1810, // Vol+ -> Vol+ 0x1811, // Vol- -> Vol- 0x180D, // Mute -> Mute 0x1820, // Prog+ -> Prog+ 0x1821, // Prog- -> Prog- 0x0401, // 1 -> 1 0x0402, // 2 -> 2 0x0403, // 3 -> 3 0x0404, // 4 -> 4 0x0405, // 5 -> 5 0x0406, // 6 -> 6 0x0407, // 7 -> 7 0x0408, // 8 -> 8 0x0409, // 9 -> 9 0x040A, // 0 -> 0 0x1800, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x180C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/tv b/boop/trunk/infrared/ir_codes/rc6/tv deleted file mode 100644 index 365ee3a..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/tv +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for RC6 TV Copyright (C) 2008 p.c.squirrel This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { 0x0000, // A -> 0x0000, // B -> 0x0000, // C -> 0x0000, // D -> 0x0000, // Betty -> 0x0000, // Exit -> 0x0012, // Up -> Brightness+ 0x0013, // Down -> Brightness- 0x0000, // Left -> 0x0000, // Right -> 0x0000, // OK -> 0x0010, // Vol+ -> Vol+ 0x0011, // Vol- -> Vol- 0x000D, // Mute -> Mute 0x0020, // Prog+ -> Prog+ 0x0021, // Prog- -> Prog- 0x0001, // 1 -> 1 0x0002, // 2 -> 2 0x0003, // 3 -> 3 0x0004, // 4 -> 4 0x0005, // 5 -> 5 0x0006, // 6 -> 6 0x0007, // 7 -> 7 0x0008, // 8 -> 8 0x0009, // 9 -> 9 0x000A, // 0 -> 0 0x0000, // -/-- -> 0x0000, // AV -> 0x0000, // Menu -> 0x0000, // PiP -> 0x0000, // A/B -> 0x0000, // 16:9 -> 0x0000, // Info -> 0x0000, // VTX1 -> 0x0000, // VTX2 -> 0x0000, // VTX3 -> 0x0000, // Blue -> 0x0000, // Yello -> 0x0000, // Green -> 0x0000, // Red -> 0x0000, // TV -> 0x000C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rc6/ufs922 b/boop/trunk/infrared/ir_codes/rc6/ufs922 deleted file mode 100644 index ba92abf..0000000 --- a/boop/trunk/infrared/ir_codes/rc6/ufs922 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS922 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { 0x00000000, // A -> 0x00000000, // B -> 0x00000000, // C -> 0x00000000, // D -> 0x00000000, // Betty -> 0x80460055, // Exit -> Back 0x80460058, // Up -> Up 0x80460059, // Down -> Down 0x8046005A, // Left -> Left 0x8046005B, // Right -> Right 0x8046005c, // OK -> OK 0x80460010, // Vol+ -> Vol+ 0x80460011, // Vol- -> Vol- 0x8046000D, // Mute -> Mute 0x8046001E, // Prog+ -> Prog+ 0x8046001F, // Prog- -> Prog- 0x80460001, // 1 -> 1 0x80460002, // 2 -> 2 0x80460003, // 3 -> 3 0x80460004, // 4 -> 4 0x80460005, // 5 -> 5 0x80460006, // 6 -> 6 0x80460007, // 7 -> 7 0x80460008, // 8 -> 8 0x80460009, // 9 -> 9 0x80460000, // 0 -> 0 0x804600CC, // -/-- -> EPG 0x80460046, // AV -> Archiv 0x80460054, // Menu -> Menue 0x80460021, // PiP -> Rewind 0x80460038, // A/B -> Play 0x80460020, // 16:9 -> Forward 0x8046000F, // Info -> Info 0x80460039, // VTX1 -> Pause 0x80460037, // VTX2 -> Record 0x80460031, // VTX3 -> Stop 0x80460070, // Blue -> Blue 0x8046006F, // Yello -> Yellow 0x8046006E, // Green -> Green 0x8046006D, // Red -> Red 0x804600D5, // TV -> Media 0x8046000C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rca/xbox b/boop/trunk/infrared/ir_codes/rca/xbox deleted file mode 100644 index 38679e8..0000000 --- a/boop/trunk/infrared/ir_codes/rca/xbox +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RCA xbox - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x27, // Exit -> Back - 0x59, // Up -> Up - 0x58, // Down -> Down - 0x56, // Left -> Left - 0x57, // Right -> Right - 0xF4, // OK -> Select - 0x33, // Vol+ -> - 0x36, // Vol- -> - 0x39, // Mute -> - 0x20, // Prog+ -> Skip+ - 0x22, // Prog- -> Skip- - 0x31, // 1 -> 1 - 0x32, // 2 -> 2 - 0x33, // 3 -> 3 - 0x34, // 4 -> 4 - 0x35, // 5 -> 5 - 0x36, // 6 -> 6 - 0x37, // 7 -> 7 - 0x38, // 8 -> 8 - 0x39, // 9 -> 9 - 0x30, // 0 -> 0 - 0x15, // -/-- -> Play - 0x1F, // AV -> Stop - 0x08, // Menu -> Menu - 0x19, // PiP -> Pause - 0x1C, // A/B -> Forward - 0x1D, // 16:9 -> Reverse - 0x3C, // Info -> Info - 0x1A, // VTX1 -> Title - 0x2A, // VTX2 -> Display - 0x00, // VTX3 -> - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x00, // Red -> - 0x00, // TV -> - 0x30 // Power -> -}, diff --git a/boop/trunk/infrared/ir_codes/rcmm/galaxis b/boop/trunk/infrared/ir_codes/rcmm/galaxis deleted file mode 100644 index 7b7767f..0000000 --- a/boop/trunk/infrared/ir_codes/rcmm/galaxis +++ /dev/null @@ -1,62 +0,0 @@ -/* - rcmm_galaxis.code - infrared codes for the galaxis receiver in RCMM coding - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0D500800, // A -> - 0x0D500861, // B -> Alt - 0x0D500879, // C -> List - 0x0D50080A, // D -> Back - 0x0D500845, // Betty -> Setup - 0x0D500855, // Exit -> Exit - 0x0D500858, // Up -> Up - 0x0D500859, // Down -> Down - 0x0D50085A, // Left -> Left - 0x0D50085B, // Right -> Right - 0x0D50085C, // OK -> OK - 0x0D500810, // Vol+ -> Vol+ - 0x0D500811, // Vol- -> Vol- - 0x0D50080D, // Mute -> Mute - 0x0D500820, // Prog+ -> Prog+ - 0x0D500821, // Prog- -> Prog- - 0x0D500801, // 1 -> 1 - 0x0D500802, // 2 -> 2 - 0x0D500803, // 3 -> 3 - 0x0D500804, // 4 -> 4 - 0x0D500805, // 5 -> 5 - 0x0D500806, // 6 -> 6 - 0x0D500807, // 7 -> 7 - 0x0D500808, // 8 -> 8 - 0x0D500809, // 9 -> 9 - 0x0D500800, // 0 -> 0 - 0x0D500850, // -/-- -> Audio - 0x0D5008FF, // AV -> VCR - 0x0D500878, // Menu -> Menu - 0x0D500879, // PiP -> List - 0x0D50084E, // A/B -> Language - 0x0D500861, // 16:9 -> Alt - 0x0D50080F, // Info -> Info - 0x0D50083C, // VTX1 -> Text - 0x0D50084B, // VTX2 -> Subtitle - 0x0D5008CC, // VTX3 -> EPG - 0x0D500870, // Blue -> Blue - 0x0D50086F, // Yello -> Yellow - 0x0D50086E, // Green -> Green - 0x0D50086D, // Red -> Red - 0x0D50083F, // TV -> TV - 0x0D50080C // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rcmm/ufs910 b/boop/trunk/infrared/ir_codes/rcmm/ufs910 deleted file mode 100644 index 0554c3e..0000000 --- a/boop/trunk/infrared/ir_codes/rcmm/ufs910 +++ /dev/null @@ -1 +0,0 @@ -/* infrared codes for Kathrein UFS910 Copyright (C) 2009 This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ { 0x00000000, // A -> 0x00000000, // B -> 0x00000000, // C -> 0x00000000, // D -> 0x00000000, // Betty -> 0x22908055, // Exit -> Back 0x22908058, // Up -> Up 0x22908059, // Down -> Down 0x2290805A, // Left -> Left 0x2290805B, // Right -> Right 0x2290805c, // OK -> OK 0x22908010, // Vol+ -> Vol+ 0x22908011, // Vol- -> Vol- 0x2290800D, // Mute -> Mute 0x2290801E, // Prog+ -> Prog+ 0x2290801F, // Prog- -> Prog- 0x22908001, // 1 -> 1 0x22908002, // 2 -> 2 0x22908003, // 3 -> 3 0x22908004, // 4 -> 4 0x22908005, // 5 -> 5 0x22908006, // 6 -> 6 0x22908007, // 7 -> 7 0x22908008, // 8 -> 8 0x22908009, // 9 -> 9 0x22908000, // 0 -> 0 0x229080CC, // -/-- -> EPG 0x00000000, // AV -> 0x22908054, // Menu -> Menue 0x22908021, // PiP -> Rewind 0x22908038, // A/B -> Play 0x22908020, // 16:9 -> Forward 0x2290800F, // Info -> Info 0x22908039, // VTX1 -> Pause 0x22908037, // VTX2 -> Record 0x22908031, // VTX3 -> Stop 0x22908070, // Blue -> Blue 0x2290806F, // Yello -> Yellow 0x2290806E, // Green -> Green 0x2290806D, // Red -> Red 0x2290803C, // TV -> Text 0x2290800C // Power -> Standby }, \ No newline at end of file diff --git a/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk b/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk deleted file mode 100644 index 2dc8181..0000000 --- a/boop/trunk/infrared/ir_codes/rec80/rak_sc957wk +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for REC80 rak sc957wk - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x80F64A1C, // A -> Subwoofer - 0x8024981C, // B -> Auto Off - 0x802A961C, // C -> Sleep - 0x800EA40A, // D -> Disc - 0x80208A0A, // Betty -> Program - 0x8009A30A, // Exit -> Cancel - 0x80B60A1C, // Up -> Up - 0x80BA061C, // Down -> Down - 0x80F5491C, // Left -> SkipBack/Rewind - 0x80F64A1C, // Right -> SkipForward/FastForward - 0x80000000, // OK -> - 0x80802000, // Vol+ -> Vol+ - 0x80812100, // Vol- -> Vol- - 0x80923200, // Mute -> Muting - 0x80000000, // Prog+ -> - 0x80000000, // Prog- -> - 0x80AC101C, // 1 -> 1 - 0x80AD111C, // 2 -> 2 - 0x80AE121C, // 3 -> 3 - 0x80AF131C, // 4 -> 4 - 0x80A8141C, // 5 -> 5 - 0x80A9151C, // 6 -> 6 - 0x80AA161C, // 7 -> 7 - 0x80AB171C, // 8 -> 8 - 0x80A4181C, // 9 -> 9 - 0x80A5191C, // 0 -> 0 - 0x8038841C, // -/-- -> >10 - 0x80000000, // AV -> - 0x80BC001C, // Menu -> Stop - 0x80ED470A, // PiP -> Repeat - 0x80E74D0A, // A/B -> Random - 0x80813110, // 16:9 -> 3D AI - 0x80000000, // Info -> CD - 0x80000000, // VTX1 -> Tuner - 0x80000000, // VTX2 -> Aux - 0x80338310, // VTX3 -> EQ - 0x80813110, // Blue -> Tape - 0x80349400, // Yello -> CD - 0x8000A404, // Green -> Tuner - 0x803A9A00, // Red -> Aux - 0x80000000, // TV -> - 0x80813D1C // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/recs80/seleco_020 b/boop/trunk/infrared/ir_codes/recs80/seleco_020 deleted file mode 100644 index d957ed9..0000000 --- a/boop/trunk/infrared/ir_codes/recs80/seleco_020 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RECS80 seleco 020 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x05DC, // Up -> - 0x05DE, // Down -> - 0x05DA, // Left -> - 0x05DB, // Right -> - 0x05EC, // OK -> Enter - 0x05D0, // Vol+ -> Vol+ - 0x05D1, // Vol- -> Vol- - 0x05E9, // Mute -> Muting - 0x05CA, // Prog+ -> Prog+ - 0x05CB, // Prog- -> Prog- - 0x05C1, // 1 -> 1 - 0x05C2, // 2 -> 2 - 0x05C3, // 3 -> 3 - 0x05C4, // 4 -> 4 - 0x05C5, // 5 -> 5 - 0x05C6, // 6 -> 6 - 0x05C7, // 7 -> 7 - 0x05C8, // 8 -> 8 - 0x05C9, // 9 -> 9 - 0x05C0, // 0 -> 0 - 0x0000, // -/-- -> - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x05EE, // A/B -> A/B - 0x0000, // 16:9 -> - 0x05EE, // Info -> Info - 0x05F6, // VTX1 -> VTX1 - 0x05F0, // VTX2 -> VTX3 - 0x05F7, // VTX3 -> VTX4 - 0x0000, // Blue -> - 0x0000, // Yello -> - 0x0000, // Green -> - 0x0000, // Red -> - 0x0000, // TV -> - 0x05CC // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/recs80/seleco_157 b/boop/trunk/infrared/ir_codes/recs80/seleco_157 deleted file mode 100644 index 70cd77f..0000000 --- a/boop/trunk/infrared/ir_codes/recs80/seleco_157 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for RECS80 seleco 157 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x05DC, // Up -> - 0x05DE, // Down -> - 0x05DA, // Left -> - 0x05DB, // Right -> - 0x05EC, // OK -> Enter - 0x05D0, // Vol+ -> Vol+ - 0x05D1, // Vol- -> Vol- - 0x05E9, // Mute -> Muting - 0x05D2, // Prog+ -> Prog+ - 0x05D3, // Prog- -> Prog- - 0x05C1, // 1 -> 1 - 0x05C2, // 2 -> 2 - 0x05C3, // 3 -> 3 - 0x05C4, // 4 -> 4 - 0x05C5, // 5 -> 5 - 0x05C6, // 6 -> 6 - 0x05C7, // 7 -> 7 - 0x05C8, // 8 -> 8 - 0x05C9, // 9 -> 9 - 0x05C0, // 0 -> 0 - 0x0000, // -/-- -> - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x05CA, // A/B -> A/B - 0x0000, // 16:9 -> - 0x05E8, // Info -> Info - 0x05F3, // VTX1 -> VTX1 - 0x05E5, // VTX2 -> VTX2 - 0x05F6, // VTX3 -> VTX3 - 0x0000, // Blue -> - 0x0000, // Yello -> - 0x0000, // Green -> - 0x0000, // Red -> - 0x0000, // TV -> - 0x05F0 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/rf/cc1100_a0 b/boop/trunk/infrared/ir_codes/rf/cc1100_a0 deleted file mode 100644 index 2e05ed9..0000000 --- a/boop/trunk/infrared/ir_codes/rf/cc1100_a0 +++ /dev/null @@ -1,62 +0,0 @@ -/* - RF codes for cc1100 Adress 0 - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x000b, // Up -> Brightness+ - 0x000c, // Down -> Brightness- - 0x000d, // Left -> Left - 0x000e, // Right -> Right - 0x000f, // OK -> OK - 0x0010, // Vol+ -> Vol+ - 0x0011, // Vol- -> Vol- - 0x0012, // Mute -> Mute - 0x0013, // Prog+ -> Prog+ - 0x0014, // Prog- -> Prog- - 0x0001, // 1 -> 1 - 0x0002, // 2 -> 2 - 0x0003, // 3 -> 3 - 0x0004, // 4 -> 4 - 0x0005, // 5 -> 5 - 0x0006, // 6 -> 6 - 0x0007, // 7 -> 7 - 0x0008, // 8 -> 8 - 0x0009, // 9 -> 9 - 0x000a, // 0 -> 0 - 0x0015, // -/-- -> -/-- - 0x0016, // AV -> AV - 0x0017, // Menu -> Menu - 0x0018, // PiP -> PiP - 0x0019, // A/B -> A/B - 0x001a, // 16:9 -> 16:9 - 0x001b, // Info -> Info - 0x001c, // VTX1 -> VTX1 - 0x001d, // VTX2 -> VTX2 - 0x001e, // VTX3 -> VTX3 - 0x001f, // Blue -> Blue - 0x0020, // Yello -> Yello - 0x0021, // Green -> Green - 0x0022, // Red -> Red - 0x0023, // TV -> TV - 0x0024 // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/rf/cc1100_a1 b/boop/trunk/infrared/ir_codes/rf/cc1100_a1 deleted file mode 100644 index ec84a50..0000000 --- a/boop/trunk/infrared/ir_codes/rf/cc1100_a1 +++ /dev/null @@ -1,62 +0,0 @@ -/* - RF codes for cc1100 Adress 1 - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x010b, // Up -> Brightness+ - 0x010c, // Down -> Brightness- - 0x010d, // Left -> Left - 0x010e, // Right -> Right - 0x010f, // OK -> OK - 0x0110, // Vol+ -> Vol+ - 0x0111, // Vol- -> Vol- - 0x0112, // Mute -> Mute - 0x0113, // Prog+ -> Prog+ - 0x0114, // Prog- -> Prog- - 0x0101, // 1 -> 1 - 0x0102, // 2 -> 2 - 0x0103, // 3 -> 3 - 0x0104, // 4 -> 4 - 0x0105, // 5 -> 5 - 0x0106, // 6 -> 6 - 0x0107, // 7 -> 7 - 0x0108, // 8 -> 8 - 0x0109, // 9 -> 9 - 0x010a, // 0 -> 0 - 0x0115, // -/-- -> -/-- - 0x0116, // AV -> AV - 0x0117, // Menu -> Menu - 0x0118, // PiP -> PiP - 0x0119, // A/B -> A/B - 0x011a, // 16:9 -> 16:9 - 0x011b, // Info -> Info - 0x011c, // VTX1 -> VTX1 - 0x011d, // VTX2 -> VTX2 - 0x011e, // VTX3 -> VTX3 - 0x011f, // Blue -> Blue - 0x0120, // Yello -> Yello - 0x0121, // Green -> Green - 0x0122, // Red -> Red - 0x0123, // TV -> TV - 0x0124 // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/UFD400 b/boop/trunk/infrared/ir_codes/sirc/UFD400 deleted file mode 100644 index 158abcd..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/UFD400 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC seleco 027 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x0000, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x47B8, // Exit -> - 0x0BF4, // Up -> Play - 0x738C, // Down -> Stop - 0x6798, // Left -> Rewind - 0x27D8, // Right -> Forward - 0x3BC4, // OK -> Enter - 0x4BB4, // Vol+ -> Vol+ - 0x2BD4, // Vol- -> Vol- - 0x1BE4, // Mute -> Muting - 0x00, // Prog+ -> Prog+ - 0x00, // Prog- -> Prog- - 0x3FC0, // 1 -> 1 - 0x5FA0, // 2 -> 2 - 0x1FE0, // 3 -> 3 - 0x6F90, // 4 -> 4 - 0x2FD0, // 5 -> 5 - 0x4FB0, // 6 -> 6 - 0x0FF0, // 7 -> 7 - 0x7788, // 8 -> 8 - 0x37C8, // 9 -> 9 - 0x7F80, // 0 -> 0 - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x26D9, // A/B -> A/B - 0x15EA, // 16:9 -> - 0x659A, // Info -> Info - 0x6798, // VTX1 -> VTX1 - 0x7B84, // VTX2 -> VTX3 - 0x5EA1, // VTX3 -> VTX4 - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x00, // Red -> Pause - 0x07F8, // TV -> - 0x5BA4 // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/rm-pp411 b/boop/trunk/infrared/ir_codes/sirc/rm-pp411 deleted file mode 100644 index d849442..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/rm-pp411 +++ /dev/null @@ -1,64 +0,0 @@ -/* - Infrared codes for Sony RM-PP411 Receiver AV2 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// 15 bit commands, msb = 1 - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0xD877, // Betty -> Main Menu - 0x9860, // Exit -> Sleep - 0x0000, // Up -> - 0x0000, // Down -> - 0x0000, // Left -> - 0x0000, // Right -> - 0x0000, // OK -> - 0x9812, // Vol+ -> Master Vol+ - 0x9813, // Vol- -> Master Vol- - 0x9814, // Mute -> Muting - 0xD86E, // Prog+ -> Mode+ - 0xD86F, // Prog- -> Mode- - 0x9822, // 1 -> Video 1 - 0x981E, // 2 -> Video 2 - 0x9842, // 3 -> Video 3 - 0x987D, // 4 -> DVD/LD - 0x9869, // 5 -> MD/Tape - 0x9825, // 6 -> CD/SACD - 0x9821, // 7 -> Tuner - 0x9820, // 8 -> Phono - 0x981D, // 9 -> Aux - 0x9849, // 0 -> Analog Direct - 0xD841, // -/-- -> 2 CH - 0x0000, // AV -> - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x0000, // A/B -> - 0x0000, // 16:9 -> - 0x9853, // Info -> On Screen - 0x9815, // VTX1 -> I/O - 0xD847, // VTX2 -> AUTO Decoding - 0x9817, // VTX3 -> MPX/Dual - 0xD826, // Blue -> Preset - 0xD84A, // Yello -> Test Tone - 0xBCFB, // Green -> Source - 0x9872, // Red -> Multi CH - 0x986A, // TV -> TV/Sat - 0x8237, // Power -> Standby -}, diff --git a/boop/trunk/infrared/ir_codes/sirc/tv b/boop/trunk/infrared/ir_codes/sirc/tv deleted file mode 100644 index 02ab553..0000000 --- a/boop/trunk/infrared/ir_codes/sirc/tv +++ /dev/null @@ -1,64 +0,0 @@ -/* - Infrared codes for Sony TV - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -// 12 bit commands (MSB = 0) - -{ - 0x0000, // A -> - 0x0000, // B -> - 0x0000, // C -> - 0x0000, // D -> - 0x0000, // Betty -> - 0x0000, // Exit -> - 0x0000, // Up -> - 0x0000, // Down -> - 0x0000, // Left -> - 0x0000, // Right -> - 0x0000, // OK -> - 0x0092, // Vol+ -> Vol+ - 0x0093, // Vol- -> Vol- - 0x0094, // Mute -> Mute - 0x0090, // Prog+ -> Prog+ - 0x0091, // Prog- -> Prog- - 0x0080, // 1 -> 1 - 0x0081, // 2 -> 2 - 0x0082, // 3 -> 3 - 0x0083, // 4 -> 4 - 0x0084, // 5 -> 5 - 0x0085, // 6 -> 6 - 0x0086, // 7 -> 7 - 0x0087, // 8 -> 8 - 0x0088, // 9 -> 9 - 0x0089, // 0 -> 0 - 0x009D, // -/-- -> -/-- - 0x00A5, // AV -> Ext - 0x0000, // Menu -> - 0x0000, // PiP -> - 0x0000, // A/B -> - 0x0000, // 16:9 -> - 0x0000, // Info -> - 0x00BF, // VTX1 -> Teletext - 0x0000, // VTX2 -> - 0x0000, // VTX3 -> - 0x0182, // Blue -> Blue - 0x0182, // Yellow -> Yellow - 0x0181, // Green -> Green - 0x0180, // Red -> Red - 0x00B8, // TV -> TV - 0x0095 // Power -> -}, diff --git a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 b/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 deleted file mode 100644 index 488e73d..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC schneider dtv3 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x00, // Exit -> - 0x00, // Up -> Chan+ Fast - 0x00, // Down -> Chan- Fast - 0x00, // Left -> Vol- Fast - 0x00, // Right -> Vol+ Fast - 0x00, // OK -> - 0x05, // Vol+ -> Vol+ - 0x06, // Vol- -> Vol- - 0x00, // Mute -> - 0x07, // Prog+ -> Chan+ - 0x08, // Prog- -> Chan-- - 0x00, // 1 -> - 0x00, // 2 -> - 0x00, // 3 -> - 0x00, // 4 -> - 0x00, // 5 -> - 0x00, // 6 -> - 0x00, // 7 -> - 0x00, // 8 -> - 0x00, // 9 -> - 0x00, // 0 -> - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x00, // A/B -> - 0x00, // 16:9 -> - 0x09, // Info -> White - 0x00, // VTX1 -> - 0x00, // VTX2 -> - 0x00, // VTX3 -> - 0x0A, // Blue -> Blue - 0x0B, // Yello -> Yellow - 0x0C, // Green -> Green - 0x0D, // Red -> Red - 0x00, // TV -> - 0x0E // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra b/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra deleted file mode 100644 index da11f31..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/schneider_dtv3_xtra +++ /dev/null @@ -1,55 +0,0 @@ -/* - infrared codes for SPACEENC schneider dtv3 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -const unsigned int dtv3_codes[15] = -{ - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - 0x0000003F, // Vol+ - 0x0008007E, // Vol- - 0x0000207F, // Chan+ - 0x000840FC, // Chan- - 0x90000027, // White - 0x2000004F, // Blue - 0x08000067, // Yellow - 0xC000000F, // Green - 0x8000001F, // Red - 0x30000087 // Power -}; - -const unsigned char dtv3_pre[15] = -{ - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0xFF, // Vol+ - 0x7F, // Vol- - 0xCF, // Chan+ - 0xCF, // Chan- - 0xFF, // White - 0xFF, // Blue - 0xFF, // Yellow - 0xFF, // Green - 0xFF, // Red - 0xFF // Power -}; diff --git a/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 b/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 deleted file mode 100644 index 08ec25e..0000000 --- a/boop/trunk/infrared/ir_codes/spaceenc/seleco_027 +++ /dev/null @@ -1,62 +0,0 @@ -/* - infrared codes for SPACEENC seleco 027 - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -{ - 0x00, // A -> - 0x00, // B -> - 0x00, // C -> - 0x00, // D -> - 0x00, // Betty -> - 0x00, // Exit -> - 0x1C, // Up -> Play - 0x1E, // Down -> Stop - 0x1A, // Left -> Rewind - 0x1B, // Right -> Forward - 0x07, // OK -> Enter - 0x01, // Vol+ -> Vol+ - 0x02, // Vol- -> Vol- - 0x05, // Mute -> Muting - 0x03, // Prog+ -> Prog+ - 0x04, // Prog- -> Prog- - 0x10, // 1 -> 1 - 0x11, // 2 -> 2 - 0x12, // 3 -> 3 - 0x13, // 4 -> 4 - 0x14, // 5 -> 5 - 0x15, // 6 -> 6 - 0x16, // 7 -> 7 - 0x17, // 8 -> 8 - 0x18, // 9 -> 9 - 0x19, // 0 -> 0 - 0x00, // -/-- -> - 0x00, // AV -> - 0x00, // Menu -> - 0x00, // PiP -> - 0x1F, // A/B -> A/B - 0x00, // 16:9 -> - 0x28, // Info -> Info - 0x3F, // VTX1 -> VTX1 - 0x0B, // VTX2 -> VTX3 - 0x0D, // VTX3 -> VTX4 - 0x00, // Blue -> - 0x00, // Yello -> - 0x00, // Green -> - 0x1D, // Red -> Pause - 0x00, // TV -> - 0x0E // Power -> Power -}, diff --git a/boop/trunk/infrared/ir_itt.c b/boop/trunk/infrared/ir_itt.c deleted file mode 100644 index 6294cc4..0000000 --- a/boop/trunk/infrared/ir_itt.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - ir_itt.c - itt protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_itt.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule ITT_Module = -{ - ITT_Encode, - ITT_Send, - ITT_Repeat, - ITT_Stop, - 103, // carrier - 2, // carrier-on - 3 // carrier-off -}; - -const struct irModule ITT2_Module = -{ - ITT_Encode, - ITT_Send, - ITT_Repeat, - ITT_Stop, - 111, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define ITT_IDLE 0x00 -#define ITT_LEADIN_A 0x01 -#define ITT_LEADIN_B 0x02 -#define ITT_START_A 0x03 -#define ITT_START_B 0x04 -#define ITT_BIT_A 0x05 -#define ITT_BIT_B 0x06 -#define ITT_LEADOUT_A 0x07 -#define ITT_LEADOUT_B 0x08 -#define ITT_STOP 0x09 -#define ITT_WAIT 0x0A - -#define ITT_LEADTIME 13 -#define ITT_BITTIME_0 4 -#define ITT_BITTIME_1 8 -#define ITT_WAITTIME 130 - -#define ITT2_LEADTIME 15 -#define ITT2_BITTIME_0 4 -#define ITT2_BITTIME_1 9 - -void __attribute__ ((section(".text.fastcode"))) ITT_Encode (void) -{ - switch(ir.state) - { - case ITT_IDLE: - mod_enable = 0; - break; - - case ITT_LEADIN_A: - case ITT_START_A: - case ITT_BIT_A: - case ITT_LEADOUT_A: - case ITT_STOP: - cycles = 1; - mod_enable = 1; - ir.state++; - break; - - case ITT_LEADIN_B: - case ITT_LEADOUT_B: - mod_enable = 0; - cycles = ir.general.leadtime; - ir.state++; - break; - - case ITT_START_B: - mod_enable = 0; - cycles = ir.general.bittime0; - ir.state++; - break; - - case ITT_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case ITT_WAIT: - mod_enable = 0; - cycles = 40; - ir.general.wait++; - if(ir.general.wait >= ITT_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = ITT_IDLE; - } - break; - } -} - -void ITT_LoadMap(unsigned char map) -{ - switch(map) - { - case 2: - ir.general.leadtime = ITT2_LEADTIME; - ir.general.bittime0 = ITT2_BITTIME_0; - ir.general.bittime1 = ITT2_BITTIME_1; - setIR(ITT2_Module); - break; - default: - ir.general.leadtime = ITT_LEADTIME; - ir.general.bittime0 = ITT_BITTIME_0; - ir.general.bittime1 = ITT_BITTIME_1; - setIR(ITT_Module); - break; - } -} - -void ITT_Init(unsigned char map) -{ - if(map < ITT.num_tables) - { - ir.state = ITT_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.numbits = 0x0A; - ir.general.wait = 0; - copyMapS((unsigned short*)ITT.table[map].codes); - ITT_LoadMap(map); - cycles = 1; - } -} - -void ITT_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(ITT_Module); - if(ir.actcmd != 0x0000) - { - if(ir.state == ITT_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void ITT_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == ITT_IDLE) - { - ir.cmd = ir.actcmd ^ 0x00f; - ir.state++; - runIR(); - } - } -} - -void ITT_Stop(void) -{ -/* -waitend1: - if(ir.state != ITT_IDLE) - goto waitend1; - - ir.state++; -*/ - if(ir.actcmd != 0x00000000) - { -waitend2: - if(ir.state != ITT_IDLE) - goto waitend2; - } - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_itt.h b/boop/trunk/infrared/ir_itt.h deleted file mode 100644 index b9faf4f..0000000 --- a/boop/trunk/infrared/ir_itt.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_itt.h - itt protocol ir encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_ITT_H -#define IR_ITT_H - -void ITT_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void ITT_Init(unsigned char map); -void ITT_Send(unsigned long cmd); -void ITT_Repeat(void); -void ITT_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_lirc.c b/boop/trunk/infrared/ir_lirc.c deleted file mode 100644 index 7e34d60..0000000 --- a/boop/trunk/infrared/ir_lirc.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - ir_lirc.c - lirc ir encoder - Copyright (C) 2009 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_lirc.h" -#include "encoders.h" -#include "codes.h" -#include "fonty.h" -#include "lcd.h" -#include "rf.h" -#include "cc1100.h" - -#include "global.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -/* -#define RAW_IDLE 0x00 -#define RAW_HI 0x01 -#define RAW_LO 0x02 -*/ - -#define LIRC_IDLE 0x00 -#define LIRC_HEAD_P 0x01 -#define LIRC_HEAD_S 0x02 -#define LIRC_LEAD_P 0x03 -#define LIRC_PRE_DAT_P 0x04 -#define LIRC_PRE_DAT_S 0x05 -#define LIRC_PRE_P 0x06 -#define LIRC_PRE_S 0x07 -#define LIRC_DATA_P 0x08 -#define LIRC_DATA_S 0x09 -#define LIRC_POST_P 0x0A -#define LIRC_POST_S 0x0B -#define LIRC_POST_DAT_P 0x0C -#define LIRC_POST_DAT_S 0x0D -#define LIRC_REPEAT_P 0x0E -#define LIRC_REPEAT_S 0x0F -#define LIRC_TRAIL_P 0x10 -#define LIRC_FOOT_S 0x11 -#define LIRC_FOOT_P 0x12 -#define LIRC_GAP 0x13 - -const struct irModule LIRC_Module = -{ - LIRC_Encode, - LIRC_Send, - LIRC_Repeat, - LIRC_Stop, - 136, // carrier - 1, // carrier-on - 3 // carrier-off -}; - - -unsigned char __attribute__ ((section(".text.fastcode"))) send_data (unsigned long data, unsigned char pulse) { - - const unsigned char* bittimes[4] = {&(ir.lirc.pzero), &(ir.lirc.pone), &(ir.lirc.ptwo), &(ir.lirc.pthree)}; - unsigned char notpulse = 1; - - if(pulse) { - pulse = 1; - notpulse = 0; - } - - if(is_rcmm) { - switch(data & 0xC0000000) { - case 0x00000000: - cycles = bittimes[0][notpulse]; - break; - case 0x40000000: - cycles = bittimes[1][notpulse]; - break; - case 0x80000000: - cycles = bittimes[2][notpulse]; - break; - case 0xC0000000: - cycles = bittimes[3][notpulse]; - break; - } - mod_enable = pulse; - if(!pulse) { - ir.lirc.bit +=2; - return(2); - } - return(0); - } - else if(is_biphase) { - if(data & 0x80000000) { - cycles = bittimes[1][pulse]; - mod_enable = notpulse; - } - else { - cycles = bittimes[0][notpulse]; - mod_enable = pulse; - } - if((ir.lirc.bit+1 == ir.lirc.rc6_bit)) - cycles <<= 1; - } - else { - if(data & 0x80000000) { - cycles = bittimes[1][notpulse]; - } - else { - cycles = bittimes[0][notpulse]; - } - mod_enable = pulse; - } - if(!pulse) { - ir.lirc.bit++; - return(1); - } - return(0); -} - -void __attribute__ ((section(".text.fastcode"))) LIRC_Encode (void) { - unsigned short gap; - - ir.lirc.cycles_counter += cycles; - - switch(ir.state) - { - case LIRC_IDLE: - cycles = ir.lirc.pone; - mod_enable = 0; - break; - case LIRC_HEAD_P: - ir.lirc.cycles_counter = 0; - if(has_header && (!ir.lirc.repeats || (!(ir.lirc.flags&LIRC_NO_HEAD_REP) && !has_repeat) || (ir.lirc.flags&LIRC_REPEAT_HEADER))) { // - mod_enable = 1; - cycles = ir.lirc.phead; - ir.state++; - break; - case LIRC_HEAD_S: - mod_enable = 0; - cycles = ir.lirc.shead; - ir.state++; - break; - } - ir.state = LIRC_LEAD_P; - case LIRC_LEAD_P: - if(ir.lirc.plead) { - mod_enable = 1; - cycles = ir.lirc.plead; - ir.state++; - break; - } - ir.state++; - case LIRC_PRE_DAT_P: - if(!has_repeat || !(ir.lirc.repeats)) { - if(ir.lirc.pre_data_bits) { - send_data(ir.lirc.pre_data,1); - ir.state++; - break; - case LIRC_PRE_DAT_S: - ir.lirc.pre_data <<= send_data(ir.lirc.pre_data,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits) - ir.state++; - else - ir.state--; - break; - case LIRC_PRE_P: - if(ir.lirc.pre_p && ir.lirc.pre_s) { - mod_enable = 1; - cycles = ir.lirc.pre_p; - ir.state++; - break; - case LIRC_PRE_S: - mod_enable = 0; - cycles = ir.lirc.pre_s; - ir.state++; - break; - } - } - ir.state = LIRC_DATA_P; - case LIRC_DATA_P: - send_data(ir.cmd,1); - ir.state++; - break; - case LIRC_DATA_S: - ir.cmd <<= send_data(ir.cmd,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits + ir.lirc.bits) - ir.state++; - else - ir.state--; - break; - case LIRC_POST_P: - if(ir.lirc.post_data_bits) { - if(ir.lirc.post_p && ir.lirc.post_s) { - mod_enable = 1; - cycles = ir.lirc.post_p; - ir.state++; - break; - case LIRC_POST_S: - mod_enable = 0; - cycles = ir.lirc.post_s; - ir.state++; - break; - } - ir.state = LIRC_POST_DAT_P; - case LIRC_POST_DAT_P: - send_data(ir.lirc.post_data,1); - ir.state++; - break; - case LIRC_POST_DAT_S: - ir.lirc.post_data <<= send_data(ir.lirc.post_data,0); - if(ir.lirc.bit >= ir.lirc.pre_data_bits + ir.lirc.bits +ir.lirc.post_data_bits) - ir.state = LIRC_TRAIL_P; - else - ir.state--; - break; - } - } - ir.state = LIRC_REPEAT_P; - case LIRC_REPEAT_P: - if(has_repeat && ir.lirc.repeats) { - mod_enable = 1; - cycles = ir.lirc.prepeat; - ir.state++; - break; - case LIRC_REPEAT_S: - mod_enable = 0; - cycles = ir.lirc.srepeat; - ir.state++; - break; - } - ir.state = LIRC_TRAIL_P; - case LIRC_TRAIL_P: - if(ir.lirc.ptrail) { - mod_enable = 1; - cycles = ir.lirc.ptrail; - ir.state++; - break; - } - ir.state++; - case LIRC_FOOT_S: - if(has_foot && (!ir.lirc.repeats || !(ir.lirc.flags&LIRC_NO_FOOT_REP)) && (!has_repeat || !ir.lirc.repeats)) { - mod_enable = 0; - cycles = ir.lirc.sfoot; - ir.state++; - break; - case LIRC_FOOT_P: - mod_enable = 1; - cycles = ir.lirc.pfoot; - ir.state++; - break; - } - case LIRC_GAP: - default: - mod_enable = 0; - ir.lirc.bit = 0; - ir.cmd = ir.actcmd; - ir.lirc.pre_data = ir.lirc.actpre_data; - ir.lirc.post_data = ir.lirc.actpost_data; - - if((ir.lirc.repeat_gap && has_repeat && ir.lirc.repeats) | (is_RF && (ir.lirc.repeats >= ir.lirc.min_repeat))) - gap = ir.lirc.repeat_gap; - else - gap = ir.lirc.gap; - - if(is_const && (ir.lirc.cycles_counter < gap)) - cycles = gap - ir.lirc.cycles_counter; - else - cycles = gap; - - if((ir.lirc.repeats >= ir.lirc.min_repeat) && ir.lirc.stop) { - ir.state = LIRC_IDLE; - } - else { - if(ir.lirc.repeats < 0xff) - ir.lirc.repeats++; - ir.state = LIRC_HEAD_P; - } - } -} - -void LIRC_Init(unsigned char map) -{ - unsigned long freq; - struct CODE_TABLE_L *lirctable; - - if(map < LIRC.num_tables) { - - lirctable = (struct CODE_TABLE_L*)&(LIRC.table[map]); - - copyMapI((unsigned int*)LIRC.table[map].codes); - setIR(LIRC_Module); - - if(lirctable->flags&LIRC_RF) { - hi_border = 0; - lo_border = 1; - freq = 20000; - } - else { - freq = lirctable->freq; - if(!freq) - freq = 38000; - - if(lirctable->duty_cycle == 0) { //default 50% - hi_border = 1; - lo_border = 2; - } - else if(lirctable->duty_cycle <= 25) { - hi_border = 1; - lo_border = 4; - } - else if(lirctable->duty_cycle <= 33) { - hi_border = 1; - lo_border = 3; - } - else if(lirctable->duty_cycle <= 50) { - hi_border = 1; - lo_border = 2; - } - else if(lirctable->duty_cycle <= 66) { - hi_border = 2; - lo_border = 3; - } - else { //75% - hi_border = 3; - lo_border = 4; - } - } - - T1MR0 = 15000000 / (freq * lo_border); - - - ir.lirc.phead = (lirctable->phead * freq) / 1000000; - ir.lirc.shead = (lirctable->shead * freq) / 1000000; - - ir.lirc.plead = (lirctable->plead * freq) / 1000000; - - ir.lirc.actpre_data = (lirctable->pre_data)<<(32-lirctable->pre_data_bits); - ir.lirc.pre_data_bits = lirctable->pre_data_bits; - ir.lirc.pre_p = (lirctable->pre_p * freq) / 1000000; - ir.lirc.pre_s = (lirctable->pre_s * freq) / 1000000; - - ir.lirc.post_p = (lirctable->post_p * freq) / 1000000; - ir.lirc.post_s = (lirctable->post_s * freq) / 1000000; - ir.lirc.actpost_data = (lirctable->post_data)<<(32-lirctable->post_data_bits); - ir.lirc.post_data_bits = lirctable->post_data_bits; - - ir.lirc.ptrail = (lirctable->ptrail * freq) / 1000000; - - ir.lirc.pfoot = (lirctable->pfoot * freq) / 1000000; - ir.lirc.sfoot = (lirctable->sfoot * freq) / 1000000; - - ir.lirc.prepeat = (lirctable->prepeat * freq) / 1000000; - ir.lirc.srepeat = (lirctable->srepeat * freq) / 1000000; - - ir.lirc.pzero = (lirctable->pzero * freq) / 1000000; - ir.lirc.szero = (lirctable->szero * freq) / 1000000; - ir.lirc.pone = (lirctable->pone * freq) / 1000000; - ir.lirc.sone = (lirctable->sone * freq) / 1000000; - ir.lirc.ptwo = (lirctable->ptwo * freq) / 1000000; - ir.lirc.stwo = (lirctable->stwo * freq) / 1000000; - ir.lirc.pthree = (lirctable->pthree * freq) / 1000000; - ir.lirc.sthree = (lirctable->sthree * freq) / 1000000; - - ir.lirc.gap = (lirctable->gap * freq) / 1000000; - ir.lirc.repeat_gap = (lirctable->repeat_gap * freq) / 1000000; - - ir.lirc.rc6_bit = lirctable->rc6_bit; - ir.lirc.flags = lirctable->flags; - ir.lirc.bits = lirctable->bits; - ir.lirc.min_repeat = lirctable->min_repeat; - - ir.cmd = 0; - ir.actcmd = 0; - ir.lirc.stop = 0; - ir.state = LIRC_IDLE; - ir.lirc.bit = 0; - ir.lirc.map = map; - - } -} - -void LIRC_Send(unsigned long cmd) -{ - unsigned long togglemask; - if(cmd != 0x0000) { - - ir.lirc.pre_data = ir.lirc.actpre_data; - ir.actcmd = cmd<<(32-ir.lirc.bits); - ir.lirc.post_data = ir.lirc.actpost_data; - ir.lirc.stop = 0; - ir.lirc.repeats = 0; - - if(ir.toggle & 0x01) { - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask) << (32-ir.lirc.post_data_bits); - ir.lirc.post_data ^= togglemask; - - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask>>ir.lirc.post_data_bits) << (32-ir.lirc.bits); - ir.actcmd ^= togglemask; - - togglemask = (unsigned long)(LIRC.table[ir.lirc.map].toggle_bit_mask>>(ir.lirc.post_data_bits + ir.lirc.bits)) << (32-ir.lirc.pre_data_bits); - ir.lirc.pre_data ^= togglemask; - } - - if(ir.state == LIRC_IDLE) { - ir.cmd = ir.actcmd; - ir.lirc.bit = 0; - ir.state++; - if(is_RF) { - RFasyncmode(true); - cc1100_write1(FREQ2,((LIRC.table[ir.lirc.map].freq)>>16) & 0xFF); - cc1100_write1(FREQ1,((LIRC.table[ir.lirc.map].freq)>>8) & 0xFF); - cc1100_write1(FREQ0,(LIRC.table[ir.lirc.map].freq) & 0xFF); - cc1100_strobe(STX); - } - runIR(); - } - } -} - -void LIRC_Repeat(void) { - -} - -void LIRC_Stop(void) -{ - ir.lirc.stop = 1; - if(ir.lirc.bits){ - while(ir.state != LIRC_IDLE); - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); - if(is_RF) { - RFasyncmode(false); - } -} diff --git a/boop/trunk/infrared/ir_lirc.h b/boop/trunk/infrared/ir_lirc.h deleted file mode 100644 index 2154aa9..0000000 --- a/boop/trunk/infrared/ir_lirc.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - ir_lirc.h - lirc ir encoder - Copyright (C) 2009 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_LIRC_H -#define IR_LIRC_H - - -#define LIRC_RC5 0x0002 /* IR data follows RC5 protocol */ -#define LIRC_SHIFT_ENC LIRC_RC5 /* IR data is shift encoded (name obsolete) */ -#define LIRC_RC6 0x0004 /* IR data follows RC6 protocol */ -#define LIRC_RCMM 0x0008 /* IR data follows RC-MM protocol */ -#define LIRC_SPACE_ENC 0x0010 /* IR data is space encoded */ -//#define LIRC_SPACE_FIRST 0x0020 /* bits are encoded as space+pulse */ -//#define LIRC_GOLDSTAR 0x0040 /* encoding found on Goldstar remote */ -//#define LIRC_GRUNDIG 0x0080 /* encoding found on Grundig remote */ -//#define LIRC_BO 0x0100 /* encoding found on Bang & Olufsen remote */ -#define LIRC_RF 0x0100 /* RF ASK/OOK modulator */ -//#define LIRC_SERIAL 0x0200 /* serial protocol */ -//#define LIRC_XMP 0x0400 /* XMP protocol */ - -/* additinal flags: can be orred together with protocol flag */ -//#define REVERSE 0x0800 -#define LIRC_NO_HEAD_REP 0x1000 /* no header for key repeats */ -#define LIRC_NO_FOOT_REP 0x2000 /* no foot for key repeats */ -#define LIRC_CONST_LENGTH 0x4000 /* signal length+gap is always constant */ -#define LIRC_REPEAT_HEADER 0x8000 /* header is also sent before repeat code */ - -#define is_rc6 (ir.lirc.flags & LIRC_RC6) -#define is_biphase ((ir.lirc.flags & LIRC_RC5) || is_rc6) -#define is_rcmm (ir.lirc.flags & LIRC_RCMM) -#define is_const (ir.lirc.flags & LIRC_CONST_LENGTH) -#define is_RF (ir.lirc.flags & LIRC_RF) -#define has_header (ir.lirc.phead && ir.lirc.shead) -#define has_foot (ir.lirc.pfoot && ir.lirc.sfoot) -#define has_repeat (ir.lirc.prepeat && ir.lirc.srepeat) - -//FS20 Protocol description see http://fhz4linux.info/tiki-index.php?page=FS20%20Protocol -#define calcFS20pre(HC1,par1,HC2,par2) ((1<<18) | (HC1<<10) | (par1<<9) | (HC2<<1) | par2) -#define calcFS20code(Adr,parAdr,Cmd,parCmd,Chk,parChk) ((Adr<<19) | (parAdr<<18) | (Cmd<<10) | (parCmd<<9) | (Chk<<1) | parChk) - -void LIRC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void LIRC_Init(unsigned char map); -void LIRC_Send(unsigned long cmd); -void LIRC_Repeat(void); -void LIRC_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_nrc17.c b/boop/trunk/infrared/ir_nrc17.c deleted file mode 100644 index afbe81f..0000000 --- a/boop/trunk/infrared/ir_nrc17.c +++ /dev/null @@ -1,211 +0,0 @@ -/* - ir_nrc17.c - nokia remote control 17 encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_nrc17.h" -#include "encoders.h" -#include "codes.h" - -#define NRC17_IDLE 0x00 -#define NRC17_PRE_A 0x01 -#define NRC17_PRE_B 0x02 -#define NRC17_START_A 0x03 -#define NRC17_START_B 0x04 -#define NRC17_BIT_A 0x05 -#define NRC17_BIT_B 0x06 -#define NRC17_WAIT 0x07 - -#define NRC17_BONTIME 19 -#define NRC17_BOFFTIME 19 -#define NRC17_PTIME 95 -#define NRC17_GTIME 156 -#define NRC17_WTIME 38 - -#define NRC17_STARTSTOP_DBOX2 0xFEFF -#define NRC17_STARTSTOP_TP720 0x01FF - -const struct irModule NRC17_Module = -{ - NRC17_Encode, - NRC17_Send, - NRC17_Repeat, - NRC17_Stop, - 132, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -void __attribute__ ((section(".text.fastcode"))) NRC17_Encode(void) -{ - switch(ir.state) - { - case NRC17_IDLE: - mod_enable = 0; - break; - - case NRC17_PRE_A: - case NRC17_START_A: - cycles = NRC17_BONTIME; // 0.5 ms - mod_enable = 1; - ir.state++; - break; - - case NRC17_PRE_B: - case NRC17_START_B: - if(ir.state == NRC17_PRE_B) - cycles = NRC17_PTIME; // 2,5 ms - else - cycles = NRC17_BOFFTIME; // 0.5 ms - mod_enable = 0; - ir.state++; - break; - - case NRC17_BIT_A: - if(ir.cmd & 0x0001) - mod_enable = 1; - else - mod_enable = 0; - ir.cmd >>= 1; - ir.state++; - break; - - case NRC17_BIT_B: - if(mod_enable == 1) - mod_enable = 0; - else - mod_enable = 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case NRC17_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = NRC17_BONTIME; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = NRC17_PTIME; - ir.state = NRC17_IDLE; - } - break; - - } -} -/* -void NRC17_CopyMap(unsigned char xtra, unsigned short *map) -{ - int x; - for(x=0;x<42;x++) - { - keyMap[x] = map[x]; - } -}*/ - -void NRC17_LoadMap(unsigned char map) -{ - switch(map) - { - case 1: // tp720 - tv, 9 bit data - ir.general.startstop = NRC17_STARTSTOP_TP720; - ir.general.numbits = 9; - break; - default: // nokia dbox2, 16 bit data - ir.general.startstop = NRC17_STARTSTOP_DBOX2; - ir.general.numbits = 16; - break; - } - -} - -void NRC17_Init(unsigned char map) -{ - if(map < NRC17.num_tables) - { - ir.state = NRC17_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.numbits = 16; - ir.general.wait = 0; - ir.general.pause = NRC17_BONTIME; - copyMapS((unsigned short*)NRC17.table[map].codes); - NRC17_LoadMap(map); - setIR(NRC17_Module); - } -} - -void NRC17_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x0000) - { - setIRspeed(NRC17_Module); - if(ir.state == NRC17_IDLE) - { - ir.general.pause = NRC17_WTIME; - ir.cmd = ir.general.startstop; - ir.state++; - runIR(); - } - } -} - -void NRC17_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == NRC17_IDLE) - { - ir.general.pause = NRC17_GTIME; - ir.cmd = ir.actcmd; - ir.state++; - } - } -} - -void NRC17_Stop(void) -{ - if(ir.actcmd != 0x0000) - { -retry: - if(ir.state == NRC17_IDLE) - { - ir.cmd = ir.general.startstop; - ir.state++; - } - else - goto retry; - -waitend: - if(ir.state != NRC17_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - stopIR(); -} - diff --git a/boop/trunk/infrared/ir_nrc17.h b/boop/trunk/infrared/ir_nrc17.h deleted file mode 100644 index 73cf199..0000000 --- a/boop/trunk/infrared/ir_nrc17.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_nrc17.h - nokia remote control 17 encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_NRC17_H -#define IR_NRC17_H - -void NRC17_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void NRC17_Init(unsigned char map); -void NRC17_Send(unsigned long cmd); -void NRC17_Repeat(void); -void NRC17_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_raw.c b/boop/trunk/infrared/ir_raw.c deleted file mode 100644 index 726ade8..0000000 --- a/boop/trunk/infrared/ir_raw.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - ir_raw.c - raw ir encoder - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_raw.h" -#include "encoders.h" -#include "codes.h" -#include "ir_capture.h" -#include "fonty.h" -#include "lcd.h" - -#include "global.h" -#include "bfs.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -struct RAWcmd_* RAWcmd; - -#define RAW_IDLE 0x00 -#define RAW_HI 0x01 -#define RAW_LO 0x02 - -const struct irModule RAW_Module = -{ - RAW_Encode, - RAW_Send, - RAW_Repeat, - RAW_Stop, - 91, // carrier - 1, // carrier-on - 3, // carrier-off -}; - -void __attribute__ ((section(".text.fastcode"))) RAW_Encode (void) -{ - - switch(ir.state) - { unsigned char* x; - - case RAW_IDLE: - mod_enable = 0; - break; - - case RAW_HI: - mod_enable = 1; - - x=(unsigned char*)&(RAWcmd->pulselen[(RAWcmd->data[RAWcmd->CMDstart[ir.actcmd]+ir.general.bit])>>4]); - cycles = x[0] + (x[1]<<8); - ir.state++; - break; - - case RAW_LO: - mod_enable = 0; - x=(unsigned char*)&(RAWcmd->pulselen[(RAWcmd->data[RAWcmd->CMDstart[ir.actcmd]+ir.general.bit])&0x0f]); - cycles = x[0] + (x[1]<<8); - ir.general.bit++; - if (ir.general.bit >= RAWcmd->CMDlen[ir.actcmd]) { - ir.general.bit = 0; - if (ir.general.trail) { - ir.state = RAW_HI; - ir.actcmd = 1; - } - else - ir.state = RAW_IDLE; - } - else - ir.state--; - break; - - - } -} - -void RAW_Init(unsigned char map) -{ - if(map < RAW.num_tables) - { - struct RAWset_ *RAWset; - unsigned long RAWcmdbase; - - int x; - for(x=0;x<42;x++) { - keyMap[x] = (unsigned long)&ir.cmd; - } - ir.actcmd = 0; - ir.general.bit = 0; - ir.state = RAW_IDLE; - setIR(RAW_Module); - ir.cmd = 0xff; - - RAWcmdbase = (unsigned long)BFS_LoadFileAddr(BFS_ID_RAWslot0 + map); - if(!RAWcmdbase) - return; - - RAWset = (struct RAWset_ *)RAWcmdbase; - - x = memcmp(RAWset,"RC01",4); - if(x == 0) { - for(x=0;x<38;x++) { - keyMap[x+4] = (unsigned long)&RAWset->RAWcmd[x]; - } - } - - } -} - -void RAW_Send(unsigned long cmd) -{ - RAWcmd = (struct RAWcmd_*)cmd; - ir.actcmd = RAWcmd->tval; - if(RAWcmd->tval != 0xff) { - setIR(RAW_Module); - T1MR0 = RAWcmd->tval; - hi_border = (RAWcmd->borders)>>4; - lo_border = (RAWcmd->borders)&0x0f; - ir.actcmd = 0; - ir.general.trail = 0x01; - sysInfo |= SYS_IR; - if(ir.state == RAW_IDLE) - { - ir.general.bit = 0; - ir.state++; - runIR(); - } - } -} - -void RAW_Repeat(void) -{ - -} - -void RAW_Stop(void) -{ - if(RAWcmd->tval != 0xff) { - ir.general.trail = 0; - while(ir.state != RAW_IDLE); - ir.actcmd = 2; - if(RAWcmd->CMDstart[1] != RAWcmd->CMDstart[2]) - ir.state++; - - while(ir.state != RAW_IDLE); - stopIR(); - sysInfo &= ~SYS_IR; - } -} diff --git a/boop/trunk/infrared/ir_raw.h b/boop/trunk/infrared/ir_raw.h deleted file mode 100644 index 35a0ad1..0000000 --- a/boop/trunk/infrared/ir_raw.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_raw.h - raw ir encoder - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RAW_H -#define IR_RAW_H - -void RAW_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RAW_Init(unsigned char map); -void RAW_Send(unsigned long cmd); -void RAW_Repeat(void); -void RAW_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rc5.c b/boop/trunk/infrared/ir_rc5.c deleted file mode 100644 index 8c6c6c1..0000000 --- a/boop/trunk/infrared/ir_rc5.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - ir_rc5.c - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rc5.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RC5_Module = -{ - RC5_Encode, - RC5_Send, - RC5_Repeat, - RC5_Stop, - 139, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RC5_IDLE 0x00 -#define RC5_START_A 0x01 -#define RC5_START_B 0x02 -#define RC5_BIT_A 0x03 -#define RC5_BIT_B 0x04 -#define RC5_WAIT 0x05 - - -#define RC5_BITTIME 32 -#define RC5_WAITTIME 100 - -void __attribute__ ((section(".text.fastcode"))) RC5_Encode (void) -{ - switch(ir.state) - { - case RC5_IDLE: - mod_enable = 0; - break; - - case RC5_START_A: - mod_enable = 0; - ir.state++; - break; - - case RC5_START_B: - mod_enable = 1; - ir.state++; - break; - - case RC5_BIT_A: - if(ir.cmd & 0x1000) - mod_enable = 0; - else - mod_enable = 1; - ir.cmd <<= 1; - ir.state++; - break; - - case RC5_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.bit++; - if(ir.general.bit == 13) - ir.state++; - else - ir.state--; - break; - - case RC5_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= RC5_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = RC5_IDLE; - } - break; - } -} - -void RC5_Init(unsigned char map) -{ - if(map < RC5.num_tables) - { - ir.state = RC5_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - copyMapS((unsigned short*)RC5.table[map].codes); - setIR(RC5_Module); - cycles = RC5_BITTIME; - } -} - -void RC5_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(RC5_Module); - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { - //toggle bit sollte nicht über dir Konfiguration gesetzt werden - if(ir.toggle & 0x01) - ir.actcmd &= 0xF7FF; - else - ir.actcmd |= 0x0800; - RC5_Repeat(); - } -} - -void RC5_Repeat(void) -{ - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { - if(ir.state == RC5_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RC5_Stop(void) -{ - if((ir.actcmd != 0x0000) && (ir.actcmd != 0x1000)) - { -waitend: - if(ir.state != RC5_IDLE) - goto waitend; - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rc5.h b/boop/trunk/infrared/ir_rc5.h deleted file mode 100644 index 7f199ff..0000000 --- a/boop/trunk/infrared/ir_rc5.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rc5.h - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RC5_H -#define IR_RC5_H - -void RC5_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RC5_Init(unsigned char map); -void RC5_Send(unsigned long cmd); -void RC5_Repeat(void); -void RC5_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rc6.c b/boop/trunk/infrared/ir_rc6.c deleted file mode 100644 index d42b43a..0000000 --- a/boop/trunk/infrared/ir_rc6.c +++ /dev/null @@ -1,224 +0,0 @@ -/* - ir_rc6.c - phillips rc6 protocoll encoder - Copyright (C) 2008 p.c.squirrel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rc6.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RC6_Module = -{ - RC6_Encode, - RC6_Send, - RC6_Repeat, - RC6_Stop, - 136, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RC6_IDLE 0x00 -#define RC6_LEADER_A 0x01 -#define RC6_LEADER_B 0x02 -#define RC6_HEADER_BIT_A 0x03 -#define RC6_HEADER_BIT_B 0x04 -#define RC6_TRAILER_BIT_A 0x05 -#define RC6_TRAILER_BIT_B 0x06 -#define RC6_BIT_A 0x07 -#define RC6_BIT_B 0x08 -#define RC6_WAIT 0x09 - - -#define RC6_BITTIME 16 -#define RC6_WAITTIME_M0 188 //~80 ms -#define RC6_WAITTIME_M6 155 - -void __attribute__ ((section(".text.fastcode"))) RC6_Encode (void) -{ - cycles = RC6_BITTIME; //? - switch(ir.state) - { - case RC6_IDLE: - mod_enable = 0; - break; - - case RC6_LEADER_A: - mod_enable = 1; - cycles = RC6_BITTIME*6; - ir.state++; - break; - - case RC6_LEADER_B: - mod_enable = 0; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_HEADER_BIT_A: - if(ir.general.header_cmd & 0x8) //0b1000 4. bit SB, mb2, mb1, mb0 - mod_enable = 1; - else - mod_enable = 0; - ir.general.header_cmd <<= 1; - cycles = RC6_BITTIME; - ir.state++; - break; - - case RC6_HEADER_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.header_bit++; - cycles = RC6_BITTIME; - if(ir.general.header_bit == 4) - ir.state++; - else - ir.state--; - break; - - case RC6_TRAILER_BIT_A: - if(ir.general.trail) - mod_enable = 1; - else - mod_enable = 0; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_TRAILER_BIT_B: - if(ir.general.trail) - mod_enable = 0; - else - mod_enable = 1; - cycles = RC6_BITTIME*2; - ir.state++; - break; - - case RC6_BIT_A: - if(ir.cmd & 0x80000000) - mod_enable = 1; - else - mod_enable = 0; - ir.cmd <<= 1; - ir.state++; - break; - - case RC6_BIT_B: - if(mod_enable == 0) - mod_enable = 1; - else - mod_enable = 0; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case RC6_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= ir.general.waittime) - { - ir.general.bit = 0; - ir.general.header_bit = 0; - ir.general.wait = 0; - ir.state = RC6_IDLE; - } - break; - } -} - -void RC6_Init(unsigned char map) -{ - if(map < RC6.num_tables) - { - ir.state = RC6_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.wait = 0; - ir.general.bit = 0; - copyMapI((unsigned int*)RC6.table[map].codes); - setIR(RC6_Module); - cycles = RC6_BITTIME; - } -} - -void RC6_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - setIRspeed(RC6_Module); - -// if(ir.general.toggle & 0x01) - // ir.actcmd &= 0xF7FF; - RC6_Repeat(); -} - -void RC6_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == RC6_IDLE) - { - ir.cmd = ir.actcmd; - if(ir.cmd > 0xffff) { - if(ir.toggle & 0x01) - ir.cmd &= 0xFFFF7FFF; - else - ir.cmd |= 0x00008000; - ir.general.numbits = 32; - ir.general.header_cmd = 0x0E; //0b1110 ->Mode 6; - ir.general.trail = 0; - ir.general.waittime = RC6_WAITTIME_M6; - } - else { - ir.cmd <<=16; - ir.general.numbits = 16; - ir.general.header_cmd = 0x08; //0b1000 ->Mode 0; - ir.general.trail = ir.toggle & 0x01; - ir.general.waittime = RC6_WAITTIME_M0; - } - ir.general.header_bit = 0; - ir.state++; - runIR(); - } - } -} - -void RC6_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RC6_IDLE) - goto waitend; - } - - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rc6.h b/boop/trunk/infrared/ir_rc6.h deleted file mode 100644 index 1347e6f..0000000 --- a/boop/trunk/infrared/ir_rc6.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rc6.h - phillips rc6 protocoll encoder - Copyright (C) 2008 p.c.squirrel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RC6_H -#define IR_RC6_H - -void RC6_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RC6_Init(unsigned char map); -void RC6_Send(unsigned long cmd); -void RC6_Repeat(void); -void RC6_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rca.c b/boop/trunk/infrared/ir_rca.c deleted file mode 100644 index 84e95d5..0000000 --- a/boop/trunk/infrared/ir_rca.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - ir_rca.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rca.h" -#include "encoders.h" -#include "codes.h" -#include "global.h" - -const struct irModule RCA_Module = -{ - RCA_Encode, - RCA_Send, - RCA_Repeat, - RCA_Stop, - 134, // carrier - 1, // carrier-on - 2 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RCA_IDLE 0x00 -#define RCA_PRE_A 0x01 -#define RCA_PRE_B 0x02 -#define RCA_BIT_A 0x03 -#define RCA_BIT_B 0x04 -#define RCA_IBIT_A 0x05 -#define RCA_IBIT_B 0x06 -#define RCA_STOP 0x07 -#define RCA_WAIT 0x08 - -#define RCA_NUMBITS 12 -#define RCA_BITTIME 28 -#define RCA_BIT0 2*RCA_BITTIME -#define RCA_BIT1 4*RCA_BITTIME -#define RCA_PRETIME 8*RCA_BITTIME -#define RCA_WAITTIME 16 - -void __attribute__ ((section(".text.fastcode"))) RCA_Encode (void) -{ - switch(ir.state) - { - case RCA_IDLE: - mod_enable = 0; - break; - - case RCA_PRE_A: - cycles = RCA_PRETIME; - mod_enable = 1; - ir.state++; - break; - - case RCA_PRE_B: - mod_enable = 0; - ir.cmd = ir.actcmd; - ir.state++; - break; - - case RCA_BIT_A: - case RCA_IBIT_A: - case RCA_STOP: - cycles = RCA_BITTIME; - mod_enable = 1; - ir.state++; - break; - - case RCA_BIT_B: - case RCA_IBIT_B: - mod_enable = 0; - if(ir.cmd & 0x0800) - cycles = RCA_BIT1; - else - cycles = RCA_BIT0; - ir.cmd <<= 1; - ir.general.bit++; - if(ir.general.bit == RCA_NUMBITS) - { - if(ir.state == RCA_BIT_B) - { - ir.cmd = ~ir.actcmd; - ir.general.bit = 0; - } - ir.state++; - } - else - ir.state--; - break; - - case RCA_WAIT: - mod_enable = 0; - cycles = RCA_BITTIME; - ir.general.wait++; - if(ir.general.wait >= RCA_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - if (ir.general.trail) - ir.state = RCA_PRE_A; - else - ir.state = RCA_IDLE; - } - break; - } -} - -void RCA_LoadMap(unsigned char map) -{ - switch(map) - { - default: - copyMapPC(0x0500, (unsigned char*)RCA.table[map].codes); - break; - } -} -void RCA_Init(unsigned char map) -{ - if(map < RCA.num_tables) - { - ir.state = RCA_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - RCA_LoadMap(map); - setIR(RCA_Module); - cycles = RCA_BITTIME; - } -} - -void RCA_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x0000) { - setIRspeed(RCA_Module); - ir.general.trail = 0x01; - sysInfo |= SYS_IR; - if (ir.state != RCA_IDLE) - while(ir.state != RCA_IDLE); - ir.state = RCA_PRE_A; - runIR(); - } -} - -void RCA_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - - if(ir.state == RCA_IDLE) - { - //ir.state++; - //runIR(); - } - } -} - -void RCA_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { - ir.general.trail = 0; - sysInfo &= ~SYS_IR; -waitend: - if(ir.state != RCA_IDLE) - goto waitend; - } - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rca.h b/boop/trunk/infrared/ir_rca.h deleted file mode 100644 index 19738c8..0000000 --- a/boop/trunk/infrared/ir_rca.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rca.h - rca protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RCA_H -#define IR_RCA_H - -void RCA_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RCA_Init(unsigned char map); -void RCA_Send(unsigned long cmd); -void RCA_Repeat(void); -void RCA_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rcmm.c b/boop/trunk/infrared/ir_rcmm.c deleted file mode 100644 index 2424391..0000000 --- a/boop/trunk/infrared/ir_rcmm.c +++ /dev/null @@ -1,197 +0,0 @@ -/* - ir_rcmm.c - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rcmm.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RCMM_Module = -{ - RCMM_Encode, - RCMM_Send, - RCMM_Repeat, - RCMM_Stop, - 139, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RCMM_IDLE 0x00 -#define RCMM_HEADER_A 0x01 -#define RCMM_HEADER_B 0x02 -#define RCMM_BIT_A 0x03 -#define RCMM_BIT_B 0x04 -#define RCMM_TRAIL 0x05 -#define RCMM_WAIT 0x06 - -#define RCMM_HEADER_ON 15 -#define RCMM_HEADER_OFF 10 -#define RCMM_BIT_ON 6 -#define RCMM_BIT_00 10 -#define RCMM_BIT_01 16 -#define RCMM_BIT_10 22 -#define RCMM_BIT_11 28 -#define RCMM_PTIME 110; - -const unsigned char ir_times[4] = { RCMM_BIT_00, RCMM_BIT_01, RCMM_BIT_10, RCMM_BIT_11 }; - -void __attribute__ ((section(".text.fastcode"))) RCMM_Encode (void) -{ - switch(ir.state) - { - case RCMM_IDLE: - mod_enable = 0; - break; - - case RCMM_HEADER_A: - case RCMM_BIT_A: - mod_enable = 1; - if(ir.state == RCMM_HEADER_A) - cycles = RCMM_HEADER_ON; - else - cycles = RCMM_BIT_ON; - ir.state++; - break; - - case RCMM_HEADER_B: - mod_enable = 0; - cycles = RCMM_HEADER_OFF; - ir.state++; - break; - - case RCMM_BIT_B: - mod_enable = 0; - cycles = ir_times[(ir.cmd & 0xC0000000) >> 30]; - ir.cmd <<= 2; - ir.general.bit += 2; - if(ir.general.bit == ir.general.len) - ir.state++; - else - ir.state--; - break; - - case RCMM_TRAIL: - if(ir.general.trail) - { - mod_enable = 1; - cycles = RCMM_BIT_ON; - } - else - cycles = 1; - ir.state++; - break; - - case RCMM_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = RCMM_BIT_ON; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = RCMM_PTIME; - ir.state = RCMM_IDLE; - } - break; - - - } -} - -void RCMM_LoadMap(unsigned char map) -{ - copyMapI((unsigned int*)RCMM.table[map].codes); - - switch(map) - { - case 1: - ir.general.len = 32; - ir.general.trail = 1; - ir.general.togglebit = 16; - break; - default: - ir.general.len = 32; - ir.general.trail = 1; - ir.general.togglebit = 0; - break; - } -} - -void RCMM_Init(unsigned char map) -{ - if(map < RCMM.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.state = RCMM_IDLE; - ir.general.bit = 0; - ir.general.wait = 0; - ir.general.pause = RCMM_PTIME; - RCMM_LoadMap(map); - setIR(RCMM_Module); - } -} - -void RCMM_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - if(ir.actcmd != 0x00000000) { - if(ir.general.togglebit) { - if(ir.toggle & 0x01) - ir.actcmd &= ~(1<<(ir.general.togglebit-1)); - else - ir.actcmd |= 1<<(ir.general.togglebit-1); - } - setIRspeed(RCMM_Module); - RCMM_Repeat(); - } -} - -void RCMM_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == RCMM_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RCMM_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RCMM_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - ir.toggle++; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rcmm.h b/boop/trunk/infrared/ir_rcmm.h deleted file mode 100644 index b71dec4..0000000 --- a/boop/trunk/infrared/ir_rcmm.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rcmm.h - phillips rc5 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RCMM_H -#define IR_RCMM_H - -void RCMM_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RCMM_Init(unsigned char map); -void RCMM_Send(unsigned long cmd); -void RCMM_Repeat(void); -void RCMM_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rec80.c b/boop/trunk/infrared/ir_rec80.c deleted file mode 100644 index 6f4f8b1..0000000 --- a/boop/trunk/infrared/ir_rec80.c +++ /dev/null @@ -1,186 +0,0 @@ -/* - ir_rec80.c - nec rec80 and derivates ir encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rec80.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule REC80_Module = -{ - REC80_Encode, - REC80_Send, - REC80_Repeat, - REC80_Stop, - 151, // carrier - 1, // carrier-on - 3 // carrier-off -}; - - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define REC80_IDLE 0x00 -#define REC80_HEAD_A 0x01 -#define REC80_HEAD_B 0x02 -#define REC80_PRE_A 0x03 -#define REC80_PRE_B 0x04 -#define REC80_BIT_A 0x05 -#define REC80_BIT_B 0x06 -#define REC80_TRAIL 0x07 -#define REC80_WAIT 0x08 - -#define REC80_HEADER_1 128 -#define REC80_HEADER_0 51 -#define REC80_BONTIME 13 -#define REC80_BITTIME_0 13 -#define REC80_BITTIME_1 38 -#define REC80_WAITTIME 187 - -void __attribute__ ((section(".text.fastcode"))) REC80_Encode (void) -{ - switch(ir.state) - { - case REC80_IDLE: - mod_enable = 0; - break; - - case REC80_HEAD_B: - mod_enable = 0; - cycles = REC80_HEADER_0; - ir.cmd = ir.general.preamble; - ir.general.bit = 0; - ir.state++; - break; - - case REC80_HEAD_A: - case REC80_PRE_A: - case REC80_BIT_A: - case REC80_TRAIL: - mod_enable = 1; - if(ir.state == REC80_HEAD_A) - cycles = REC80_HEADER_1; - else - cycles = REC80_BONTIME; - ir.state++; - break; - - case REC80_PRE_B: - case REC80_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = REC80_BITTIME_1; - else - cycles = REC80_BITTIME_0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - { - if(ir.state == REC80_PRE_B) - { - ir.general.bit = 0; - ir.cmd = ir.actcmd; - } - ir.state++; - } - else - ir.state--; - break; - - case REC80_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = REC80_BONTIME; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = REC80_IDLE; - } - break; - } -} - -void REC80_LoadMap(unsigned char map) -{ - switch(map) - { - default: - ir.general.preamble = 0x00A02002; - copyMapI((unsigned int*)REC80.table[map].codes); - break; - } -} - -void REC80_Init(unsigned char map) -{ - if(map < REC80.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.general.bit = 0; - ir.general.numbits = 24; - ir.general.wait = 0; - ir.general.pause = REC80_WAITTIME; - ir.state = REC80_IDLE; - REC80_LoadMap(map); - setIR(REC80_Module); - } -} - -void REC80_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.actcmd & 0x80000000) - ir.general.numbits = 24; - else - ir.general.numbits = 0; - - ir.actcmd &= 0x0FFFFFFF; - - setIRspeed(REC80_Module); - REC80_Repeat(); -} - -void REC80_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == REC80_IDLE) - { - ir.state++; - runIR(); - } - } -} - -void REC80_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != REC80_IDLE) - goto waitend; - } - ir.actcmd = 0x00000000; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_rec80.h b/boop/trunk/infrared/ir_rec80.h deleted file mode 100644 index 641408e..0000000 --- a/boop/trunk/infrared/ir_rec80.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_rec80.h - nec rec80 and derivates ir encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_REC80_H -#define IR_REC80_H - -void REC80_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void REC80_Init(unsigned char map); -void REC80_Send(unsigned long cmd); -void REC80_Repeat(void); -void REC80_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_recs80.c b/boop/trunk/infrared/ir_recs80.c deleted file mode 100644 index d15dbd1..0000000 --- a/boop/trunk/infrared/ir_recs80.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - ir_recs80.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_recs80.h" -#include "encoders.h" -#include "codes.h" - -const struct irModule RECS80_Module = -{ - RECS80_Encode, - RECS80_Send, - RECS80_Repeat, - RECS80_Stop, - 128, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define RECS80_IDLE 0x00 -#define RECS80_BIT_A 0x01 -#define RECS80_BIT_B 0x02 -#define RECS80_STOP 0x03 -#define RECS80_WAIT 0x04 - -#define RECS80_NUMBITS 11 -#define RECS80_BITTIME 7 -#define RECS80_BIT0 27*RECS80_BITTIME -#define RECS80_BIT1 41*RECS80_BITTIME -#define RECS80_WAITTIME 10 - -void __attribute__ ((section(".text.fastcode"))) RECS80_Encode (void) -{ - switch(ir.state) - { - case RECS80_IDLE: - mod_enable = 0; - break; - - case RECS80_BIT_A: - case RECS80_STOP: - cycles = RECS80_BITTIME; - mod_enable = 1; - ir.state++; - break; - - case RECS80_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x0400) - cycles = RECS80_BIT1; - else - cycles = RECS80_BIT0; - ir.cmd <<= 1; - ir.general.bit++; - if(ir.general.bit == RECS80_NUMBITS) - ir.state++; - else - ir.state--; - break; - - case RECS80_WAIT: - mod_enable = 0; - cycles = RECS80_BIT0; - ir.general.wait++; - if(ir.general.wait >= RECS80_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = RECS80_IDLE; - } - break; - } -} - -void RECS80_Init(unsigned char map) -{ - if(map < RECS80.num_tables) - { - ir.state = RECS80_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - ir.toggle = 1; - copyMapS((unsigned short*)RECS80.table[map].codes); - setIR(RECS80_Module); - cycles = RECS80_BITTIME; - } -} - -void RECS80_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.toggle & 0x01) - ir.actcmd |= 0x0200; - setIRspeed(RECS80_Module); - RECS80_Repeat(); -} - -void RECS80_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == RECS80_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void RECS80_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != RECS80_IDLE) - goto waitend; - } - ir.toggle++; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_recs80.h b/boop/trunk/infrared/ir_recs80.h deleted file mode 100644 index fbcbe99..0000000 --- a/boop/trunk/infrared/ir_recs80.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_recs80.h - phillips recs80 protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RECS80_H -#define IR_RECS80_H - -void RECS80_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void RECS80_Init(unsigned char map); -void RECS80_Send(unsigned long cmd); -void RECS80_Repeat(void); -void RECS80_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_rf.c b/boop/trunk/infrared/ir_rf.c deleted file mode 100644 index b1dcbe3..0000000 --- a/boop/trunk/infrared/ir_rf.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - ir_rf.c - RF IR encoder - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_rf.h" -#include "encoders.h" -#include "codes.h" -#include "rf.h" - -const struct irModule IRRF_Module = -{ - IRRF_Encode, - IRRF_Send, - IRRF_Repeat, - IRRF_Stop, - 75, // carrier turbo mode - 1, // carrier-on - 4 // carrier-off -}; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define IRRF_IDLE 0x00 -#define IRRF_WAIT 0x01 - -#define IRRF_BITTIME 40 -#define IRRF_WAITTIME 125 - -void __attribute__ ((section(".text.fastcode"))) IRRF_Encode (void) -{ - switch(ir.state) - { - case IRRF_IDLE: - mod_enable = 0; - break; - - case IRRF_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= IRRF_WAITTIME) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = IRRF_IDLE; - } - break; - } -} - -void IRRF_Init(unsigned char map) -{ - if(map < IRRF.num_tables) - { - ir.state = IRRF_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.bit = 0x00; - ir.general.wait = 0; - copyMapS((unsigned short*)IRRF.table[map].codes); - setIR(IRRF_Module); - cycles = IRRF_BITTIME; - } -} - -void IRRF_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - ir.general.trail=(unsigned int)openEP(0,0, packet_RFenc); - setIRspeed(IRRF_Module); - - if((ir.toggle & 0x01) &&(ir.actcmd != 0x0000)) - ir.actcmd |= 0x0080; - IRRF_Repeat(); -} - -void IRRF_Repeat(void) -{ - if(ir.actcmd != 0x0000) - { - if(ir.state == IRRF_IDLE) - { - struct RFendpoint_* cur_ep; - cur_ep = (struct RFendpoint_*)ir.general.trail; - if((cur_ep) && !(cur_ep->flags & EPnewdata)) { - cur_ep->dest = (ir.actcmd & 0xff00) >> 8; - cur_ep->data[0] = (ir.actcmd & 0x00ff); - cur_ep->bufferlen = 1; - cur_ep->flags |= EPenabled | EPoutput | EPnewdata; - - RF_changestate(RFtx); - } - ir.state++; - runIR(); - } - } -} - -void IRRF_Stop(void) -{ - if(ir.actcmd != 0x00000000) - while(ir.state != IRRF_IDLE); - - closeEP((struct RFendpoint_*)ir.general.trail); - ir.toggle++; - ir.actcmd = 0x0000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_rf.h b/boop/trunk/infrared/ir_rf.h deleted file mode 100644 index 2f3c546..0000000 --- a/boop/trunk/infrared/ir_rf.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - iir_rf.h - RF IR encoder - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_RF_H -#define IR_RF_H - -void IRRF_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void IRRF_Init(unsigned char map); -void IRRF_Send(unsigned long cmd); -void IRRF_Repeat(void); -void IRRF_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_selector.c b/boop/trunk/infrared/ir_selector.c deleted file mode 100644 index 385525d..0000000 --- a/boop/trunk/infrared/ir_selector.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - ir_selector.c - select ir encoder & codetable - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "infrared.h" -#include "codes.h" -#include "encoders.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "ir_selector.h" -#include "bfs.h" -#include "ir_capture.h" -#include "controls.h" -#include "global.h" - -extern volatile unsigned char autorepeat; -extern unsigned char act_encoder, act_set; - -const struct irDeviceTable_ default_irDevTab = -{ - 0x04, - 0x00, - { - { 0x01, 0x00 }, - { 0x02, 0x00 }, - { 0xff, 0xff }, - { 0xff, 0xff } - } -}; - -struct irDeviceTable_ irDevTab; - -char* getEncName(unsigned char enc) -{ - return (char*) encoders.encoder[enc].name; -} - -char* getSetName(unsigned char enc, unsigned char set) -{ - struct TABLES_C *ctab; - struct TABLES_S *stab; - struct TABLES_I *itab; - struct TABLES_N *ntab; - struct TABLES_L *ltab; - struct RAWset_ *RAWset; - - if (enc < encoders.num_encoders) { - switch(encoders.encoder[enc].type) - { - case 0: - ctab = (TABLES_C*)encoders.encoder[enc].data; - if (set < ctab->num_tables) - return (char*) ctab->table[set].name; - break; - case 1: - stab = (TABLES_S*)encoders.encoder[enc].data; - if (set < stab->num_tables) - return (char*) stab->table[set].name; - break; - case 2: - itab = (TABLES_I*)encoders.encoder[enc].data; - if (set < itab->num_tables) - return (char*) itab->table[set].name; - break; - case 3: - ntab = (TABLES_N*)encoders.encoder[enc].data; - if (set < ntab->num_tables) { - RAWset = (struct RAWset_*)BFS_LoadFileAddr(BFS_ID_RAWslot0 + set); - if(RAWset && (RAWset->name[0] != 0xff)) { - return (char*) RAWset->name; - } - else - return (char*) ntab->table[set].name; - } - break; - case 4: - ltab = (TABLES_L*)encoders.encoder[enc].data; - if (set < ltab->num_tables) { - return (char*) ltab->table[set].name; - } - break; - } - } - - return "unknown\0"; -} - -unsigned char EncIsValid(unsigned char enc, unsigned char set) -{ - struct TABLES_C *ctab; - - if (!(enc < encoders.num_encoders)) - return 0; - ctab = (TABLES_C*)encoders.encoder[enc].data; - if (!(set < ctab->num_tables)) - return 0; - return 1; -} - -unsigned char listSet(unsigned int enc, unsigned char sset) -{ - unsigned char set; - - if (!(sset < (((TABLES_C*)(encoders.encoder[enc].data))->num_tables))) - sset = 0; - - lcd_fill(0); - set_font(BOLDFONT); - draw_hexC(0,0,((TABLES_C*)(encoders.encoder[enc].data))->num_tables, 3, DRAW_PUT); - draw_string(16, 0, "remotes in", 3, DRAW_PUT); - draw_string(77, 0, (char*) encoders.encoder[enc].name, 3, DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - - set_font(SMALLFONT); - - for(set=0;set<((TABLES_C*)(encoders.encoder[enc].data))->num_tables; set++) - { - draw_string(1, 15+(set*9), getSetName(enc, set), 3, DRAW_PUT); - } - - draw_string(0, 120, "\"Left\" to return", 3, DRAW_PUT); - draw_string(0, 130, "\"OK\" to select remote", 3, DRAW_PUT); - - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - - while(!KEY_Left) - { - waitKeyUpDown(); - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - if(KEY_OK) - { - return sset; - } - if(KEY_Up) - { - sset--; - if(sset >= ((TABLES_C*)(encoders.encoder[enc].data))->num_tables) - sset = ((TABLES_C*)(encoders.encoder[enc].data))->num_tables-1; - } - if(KEY_Down) - { - sset++; - if(sset == ((TABLES_C*)(encoders.encoder[enc].data))->num_tables) - sset = 0; - } - draw_block(0, 14+(sset*9), 128, 9, 3, DRAW_XOR); - } - return 0xFF; -} - -#define maxenclist 8 -void select_ir(unsigned char *encoder,unsigned char *set) -{ - static unsigned char enc, senc, cenc, sset; - unsigned char moff; - unsigned char moffold; - - if (*encoder < encoders.num_encoders) - senc = *encoder; - else - senc = 0; - cenc = senc; - sset = *set; - moff = 0; - - if(senc >= maxenclist) - moff = senc - maxenclist +1; - -again: - moffold = encoders.num_encoders; - - set_font(BOLDFONT); - - lcd_fill(0); - draw_string(0, 0, "Encoders: ", 3, DRAW_PUT); - draw_hexC(54,0,encoders.num_encoders,3,DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - - set_font(SMALLFONT); - - draw_string(0, 106, "\"OK\" to accept select remote", 3, DRAW_PUT); - draw_string(0, 115, "\"Exit\" to return", 3, DRAW_PUT); - draw_string(0, 124, "\"Right\" to show names for", 3, DRAW_PUT); - draw_string(35, 133, "selected encoder", 3, DRAW_PUT); - set_font(BOLDFONT); - draw_string(0, 142, "Currently Selected:", 3, DRAW_PUT); - draw_string(0, 152, (char*) encoders.encoder[cenc].name, 3, DRAW_PUT); - draw_string(48, 152, getSetName(cenc,sset), 3, DRAW_PUT); - set_font(SMALLFONT); - - while(!KEY_Exit) - { - if(moff!=moffold) { - draw_block(0, 14, 128, 9*maxenclist, 3, DRAW_ERASE); - for(enc=moff;(encnum_tables, 3, DRAW_PUT); - draw_string(15, 15+((enc-moff)*9), "remotes in", 3, DRAW_PUT); - draw_string(65, 15+((enc-moff)*9), (char*) encoders.encoder[enc].name, 3, DRAW_PUT); - } - - if(encoders.num_encoders > moff+maxenclist) { - draw_hline(120,8+9*maxenclist,5,3,DRAW_PUT); - draw_hline(121,9+9*maxenclist,3,3,DRAW_PUT); - draw_hline(122,10+9*maxenclist,1,3,DRAW_PUT); - } - if(moff) { - draw_hline(120,19,5,3,DRAW_PUT); - draw_hline(121,18,3,3,DRAW_PUT); - draw_hline(122,17,1,3,DRAW_PUT); - } - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - } - moffold = moff; - waitKeyUpDown(); - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - if(KEY_Right) - { - enc = sset; - sset = listSet(senc,sset); - if(sset != 0xFF) - cenc = senc; - else - sset = enc; - goto again; - } - if(KEY_Up) - { - senc--; - if(senc= encoders.num_encoders) { - if(encoders.num_encoders > maxenclist) - moff = encoders.num_encoders - maxenclist; - senc = encoders.num_encoders-1; - } - } - if(KEY_Down) - { - senc++; - if(senc == maxenclist+moff) - moff++; - if(senc == encoders.num_encoders) { - moff = 0; - senc = 0; - } - } - if(KEY_OK) - { - //setEncoder(cenc, sset); - *encoder = cenc; - *set = sset; - return; - } - draw_block(0, 14+((senc-moff)*9), 128, 9, 3, DRAW_XOR); - } -} - -void remote_click(FORM* form, CONTROL* control) { - unsigned char sel; - - sel = ((LABEL*)control)->tag; - select_ir(&irDevTab.device[sel].encoder, &irDevTab.device[sel].set); - ((LABEL*)control)->caption = getSetName(irDevTab.device[sel].encoder, irDevTab.device[sel].set); - - form_draw(form); -} - -void RC_setting(void) { - unsigned char set; - unsigned char i; - - LABEL label[irDevTab.count]; - LABEL remote[irDevTab.count]; - char caption[irDevTab.count][6]; - - CONTROL* controls[irDevTab.count * 2]; - - for(i=0;i - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_SELECTOR_H -#define IR_SELECTOR_H - -struct irDevice_ { - unsigned char encoder; - unsigned char set; -}; - -struct irDeviceTable_ { - unsigned char count; - unsigned char active; - struct irDevice_ device[4]; -}; - -struct irDeviceTable_ irDevTab; -const struct irDeviceTable_ default_irDevTab; - -char* getSetName(unsigned char enc, unsigned char set); -unsigned char EncIsValid(unsigned char enc, unsigned char set); -void select_ir(unsigned char *encoder,unsigned char *set); -void RC_setting(void); - -#endif diff --git a/boop/trunk/infrared/ir_sirc.c b/boop/trunk/infrared/ir_sirc.c deleted file mode 100644 index 0bcfa8a..0000000 --- a/boop/trunk/infrared/ir_sirc.c +++ /dev/null @@ -1,161 +0,0 @@ -/* - ir_sirc.c - sony sirc protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_sirc.h" -#include "encoders.h" -#include "codes.h" - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define SIRC_IDLE 0x00 -#define SIRC_START_A 0x01 -#define SIRC_START_B 0x02 -#define SIRC_BIT_A 0x03 -#define SIRC_BIT_B 0x04 -#define SIRC_WAIT 0x05 - -#define SIRC_STARTLEN 96 -#define SIRC_BITLEN_0 24 -#define SIRC_BITLEN_1 48 -#define SIRC_BITOFF 24 -#define SIRC_GTIME 45 - -const struct irModule SIRC_Module = -{ - SIRC_Encode, - SIRC_Send, - SIRC_Repeat, - SIRC_Stop, - 122, // carrier - 1, // carrier-on - 3, // carrier-off -}; - -void __attribute__ ((section(".text.fastcode"))) SIRC_Encode (void) -{ - switch(ir.state) - { - case SIRC_IDLE: - mod_enable = 0; - break; - - case SIRC_START_A: - mod_enable = 1; - cycles = SIRC_STARTLEN; - ir.state++; - break; - - case SIRC_START_B: - mod_enable = 0; - cycles = SIRC_BITOFF; - ir.state++; - break; - - case SIRC_BIT_A: - mod_enable = 1; - if(ir.cmd & 0x01) - cycles = SIRC_BITLEN_1; - else - cycles = SIRC_BITLEN_0; - ir.cmd >>= 1; - ir.state++; - break; - - case SIRC_BIT_B: - mod_enable = 0; - cycles = SIRC_BITOFF; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case SIRC_WAIT: - mod_enable = 0; - ir.general.wait++; - cycles = SIRC_BITOFF; // 1 ms - if(ir.general.wait >= ir.general.pause) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = SIRC_IDLE; - } - break; - - } -} - -void SIRC_Init(unsigned char map) -{ - if(map < SIRC.num_tables) - { - ir.cmd = 0x00000000; - ir.actcmd = 0x00000000; - ir.general.bit = 0; - ir.general.numbits = 12; - ir.general.wait = 0; - ir.general.pause = SIRC_GTIME; - ir.state = SIRC_IDLE; - copyMapS((unsigned short*)SIRC.table[map].codes); - setIR(SIRC_Module); - } -} - -void SIRC_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - - if(ir.actcmd & 0x800000) - ir.general.numbits = 20; - else if(ir.actcmd & 0x8000) - ir.general.numbits = 15; - else - ir.general.numbits = 12; - setIRspeed(SIRC_Module); - SIRC_Repeat(); -} - -void SIRC_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SIRC_IDLE) - { - ir.cmd = ir.actcmd; - ir.state++; - runIR(); - } - } -} - -void SIRC_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend: - if(ir.state != SIRC_IDLE) - goto waitend; - } - ir.actcmd = 0x0000; - stopIR(); -} diff --git a/boop/trunk/infrared/ir_sirc.h b/boop/trunk/infrared/ir_sirc.h deleted file mode 100644 index 358096f..0000000 --- a/boop/trunk/infrared/ir_sirc.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - ir_sirc.h - sony sirc protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_SIRC_H -#define IR_SIRC_H - -void SIRC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void SIRC_Init(unsigned char map); -void SIRC_Send(unsigned long cmd); -void SIRC_Repeat(void); -void SIRC_Stop(void); - -#endif diff --git a/boop/trunk/infrared/ir_spaceenc.c b/boop/trunk/infrared/ir_spaceenc.c deleted file mode 100644 index d6c0ccc..0000000 --- a/boop/trunk/infrared/ir_spaceenc.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - ir_spaceenc.c - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "infrared.h" -#include "ir_spaceenc.h" -#include "encoders.h" -#include "codes.h" -#include "ir_codes/spaceenc/schneider_dtv3_xtra" - -const struct irModule SPACEENC_Module = -{ - SPACEENC_Encode, - SPACEENC_Send, - SPACEENC_Repeat, - SPACEENC_Stop, - 119, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -const struct irModule SPACEENC2_Module = -{ - SPACEENC_Encode, - SPACEENC2_Send, - SPACEENC2_Repeat, - SPACEENC2_Stop, - 119, // carrier - 1, // carrier-on - 3 // carrier-off -}; - -static unsigned int *ir_codes; -static unsigned char *ir_precodes; - -extern volatile unsigned char mod_enable; -extern volatile unsigned int cycles; -extern volatile unsigned long keyMap[42]; - -#define SPACEENC_IDLE 0x00 -#define SPACEENC_PRE_A 0x01 -#define SPACEENC_PRE_B 0x02 -#define SPACEENC_BIT_A 0x03 -#define SPACEENC_BIT_B 0x04 -#define SPACEENC_STOP 0x05 -#define SPACEENC_WAIT 0x06 - -#define SPACEENC_NUMBITS 6 -#define SPACEENC_BITTIME 20 -#define SPACEENC_BIT0 65 -#define SPACEENC_BIT1 150 -#define SPACEENC_WAITTIME 59 - -#define SPACEENC2_BITTIME 14 -#define SPACEENC2_BIT0 7 -#define SPACEENC2_BIT1 28 -#define SPACEENC2_WAITTIME 170 - -void __attribute__ ((section(".text.fastcode"))) SPACEENC_Encode (void) -{ - switch(ir.state) - { - case SPACEENC_IDLE: - mod_enable = 0; - break; - - case SPACEENC_PRE_A: - case SPACEENC_BIT_A: - cycles = ir.general.bittime; - mod_enable = 1; - ir.state++; - break; - - case SPACEENC_PRE_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.prebits) - { - ir.state = SPACEENC_BIT_A; - ir.general.bit = 0; - ir.cmd = ir_codes[ir.actcmd]; - } - else - { - ir.state--; - } - break; - - case SPACEENC_BIT_B: - mod_enable = 0; - if(ir.cmd & 0x01) - cycles = ir.general.bittime1; - else - cycles = ir.general.bittime0; - ir.cmd >>= 1; - ir.general.bit++; - if(ir.general.bit == ir.general.numbits) - ir.state++; - else - ir.state--; - break; - - case SPACEENC_STOP: - cycles = ir.general.bittime; - mod_enable = 1; - ir.state++; - break; - - case SPACEENC_WAIT: - mod_enable = 0; - ir.general.wait++; - if(ir.general.wait >= ir.general.waittime) - { - ir.general.bit = 0; - ir.general.wait = 0; - ir.state = SPACEENC_IDLE; - } - break; - } -} - -void SPACEENC_LoadMap(unsigned char map) -{ - switch(map) - { - case 1: - ir.general.numbits = SPACEENC_NUMBITS; - ir.general.prebits = 0; - ir.general.pre = 0x00; - ir.general.bittime = SPACEENC_BITTIME; - ir.general.bittime0 = SPACEENC_BIT0; - ir.general.bittime1 = SPACEENC_BIT1; - ir.general.waittime = SPACEENC_WAITTIME; - setIR(SPACEENC_Module); - break; - default: - ir.general.numbits = 32; - ir.general.prebits = 8; - ir.general.bittime = SPACEENC2_BITTIME; - ir.general.bittime0 = SPACEENC2_BIT0; - ir.general.bittime1 = SPACEENC2_BIT1; - ir.general.waittime = SPACEENC2_WAITTIME; - ir_codes = (unsigned int*) dtv3_codes; - ir_precodes = (unsigned char*) dtv3_pre; - setIR(SPACEENC2_Module); - break; - } -} - -void SPACEENC_Init(unsigned char map) -{ - if(map < SPACEENC.num_tables) - { - ir.state = SPACEENC_IDLE; - ir.cmd = 0x0000; - ir.actcmd = 0x0000; - ir.general.wait = 0; - ir.general.bit = 0; - copyMapC((unsigned char*)SPACEENC.table[map].codes); - SPACEENC_LoadMap(map); - cycles = SPACEENC_BITTIME; - } -} - -void SPACEENC_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - setIRspeed(SPACEENC_Module); - SPACEENC_Repeat(); - runIR(); -} - -void SPACEENC_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SPACEENC_IDLE) - { - ir.cmd = ir.actcmd; - ir.state = SPACEENC_BIT_A; - } - } -} - -void SPACEENC_Stop(void) -{ -waitend1: - while(ir.state != SPACEENC_IDLE) - goto waitend1; - - if(ir.actcmd != 0x00000000) - { - SPACEENC_Repeat(); - -waitend2: - if(ir.state != SPACEENC_IDLE) - goto waitend2; - } - ir.actcmd = 0x00000000; - stopIR(); -} - -void SPACEENC2_Send(unsigned long cmd) -{ - ir.actcmd = cmd; - SPACEENC2_Repeat(); -} - -void SPACEENC2_Repeat(void) -{ - if(ir.actcmd != 0x00000000) - { - if(ir.state == SPACEENC_IDLE) - { - ir.cmd = ir_precodes[ir.actcmd]; - ir.state = SPACEENC_PRE_A; - runIR(); - } - } -} - -void SPACEENC2_Stop(void) -{ - if(ir.actcmd != 0x00000000) - { -waitend2: - if(ir.state != SPACEENC_IDLE) - goto waitend2; - } - ir.actcmd = 0x00000000; - stopIR(); -} - - diff --git a/boop/trunk/infrared/ir_spaceenc.h b/boop/trunk/infrared/ir_spaceenc.h deleted file mode 100644 index 8132701..0000000 --- a/boop/trunk/infrared/ir_spaceenc.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - ir_spaceenc.h - space modulated protocoll encoder - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IR_SPACEENC_H -#define IR_SPACEENC_H - -void SPACEENC_Encode (void) __attribute__ ((section(".text.fastcode"))); - -void SPACEENC_Init(unsigned char map); -void SPACEENC_Send(unsigned long cmd); -void SPACEENC_Repeat(void); -void SPACEENC_Stop(void); -void SPACEENC2_Send(unsigned long cmd); -void SPACEENC2_Repeat(void); -void SPACEENC2_Stop(void); - -#endif diff --git a/boop/trunk/interrupt/Make.conf b/boop/trunk/interrupt/Make.conf deleted file mode 100644 index e7853f8..0000000 --- a/boop/trunk/interrupt/Make.conf +++ /dev/null @@ -1 +0,0 @@ -SRCS := irq.c diff --git a/boop/trunk/interrupt/irq.c b/boop/trunk/interrupt/irq.c deleted file mode 100644 index 9c8f965..0000000 --- a/boop/trunk/interrupt/irq.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - irq.c - irq core functions - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "irq.h" -#include "soundirq.h" -#include "infraredirq.h" - -#define IRQ_MASK 0x000000C0 - -extern unsigned char bl_val, cmp_val; - -static inline unsigned asm_get_cpsr(void) -{ - unsigned long retval; - asm volatile (" mrs %0, cpsr" : "=r" (retval) : /* no inputs */ ); - return retval; -} - -static inline void asm_set_cpsr(unsigned val) -{ - asm volatile (" msr cpsr, %0" : /* no outputs */ : "r" (val) ); -} - -unsigned enableIRQ(void) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr(_cpsr & ~IRQ_MASK); - return _cpsr; -} - -unsigned disableIRQ(void) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr(_cpsr | IRQ_MASK); - return _cpsr; -} - -unsigned restoreIRQ(unsigned oldCPSR) -{ - unsigned _cpsr; - - _cpsr = asm_get_cpsr(); - asm_set_cpsr((_cpsr & ~IRQ_MASK) | (oldCPSR & IRQ_MASK)); - return _cpsr; -} - - -// handle sound, IR, backlight in timer ISR -// user manual section 5.1, p. 62: -// Fast Interrupt reQuest (FIQ) requests have the highest priority. -// (where's the vector? in lpc2220_rom.ld ?) -void __attribute__ ((section(".text.fastcode"))) FIQ_Routine (void) -{ - while ((PWMIR == 0x01) || (T1IR == 1)) - { - if (PWMIR == 0x01) - soundIRQ(); // sound, backlight - if (T1IR == 1) - irIRQ(); // IR - } -} - - -void SWI_Routine (void) { - while (1) ; -} - - -void UNDEF_Routine (void) { - while (1) ; -} - - diff --git a/boop/trunk/interrupt/irq.h b/boop/trunk/interrupt/irq.h deleted file mode 100644 index 23b898a..0000000 --- a/boop/trunk/interrupt/irq.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - irq.h - irq core functions - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef IRQ_H -#define IRQ_H - -#define INT_WDT 0x00000001 -#define INT_CORE0 0x00000004 -#define INT_CORE1 0x00000008 -#define INT_TIMER0 0x00000010 -#define INT_TIMER1 0x00000020 -#define INT_UART0 0x00000040 -#define INT_UART1 0x00000080 -#define INT_PWM 0x00000100 -#define INT_I2C 0x00000200 -#define INT_SPI0 0x00000400 -#define INT_SPI1 0x00000800 -#define INT_PLL 0x00001000 -#define INT_RTC 0x00002000 -#define INT_EINT0 0x00004000 -#define INT_EINT1 0x00008000 -#define INT_EINT2 0x00010000 -#define INT_EINT3 0x00020000 -#define INT_ADC 0x00040000 - -#define INT_SRC_WDT 0 -#define INT_SRC_CORE0 2 -#define INT_SRC_CORE1 3 -#define INT_SRC_TIMER0 4 -#define INT_SRC_TIMER1 5 -#define INT_SRC_UART0 6 -#define INT_SRC_UART1 7 -#define INT_SRC_PWM 8 -#define INT_SRC_I2C 9 -#define INT_SRC_SPI0 10 -#define INT_SRC_SPI1 11 -#define INT_SRC_PLL 12 -#define INT_SRC_RTC 13 -#define INT_SRC_EINT0 14 -#define INT_SRC_EINT1 15 -#define INT_SRC_EINT2 16 -#define INT_SRC_EINT3 17 -#define INT_SRC_ADC 18 - -#define VIC_SLOT_EN 0x00000020 - -void __attribute__ ((section(".text.fastcode"))) FIQ_Routine (void); -void SWI_Routine (void) __attribute__ ((interrupt("SWI"))); -void UNDEF_Routine (void) __attribute__ ((interrupt("UNDEF"))); - - -unsigned enableIRQ(void); -unsigned disableIRQ(void); -unsigned restoreIRQ(unsigned oldCPSR); - -#endif diff --git a/boop/trunk/keyboard/Make.conf b/boop/trunk/keyboard/Make.conf deleted file mode 100644 index 42df737..0000000 --- a/boop/trunk/keyboard/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := keyboard.c -SRCS := keyirq.c diff --git a/boop/trunk/keyboard/keyboard.c b/boop/trunk/keyboard/keyboard.c deleted file mode 100644 index 2be0baa..0000000 --- a/boop/trunk/keyboard/keyboard.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - keyboard.c - button handling - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "keyboard.h" -#include "keyirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" -#include "backlight.h" -#include "irq.h" - - -void initKeys(void) -{ - keys[0] = 0; - keys[1] = 0; - IOCLR2=((1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)|(1<<24)); - FIODIR0 &= ~(1<<30); - startCB(addTimerCB(keyScanner, 15)); - - EXTWAKE |= 0x08; - PINSEL1 |= (1<<29); -} - -void waitKeyUp(void) -{ - while((keys[0] != 0) || (keys[1] != 0)) {}; -} - -extern void cpu_idle(); - -void waitKeyDown(void) -{ - while ((keys[0] == 0) && (keys[1] == 0)) - { - cpu_idle(); - }; - setBacklight(BL_AUTO); // pwm value -} - -inline char isKeyPressed (void) -{ - return ((keys[0] != 0) || (keys[1] != 0)); -} - -signed char getNumKeyValue(void) { - signed char x; - - switch (keys[0]) { - case 0x00000002: - x= 7; - break; - case 0x00000008: - x= 4; - break; - case 0x00000020: - x= 1; - break; - case 0x00020000: - x= 0; - break; - case 0x00040000: - x= 9; - break; - case 0x00080000: - x= 8; - break; - case 0x00100000: - x= 6; - break; - default: - x=-1; - } - switch (keys[1]) { - case 0x00000040: - x= 2; - break; - case 0x00000080: - x= 3; - break; - case 0x00040000: - x= 5; - break; - } - return(x); -} - -#define keynum( _X, _Y ) if(_X) return _Y - -unsigned char getKeynum(void) -{ - keynum(KEY_A, 0); - keynum(KEY_B, 1); - keynum(KEY_C, 2); - keynum(KEY_D, 3); - keynum(KEY_Betty, 4); - keynum(KEY_Exit, 5); - keynum(KEY_Up, 6); - keynum(KEY_Down, 7); - keynum(KEY_Left, 8); - keynum(KEY_Right, 9); - keynum(KEY_OK, 10); - keynum(KEY_Vplus, 11); - keynum(KEY_Vminus, 12); - keynum(KEY_Mute, 13); - keynum(KEY_Pplus, 14); - keynum(KEY_Pminus, 15); - keynum(KEY_1, 16); - keynum(KEY_2, 17); - keynum(KEY_3, 18); - keynum(KEY_4, 19); - keynum(KEY_5, 20); - keynum(KEY_6, 21); - keynum(KEY_7, 22); - keynum(KEY_8, 23); - keynum(KEY_9, 24); - keynum(KEY_0, 25); - keynum(KEY_Minus, 26); - keynum(KEY_AV, 27); - keynum(KEY_Menu, 28); - keynum(KEY_PiP, 29); - keynum(KEY_AB, 30); - keynum(KEY_16_9, 31); - keynum(KEY_Info, 32); - keynum(KEY_VTX1, 33); - keynum(KEY_VTX2, 34); - keynum(KEY_VTX3, 35); - keynum(KEY_Blue, 36); - keynum(KEY_Yellow, 37); - keynum(KEY_Green, 38); - keynum(KEY_Red, 39); - keynum(KEY_TV, 40); - keynum(KEY_Power, 41); - return 42; -} - diff --git a/boop/trunk/keyboard/keyboard.h b/boop/trunk/keyboard/keyboard.h deleted file mode 100644 index d589840..0000000 --- a/boop/trunk/keyboard/keyboard.h +++ /dev/null @@ -1,197 +0,0 @@ -/* - keyboard.h - button handling - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef KEYBOARD_H -#define KEYBOARD_H - - -//Uncomment if you have a swisscom Betty -//#define SWISSCOM - -/* -#define KEY_5 (keys[0] & 0x00000001) -#define KEY_6 (keys[0] & 0x00000002) -#define KEY_C (keys[0] & 0x00000004) -#define KEY_B (keys[0] & 0x00000008) -#define KEY_A (keys[0] & 0x00000010) -#define KEY_1 (keys[0] & 0x00000020) -#define KEY_8 (keys[0] & 0x00000040) -#define KEY_9 (keys[0] & 0x00000080) -#define KEY_D (keys[0] & 0x00000100) -#define KEY_Up (keys[0] & 0x00000200) -#define KEY_Betty (keys[0] & 0x00000400) -#define KEY_4 (keys[0] & 0x00000800) -#define KEY_0 (keys[0] & 0x00001000) -#define KEY_AV (keys[0] & 0x00002000) -#define KEY_Right (keys[0] & 0x00004000) -#define KEY_Left (keys[0] & 0x00008000) -#define KEY_Vplus (keys[0] & 0x00010000) -#define KEY_7 (keys[0] & 0x00020000) -#define KEY_AB (keys[0] & 0x00040000) -#define KEY_16_9 (keys[0] & 0x00080000) -#define KEY_Exit (keys[0] & 0x00100000) -#define KEY_OK (keys[0] & 0x00200000) -#define KEY_Vminus (keys[0] & 0x00400000) -#define KEY_Minus (keys[0] & 0x00800000) -#define KEY_VTX2 (keys[0] & 0x01000000) -#define KEY_VTX3 (keys[0] & 0x02000000) -#define KEY_Pplus (keys[0] & 0x04000000) -#define KEY_Down (keys[0] & 0x08000000) -#define KEY_Menu (keys[0] & 0x10000000) -#define KEY_PiP (keys[0] & 0x20000000) - -#define KEY_Yellow (keys[1] & 0x00000001) -#define KEY_Blue (keys[1] & 0x00000002) -#define KEY_Pminus (keys[1] & 0x00000004) -#define KEY_Mute (keys[1] & 0x00000008) -#define KEY_Info (keys[1] & 0x00000010) -#define KEY_VTX1 (keys[1] & 0x00000020) -#define KEY_TV (keys[1] & 0x00000040) -#define KEY_Power (keys[1] & 0x00000080) -#define KEY_3 (keys[1] & 0x00000100) -#define KEY_2 (keys[1] & 0x00000200) -#define KEY_Red (keys[1] & 0x00000400) -#define KEY_Green (keys[1] & 0x00000800) -*/ - -#ifdef SWISSCOM - #define KEY_B (keys[0] & 0x00000001) - #define KEY_C (keys[0] & 0x00000002) - #define KEY_6 (keys[0] & 0x00000004) - #define KEY_5 (keys[0] & 0x00000008) - #define KEY_Up (keys[0] & 0x00000010) - #define KEY_D (keys[0] & 0x00000020) - #define KEY_9 (keys[0] & 0x00000040) - #define KEY_8 (keys[0] & 0x00000080) - #define KEY_Left (keys[0] & 0x00000100) - #define KEY_Right (keys[0] & 0x00000200) - #define KEY_AV (keys[0] & 0x00000400) - #define KEY_0 (keys[0] & 0x00000800) - #define KEY_OK (keys[0] & 0x00001000) - #define KEY_Exit (keys[0] & 0x00002000) - #define KEY_16_9 (keys[0] & 0x00004000) - #define KEY_AB (keys[0] & 0x00008000) - #define KEY_Down (keys[0] & 0x00010000) - #define KEY_Pplus (keys[0] & 0x00020000) - #define KEY_VTX3 (keys[0] & 0x00040000) - #define KEY_VTX2 (keys[0] & 0x00080000) - #define KEY_Mute (keys[0] & 0x00100000) - #define KEY_Pminus (keys[0] & 0x00200000) - #define KEY_Blue (keys[0] & 0x00400000) - #define KEY_Yellow (keys[0] & 0x00800000) - #define KEY_2 (keys[0] & 0x01000000) - #define KEY_3 (keys[0] & 0x02000000) - #define KEY_Power (keys[0] & 0x04000000) - #define KEY_TV (keys[0] & 0x08000000) - - #define KEY_A (keys[1] & 0x00000001) - #define KEY_1 (keys[1] & 0x00000002) - #define KEY_Betty (keys[1] & 0x00000004) - #define KEY_4 (keys[1] & 0x00000008) - #define KEY_Vplus (keys[1] & 0x00000010) - #define KEY_7 (keys[1] & 0x00000020) - #define KEY_Vminus (keys[1] & 0x00000040) - #define KEY_Minus (keys[1] & 0x00000080) - #define KEY_Menu (keys[1] & 0x00000100) - #define KEY_PiP (keys[1] & 0x00000200) - #define KEY_Info (keys[1] & 0x00000400) - #define KEY_VTX1 (keys[1] & 0x00000800) - #define KEY_Red (keys[1] & 0x00001000) - #define KEY_Green (keys[1] & 0x00002000) - -#else - - #define KEY_OK (keys[0] & 0x00000001) - #define KEY_7 (keys[0] & 0x00000002) - #define KEY_Vplus (keys[0] & 0x00000004) - #define KEY_4 (keys[0] & 0x00000008) - #define KEY_Betty (keys[0] & 0x00000010) - #define KEY_1 (keys[0] & 0x00000020) - #define KEY_A (keys[0] & 0x00000040) - #define KEY_Left (keys[0] & 0x00000080) - #define KEY_Exit (keys[0] & 0x00000100) - #define KEY_Up (keys[0] & 0x00000200) - #define KEY_B (keys[0] & 0x00000400) - #define KEY_16_9 (keys[0] & 0x00000800) - #define KEY_AB (keys[0] & 0x00001000) - #define KEY_D (keys[0] & 0x00002000) - #define KEY_Right (keys[0] & 0x00004000) - #define KEY_C (keys[0] & 0x00008000) - #define KEY_AV (keys[0] & 0x00010000) - #define KEY_0 (keys[0] & 0x00020000) - #define KEY_9 (keys[0] & 0x00040000) - #define KEY_8 (keys[0] & 0x00080000) - #define KEY_6 (keys[0] & 0x00100000) - - #define KEY_Green (keys[1] & 0x00000001) - #define KEY_Red (keys[1] & 0x00000002) - #define KEY_VTX1 (keys[1] & 0x00000004) - #define KEY_Info (keys[1] & 0x00000008) - #define KEY_PiP (keys[1] & 0x00000010) - #define KEY_Menu (keys[1] & 0x00000020) - #define KEY_2 (keys[1] & 0x00000040) - #define KEY_3 (keys[1] & 0x00000080) - #define KEY_Mute (keys[1] & 0x00000100) - #define KEY_Pminus (keys[1] & 0x00000200) - #define KEY_Down (keys[1] & 0x00000400) - #define KEY_Pplus (keys[1] & 0x00000800) - #define KEY_Power (keys[1] & 0x00001000) - #define KEY_TV (keys[1] & 0x00002000) - #define KEY_Blue (keys[1] & 0x00004000) - #define KEY_Yellow (keys[1] & 0x00008000) - #define KEY_VTX3 (keys[1] & 0x00010000) - #define KEY_VTX2 (keys[1] & 0x00020000) - #define KEY_5 (keys[1] & 0x00040000) - #define KEY_Minus (keys[1] & 0x00080000) - #define KEY_Vminus (keys[1] & 0x00100000) - -#endif - -#define AUTO_TIMEOUT 5 - -#define KEY_IDLE 0x00 -#define KEY_PRESS 0x01 -#define KEY_HOLD 0x02 -#define KEY_RELEASE 0x03 - -#define FIOPIN0_KBDINT (1<<30) -#define ANYKEY (!(FIOPIN0 & FIOPIN0_KBDINT)) - -#define testLine(_c) \ -{ \ - if(!(_c)) \ - { \ - keys[half] |= keytest; \ - } \ - keytest <<= 1; \ -} - -volatile unsigned int keys[2]; - -void initKeys(void); -void scanKeys(void); -void waitKeyUp(void); -void waitKeyDown(void); -/// Return 1 if any key is pressed. -inline char isKeyPressed (void); -signed char getNumKeyValue(void); -unsigned char getKeynum(void); - -#define waitKeyUpDown() { waitKeyUp(); waitKeyDown(); } - -#endif diff --git a/boop/trunk/keyboard/keyirq.c b/boop/trunk/keyboard/keyirq.c deleted file mode 100644 index 6a11f45..0000000 --- a/boop/trunk/keyboard/keyirq.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - keyirq.c - keyboard scanning interrupt - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "keyboard.h" -#include "keyirq.h" -#include "lpc2220.h" -#include "timerfuncs.h" -#include "global.h" - -static unsigned char scannerTimeout; -static unsigned char repeatTimeout; -static unsigned char fastToggle; -static unsigned char scannerState = 0; - -#define S_IDLE 0x00 -#define S_PRESSED 0x01 -#define S_HOLD 0x02 -#define S_REPEAT 0x03 - -#define S_REPEATDELAY 6 -#define S_REPEATRATE 4 - -#define MASK0 0x18402000 -#define MASK3 0x00300000 - -void __attribute__ ((section(".text.fastcode"))) keyScanner(unsigned int cb) -{ -#ifdef SWISSCOM - static unsigned int IO2_P, IO2_PC, IO2_0, IO2_1; -#else - static unsigned int temp; - - keys[0] = 0; - keys[1] = 0; -#endif - - if(ANYKEY) - { -#ifdef SWISSCOM - IOSET2= (126<<18); - IO2_P = (1<<18); - IO2_0=0; - IO2_1=0; - keys[0]=0; - keys[1]=0; - for(IO2_PC=18;IO2_PC<=24;IO2_PC++) - { - IOCLR2 = IO2_P; - keys[0] |= ((IOPIN1>>16) & 0xF)<>21) & 0x3)<>1; - keys[0] |= (IOPIN3 & MASK3) >> 14; - - IOSET2 = (1<<18); - IOCLR2 = (1<<19); - - keys[0] |= FIOPIN0>> 3; - keys[0] |= (IOPIN3 & MASK3) >> 16; - - IOSET2 = (1<<19); - IOCLR2 = (1<<20); - - keys[0] |= FIOPIN0>> 5; - keys[0] |= (IOPIN3 & MASK3) >> 18; - - IOSET2 = (1<<20); - IOCLR2 = (1<<21); - - keys[0] |= FIOPIN0 >> 13; - keys[0] |= (IOPIN3 & MASK3) << 8; - - keys[0] = ~keys[0]; - keys[0] &= 0x3FEAD7FD; - - IOSET2 = (1<<21); - IOCLR2 = (1<<22); - - keys[1] = FIOPIN0>> 3; - keys[1] |= (IOPIN3 & MASK3) >> 16; - - IOSET2 = (1<<22); - IOCLR2 = (1<<23); - - keys[1] |= FIOPIN0>> 5; - keys[1] |= (IOPIN3 & MASK3) >> 18; - - IOSET2 = (1<<23); - IOCLR2 = (1<<24); - - keys[1] |= FIOPIN0>> 7; - keys[1] |= (IOPIN3 & MASK3) >> 20; - - keys[1] = ~keys[1]; - keys[1] &= 0x3FA857F; - - temp = (keys[0] & 0x3FE80000)>>3; - keys[0] &= 0x0002D7FD; - keys[0] |= temp; - - temp = (keys[0] & 0x07FFD000)>>1; - keys[0] &= 0x000007FD; - keys[0] |= temp; - - temp = keys[0]>>1; - keys[0] &= 0x00000001; - keys[0] |= temp; - - temp = (keys[0] & 0x1FFF000)>>1; - keys[0] &= 0x7FF; - keys[0] |= temp; - - temp = (keys[1] & 0x03FA8000) >> 8; - keys[1] &= 0x0000057F; - keys[1] |= temp; - - temp = keys[0] & 0x00E00000; - keys[0] &= 0x1FFFFF; - keys[1] |= (temp>>3); - - FIOMASK0 &= MASK0; - IOCLR2=((1<<18)|(1<<19)|(1<<20)|(1<<21)|(1<<22)|(1<<23)); -#endif - } - - if((keys[0] == 0) && (keys[1] == 0)) - { - scannerTimeout = 0; - repeatTimeout = S_REPEATDELAY; - scannerState = S_IDLE; - } - else if(scannerState == S_IDLE) - { - scannerState = S_PRESSED; - } - - switch(scannerState) - { - case S_PRESSED: - scannerTimeout++; - if((scannerTimeout > repeatTimeout) && (repeatTimeout != 0) && !(sysInfo & SYS_IR)) - { - repeatTimeout = S_REPEATRATE; - scannerState++; - } - break; - case S_HOLD: - keys[0] = 0; - keys[1] = 0; - scannerState++; - break; - - case S_REPEAT: - scannerTimeout++; - if(scannerTimeout > repeatTimeout) - { - keys[0] = 0; - keys[1] = 0; - scannerTimeout = 0; - fastToggle++; - if((fastToggle > 4) && (repeatTimeout > 1)) - { - repeatTimeout >>= 1; - fastToggle = 0; - } - } - break; - } -} diff --git a/boop/trunk/keyboard/keyirq.h b/boop/trunk/keyboard/keyirq.h deleted file mode 100644 index c510ce1..0000000 --- a/boop/trunk/keyboard/keyirq.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - keyirq.h - keyboard scanning interrupt - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef KEYIRQ_H -#define KEYIRQ_H - -#define AUTO_TIMEOUT 5 - -#define testLine(_c) \ -{ \ - if(!(_c)) \ - { \ - keys[half] |= keytest; \ - } \ - keytest <<= 1; \ -} - -void __attribute__ ((section(".text.fastcode"))) keyScanner (unsigned int cb); - -#endif diff --git a/boop/trunk/lpc2220.h b/boop/trunk/lpc2220.h deleted file mode 100644 index 36693c3..0000000 --- a/boop/trunk/lpc2220.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - lpc2220.h - register definitions - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef LPC2220_H -#define LPC2220_H - -/* External Memory Controller (EMC) */ -#define BCFG0 (*((volatile unsigned long *) 0xFFE00000)) -#define BCFG1 (*((volatile unsigned long *) 0xFFE00004)) -#define BCFG2 (*((volatile unsigned long *) 0xFFE00008)) -#define BCFG3 (*((volatile unsigned long *) 0xFFE0000C)) - -/* Vectored Interrupt Controller (VIC) */ -#define VICIRQStatus (*((volatile unsigned long *) 0xFFFFF000)) -#define VICFIQStatus (*((volatile unsigned long *) 0xFFFFF004)) -#define VICRawIntr (*((volatile unsigned long *) 0xFFFFF008)) -#define VICIntSelect (*((volatile unsigned long *) 0xFFFFF00C)) -#define VICIntEnable (*((volatile unsigned long *) 0xFFFFF010)) -#define VICIntEnClr (*((volatile unsigned long *) 0xFFFFF014)) -#define VICSoftInt (*((volatile unsigned long *) 0xFFFFF018)) -#define VICSoftIntClr (*((volatile unsigned long *) 0xFFFFF01C)) -#define VICProtection (*((volatile unsigned long *) 0xFFFFF020)) -#define VICVectAddr (*((volatile unsigned long *) 0xFFFFF030)) -#define VICDefVectAddr (*((volatile unsigned long *) 0xFFFFF034)) -#define VICVectAddr0 (*((volatile unsigned long *) 0xFFFFF100)) -#define VICVectAddr1 (*((volatile unsigned long *) 0xFFFFF104)) -#define VICVectAddr2 (*((volatile unsigned long *) 0xFFFFF108)) -#define VICVectAddr3 (*((volatile unsigned long *) 0xFFFFF10C)) -#define VICVectAddr4 (*((volatile unsigned long *) 0xFFFFF110)) -#define VICVectAddr5 (*((volatile unsigned long *) 0xFFFFF114)) -#define VICVectAddr6 (*((volatile unsigned long *) 0xFFFFF118)) -#define VICVectAddr7 (*((volatile unsigned long *) 0xFFFFF11C)) -#define VICVectAddr8 (*((volatile unsigned long *) 0xFFFFF120)) -#define VICVectAddr9 (*((volatile unsigned long *) 0xFFFFF124)) -#define VICVectAddr10 (*((volatile unsigned long *) 0xFFFFF128)) -#define VICVectAddr11 (*((volatile unsigned long *) 0xFFFFF12C)) -#define VICVectAddr12 (*((volatile unsigned long *) 0xFFFFF130)) -#define VICVectAddr13 (*((volatile unsigned long *) 0xFFFFF134)) -#define VICVectAddr14 (*((volatile unsigned long *) 0xFFFFF138)) -#define VICVectAddr15 (*((volatile unsigned long *) 0xFFFFF13C)) -#define VICVectCntl0 (*((volatile unsigned long *) 0xFFFFF200)) -#define VICVectCntl1 (*((volatile unsigned long *) 0xFFFFF204)) -#define VICVectCntl2 (*((volatile unsigned long *) 0xFFFFF208)) -#define VICVectCntl3 (*((volatile unsigned long *) 0xFFFFF20C)) -#define VICVectCntl4 (*((volatile unsigned long *) 0xFFFFF210)) -#define VICVectCntl5 (*((volatile unsigned long *) 0xFFFFF214)) -#define VICVectCntl6 (*((volatile unsigned long *) 0xFFFFF218)) -#define VICVectCntl7 (*((volatile unsigned long *) 0xFFFFF21C)) -#define VICVectCntl8 (*((volatile unsigned long *) 0xFFFFF220)) -#define VICVectCntl9 (*((volatile unsigned long *) 0xFFFFF224)) -#define VICVectCntl10 (*((volatile unsigned long *) 0xFFFFF228)) -#define VICVectCntl11 (*((volatile unsigned long *) 0xFFFFF22C)) -#define VICVectCntl12 (*((volatile unsigned long *) 0xFFFFF230)) -#define VICVectCntl13 (*((volatile unsigned long *) 0xFFFFF234)) -#define VICVectCntl14 (*((volatile unsigned long *) 0xFFFFF238)) -#define VICVectCntl15 (*((volatile unsigned long *) 0xFFFFF23C)) - -#define SCS (*((volatile unsigned char *) 0xE01FC1A0)) -#define FIOPIN0 (*((volatile unsigned long *) 0x3FFFC014)) -#define FIOSET0 (*((volatile unsigned long *) 0x3FFFC018)) -#define FIODIR0 (*((volatile unsigned long *) 0x3FFFC000)) -#define FIOCLR0 (*((volatile unsigned long *) 0x3FFFC01C)) -#define FIOMASK0 (*((volatile unsigned long *) 0x3FFFC010)) - -/* Pin Connect Block */ -#define PINSEL0 (*((volatile unsigned long *) 0xE002C000)) -#define PINSEL1 (*((volatile unsigned long *) 0xE002C004)) -#define PINSEL2 (*((volatile unsigned long *) 0xE002C014)) - -/* General Purpose Input/Output (GPIO) */ -#define IOPIN0 (*((volatile unsigned long *) 0xE0028000)) -#define IOSET0 (*((volatile unsigned long *) 0xE0028004)) -#define IODIR0 (*((volatile unsigned long *) 0xE0028008)) -#define IOCLR0 (*((volatile unsigned long *) 0xE002800C)) -#define IOPIN1 (*((volatile unsigned long *) 0xE0028010)) -#define IOSET1 (*((volatile unsigned long *) 0xE0028014)) -#define IODIR1 (*((volatile unsigned long *) 0xE0028018)) -#define IOCLR1 (*((volatile unsigned long *) 0xE002801C)) -#define IOPIN2 (*((volatile unsigned long *) 0xE0028020)) -#define IOSET2 (*((volatile unsigned long *) 0xE0028024)) -#define IODIR2 (*((volatile unsigned long *) 0xE0028028)) -#define IOCLR2 (*((volatile unsigned long *) 0xE002802C)) -#define IOPIN3 (*((volatile unsigned long *) 0xE0028030)) -#define IOSET3 (*((volatile unsigned long *) 0xE0028034)) -#define IODIR3 (*((volatile unsigned long *) 0xE0028038)) -#define IOCLR3 (*((volatile unsigned long *) 0xE002803C)) - -/* Phase Locked Loop (PLL) */ -#define PLLCON (*((volatile unsigned char *) 0xE01FC080)) -#define PLLCFG (*((volatile unsigned char *) 0xE01FC084)) -#define PLLSTAT (*((volatile unsigned short*) 0xE01FC088)) -#define PLLFEED (*((volatile unsigned char *) 0xE01FC08C)) - -/* VPB Divider */ -#define VPBDIV (*((volatile unsigned char *) 0xE01FC100)) - -/* Power Control */ -#define PCON (*((volatile unsigned char *) 0xE01FC0C0)) -#define PCONP (*((volatile unsigned long *) 0xE01FC0C4)) - -/* External Interrupts */ -#define EXTINT (*((volatile unsigned char *) 0xE01FC140)) -#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144)) -#define EXTMODE (*((volatile unsigned char *) 0xE01FC148)) -#define EXTPOLAR (*((volatile unsigned char *) 0xE01FC14C)) - -/* Timer 0 */ -#define T0IR (*((volatile unsigned long *) 0xE0004000)) -#define T0TCR (*((volatile unsigned long *) 0xE0004004)) -#define T0TC (*((volatile unsigned long *) 0xE0004008)) -#define T0PR (*((volatile unsigned long *) 0xE000400C)) -#define T0PC (*((volatile unsigned long *) 0xE0004010)) -#define T0MCR (*((volatile unsigned long *) 0xE0004014)) -#define T0MR0 (*((volatile unsigned long *) 0xE0004018)) -#define T0MR1 (*((volatile unsigned long *) 0xE000401C)) -#define T0MR2 (*((volatile unsigned long *) 0xE0004020)) -#define T0MR3 (*((volatile unsigned long *) 0xE0004024)) -#define T0CCR (*((volatile unsigned long *) 0xE0004028)) -#define T0CR0 (*((volatile unsigned long *) 0xE000402C)) -#define T0CR1 (*((volatile unsigned long *) 0xE0004030)) -#define T0CR2 (*((volatile unsigned long *) 0xE0004034)) -#define T0CR3 (*((volatile unsigned long *) 0xE0004038)) -#define T0EMR (*((volatile unsigned long *) 0xE000403C)) - -/* Timer 1 */ -#define T1IR (*((volatile unsigned long *) 0xE0008000)) -#define T1TCR (*((volatile unsigned long *) 0xE0008004)) -#define T1TC (*((volatile unsigned long *) 0xE0008008)) -#define T1PR (*((volatile unsigned long *) 0xE000800C)) -#define T1PC (*((volatile unsigned long *) 0xE0008010)) -#define T1MCR (*((volatile unsigned long *) 0xE0008014)) -#define T1MR0 (*((volatile unsigned long *) 0xE0008018)) -#define T1MR1 (*((volatile unsigned long *) 0xE000801C)) -#define T1MR2 (*((volatile unsigned long *) 0xE0008020)) -#define T1MR3 (*((volatile unsigned long *) 0xE0008024)) -#define T1CCR (*((volatile unsigned long *) 0xE0008028)) -#define T1CR0 (*((volatile unsigned long *) 0xE000802C)) -#define T1CR1 (*((volatile unsigned long *) 0xE0008030)) -#define T1CR2 (*((volatile unsigned long *) 0xE0008034)) -#define T1CR3 (*((volatile unsigned long *) 0xE0008038)) -#define T1EMR (*((volatile unsigned long *) 0xE000803C)) - -/* Pulse Width Modulator (PWM) */ -#define PWMIR (*((volatile unsigned long *) 0xE0014000)) -#define PWMTCR (*((volatile unsigned long *) 0xE0014004)) -#define PWMTC (*((volatile unsigned long *) 0xE0014008)) -#define PWMPR (*((volatile unsigned long *) 0xE001400C)) -#define PWMPC (*((volatile unsigned long *) 0xE0014010)) -#define PWMMCR (*((volatile unsigned long *) 0xE0014014)) -#define PWMMR0 (*((volatile unsigned long *) 0xE0014018)) -#define PWMMR1 (*((volatile unsigned long *) 0xE001401C)) -#define PWMMR2 (*((volatile unsigned long *) 0xE0014020)) -#define PWMMR3 (*((volatile unsigned long *) 0xE0014024)) -#define PWMMR4 (*((volatile unsigned long *) 0xE0014040)) -#define PWMMR5 (*((volatile unsigned long *) 0xE0014044)) -#define PWMMR6 (*((volatile unsigned long *) 0xE0014048)) -#define PWMCCR (*((volatile unsigned long *) 0xE0014028)) -#define PWMCR0 (*((volatile unsigned long *) 0xE001402C)) -#define PWMCR1 (*((volatile unsigned long *) 0xE0014030)) -#define PWMCR2 (*((volatile unsigned long *) 0xE0014034)) -#define PWMCR3 (*((volatile unsigned long *) 0xE0014038)) -#define PWMEMR (*((volatile unsigned long *) 0xE001403C)) -#define PWMPCR (*((volatile unsigned long *) 0xE001404C)) -#define PWMLER (*((volatile unsigned long *) 0xE0014050)) - -/* Universal Asynchronous Receiver Transmitter 0 (UART0) */ -#define U0RBR (*((volatile unsigned char *) 0xE000C000)) -#define U0THR (*((volatile unsigned char *) 0xE000C000)) -#define U0IER (*((volatile unsigned char *) 0xE000C004)) -#define U0IIR (*((volatile unsigned char *) 0xE000C008)) -#define U0FCR (*((volatile unsigned char *) 0xE000C008)) -#define U0LCR (*((volatile unsigned char *) 0xE000C00C)) -#define U0MCR (*((volatile unsigned char *) 0xE000C010)) -#define U0LSR (*((volatile unsigned char *) 0xE000C014)) -#define U0MSR (*((volatile unsigned char *) 0xE000C018)) -#define U0SCR (*((volatile unsigned char *) 0xE000C01C)) -#define U0FDR (*((volatile unsigned char *) 0xE000C028)) -#define U0DLL (*((volatile unsigned char *) 0xE000C000)) -#define U0DLM (*((volatile unsigned char *) 0xE000C004)) - -/* Universal Asynchronous Receiver Transmitter 1 (UART1) */ -#define U1RBR (*((volatile unsigned char *) 0xE0010000)) -#define U1THR (*((volatile unsigned char *) 0xE0010000)) -#define U1IER (*((volatile unsigned char *) 0xE0010004)) -#define U1IIR (*((volatile unsigned char *) 0xE0010008)) -#define U1FCR (*((volatile unsigned char *) 0xE0010008)) -#define U1LCR (*((volatile unsigned char *) 0xE001000C)) -#define U1MCR (*((volatile unsigned char *) 0xE0010010)) -#define U1LSR (*((volatile unsigned char *) 0xE0010014)) -#define U1MSR (*((volatile unsigned char *) 0xE0010018)) -#define U1SCR (*((volatile unsigned char *) 0xE001001C)) -#define U1DLL (*((volatile unsigned char *) 0xE0010000)) -#define U1DLM (*((volatile unsigned char *) 0xE0010004)) - -/* I2C Interface */ -#define I2CONSET (*((volatile unsigned char *) 0xE001C000)) -#define I2STAT (*((volatile unsigned char *) 0xE001C004)) -#define I2DAT (*((volatile unsigned char *) 0xE001C008)) -#define I2ADR (*((volatile unsigned char *) 0xE001C00C)) -#define I2SCLH (*((volatile unsigned short*) 0xE001C010)) -#define I2SCLL (*((volatile unsigned short*) 0xE001C014)) -#define I2CONCLR (*((volatile unsigned char *) 0xE001C018)) - -/* SPI0 (Serial Peripheral Interface 0) */ -#define S0SPCR (*((volatile unsigned char *) 0xE0020000)) -#define S0SPSR (*((volatile unsigned char *) 0xE0020004)) -#define S0SPDR (*((volatile unsigned char *) 0xE0020008)) -#define S0SPCCR (*((volatile unsigned char *) 0xE002000C)) -#define S0SPTCR (*((volatile unsigned char *) 0xE0020010)) -#define S0SPTSR (*((volatile unsigned char *) 0xE0020014)) -#define S0SPTOR (*((volatile unsigned char *) 0xE0020018)) -#define S0SPINT (*((volatile unsigned char *) 0xE002001C)) - -/* SPI1 (Serial Peripheral Interface 1) */ -#define S1SPCR (*((volatile unsigned char *) 0xE0030000)) -#define S1SPSR (*((volatile unsigned char *) 0xE0030004)) -#define S1SPDR (*((volatile unsigned char *) 0xE0030008)) -#define S1SPCCR (*((volatile unsigned char *) 0xE003000C)) -#define S1SPTCR (*((volatile unsigned char *) 0xE0030010)) -#define S1SPTSR (*((volatile unsigned char *) 0xE0030014)) -#define S1SPTOR (*((volatile unsigned char *) 0xE0030018)) -#define S1SPINT (*((volatile unsigned char *) 0xE003001C)) - -/* Real Time Clock */ -#define ILR (*((volatile unsigned char *) 0xE0024000)) -#define CTC (*((volatile unsigned short*) 0xE0024004)) -#define CCR (*((volatile unsigned char *) 0xE0024008)) -#define CIIR (*((volatile unsigned char *) 0xE002400C)) -#define AMR (*((volatile unsigned char *) 0xE0024010)) -#define CTIME0 (*((volatile unsigned long *) 0xE0024014)) -#define CTIME1 (*((volatile unsigned long *) 0xE0024018)) -#define CTIME2 (*((volatile unsigned long *) 0xE002401C)) -#define SEC (*((volatile unsigned char *) 0xE0024020)) -#define MIN (*((volatile unsigned char *) 0xE0024024)) -#define HOUR (*((volatile unsigned char *) 0xE0024028)) -#define DOM (*((volatile unsigned char *) 0xE002402C)) -#define DOW (*((volatile unsigned char *) 0xE0024030)) -#define DOY (*((volatile unsigned short*) 0xE0024034)) -#define MONTH (*((volatile unsigned char *) 0xE0024038)) -#define YEAR (*((volatile unsigned short*) 0xE002403C)) -#define ALSEC (*((volatile unsigned char *) 0xE0024060)) -#define ALMIN (*((volatile unsigned char *) 0xE0024064)) -#define ALHOUR (*((volatile unsigned char *) 0xE0024068)) -#define ALDOM (*((volatile unsigned char *) 0xE002406C)) -#define ALDOW (*((volatile unsigned char *) 0xE0024070)) -#define ALDOY (*((volatile unsigned short*) 0xE0024074)) -#define ALMON (*((volatile unsigned char *) 0xE0024078)) -#define ALYEAR (*((volatile unsigned short*) 0xE002407C)) -#define PREINT (*((volatile unsigned short*) 0xE0024080)) -#define PREFRAC (*((volatile unsigned short*) 0xE0024084)) - -/* A/D Converter */ -#define ADCR (*((volatile unsigned long *) 0xE0034000)) -#define ADDR (*((volatile unsigned long *) 0xE0034004)) -#define ADINTEN (*((volatile unsigned long *) 0xE003400C)) -#define ADSTAT (*((volatile unsigned long *) 0xE0034030)) - -/* Watchdog */ -#define WDMOD (*((volatile unsigned char *) 0xE0000000)) -#define WDTC (*((volatile unsigned long *) 0xE0000004)) -#define WDFEED (*((volatile unsigned char *) 0xE0000008)) -#define WDTV (*((volatile unsigned long *) 0xE000000C)) - -/* Memory Mapping control register */ -#define MEMMAP (*((volatile unsigned long *) 0xE01FC040)) - -/* SSP control register */ -#define SSPCR0 (*((volatile unsigned long *) 0xE005C000)) -#define SSPCR1 (*((volatile unsigned char *) 0xE005C004)) -#define SSPDR (*((volatile unsigned char *) 0xE005C008)) -#define SSPSR (*((volatile unsigned char *) 0xE005C00C)) -#define SSPCPSR (*((volatile unsigned char *) 0xE005C010)) - - -#endif /* __ASM_ARCH_HARDWARE_H */ diff --git a/boop/trunk/lpc2220_rom.ld b/boop/trunk/lpc2220_rom.ld deleted file mode 100644 index f7470bf..0000000 --- a/boop/trunk/lpc2220_rom.ld +++ /dev/null @@ -1,144 +0,0 @@ -/* - lpc2220.ld - linker script, flash based - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* identify the Entry Point */ - -ENTRY(_startup) - -/* specify the LPC2106 memory areas */ - -MEMORY -{ - ram : ORIGIN = 0x40000000, LENGTH = 64K-0x400 /* free RAM area */ - flash : ORIGIN = 0x80000000, LENGTH = 1M /* FLASH ROM */ -} - -/* define a global symbol _stack_end */ - -/* _stack_end = 0x4000F9DC; */ -_stack_end = 0x40010000; - -/* now define the output sections */ - -SECTIONS -{ - . = 0; /* set location counter to address zero */ - - startup : - { - *(.startup) - } >flash /* the startup code goes into FLASH */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .text : /* collect all sections that should go into FLASH after startup */ - { - *(.text) /* all .text sections (code) */ - *(.rodata) /* all .rodata sections (constants, strings, etc.) */ - *(.rodata*) /* all .rodata* sections (constants, strings, etc.) */ - *(.glue_7) /* all .glue_7 sections (no idea what these are) */ - *(.glue_7t) /* all .glue_7t sections (no idea what these are) */ - _etext = .; /* define a global symbol _etext just after the last code byte */ - } >flash /* put all the above into FLASH */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - __exidx_start = .; - PROVIDE(__exidx_start = __exidx_start); - - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*); - } > flash AT > flash /* index entries for section unwinding */ - - . = ALIGN(4); - __exidx_end = .; - PROVIDE(__exidx_end = __exidx_end); - - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .fastcode : - { - __fastcode_load = LOADADDR(.fastcode); - __fastcode_start = .; - /* functions with __attribute__ ((section (".text.fastcode")))*/ - *(.text.fastcode) - *(.text.ramvectors) - *(.text.do_vic) - *(.text.do_fiq) - *(.text.timerIRQ) - *(.text.soundIRQ) - *(.text.FIQ_Routine) - *(.text.keyScanner) - *(.text.adcIRQ) - *(.text.irIRQ) - *(.text.defIR) - *(.text.NRC17_Encode) - *(.text.ITT_Encode) - *(.text.RC5_Encode) - *(.text.RCA_Encode) - *(.text.RCMM_Encode) - *(.text.REC80_Encode) - *(.text.RECS80_Encode) - *(.text.SIRC_Encode) - *(.text.SPACEENC_Encode) - *(.text.cc1100IRQ) - *(.text._evaluate) - *(.text._push_state) - *(.text._mcpy) - *(.text._do_rcu) - *(.text._do_rcuS) - *(.text._draw_block) - *(.text._draw_hline) - *(.text._draw_vline) - - . = ALIGN (4); - __fastcode_end = .; - } >ram AT>flash - - - .data : /* collect all initialized .data sections that go into RAM */ - { - _data = .; /* create a global symbol marking the start of the .data section */ - *(.data) /* all .data sections */ - _edata = .; /* define a global symbol marking the end of the .data section */ - } >ram AT >flash /* put all the above into RAM (but load the LMA copy into FLASH) */ - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - - .bss : /* collect all uninitialized .bss sections that go into RAM */ - { - _bss_start = .; /* define a global symbol marking the start of the .bss section */ - *(.bss) /* all .bss sections */ - } >ram /* put all the above in RAM (it will be cleared in the startup code */ - - . = ALIGN(4); /* advance location counter to the next 32-bit boundary */ - _bss_end = . ; /* define a global symbol marking the end of the .bss section */ -} -end = .; /* define a global symbol marking the end of application RAM */ - -PROVIDE( MEMMAP = 0xE01FC040 ); -PROVIDE( BCFG0 = 0xFFE00000 ); -PROVIDE( BCFG1 = 0xFFE00004 ); -PROVIDE( BCFG2 = 0xFFE00008 ); -PROVIDE( PINSEL0 = 0xE002C000 ); -PROVIDE( PINSEL1 = 0xE002C004 ); -PROVIDE( PINSEL2 = 0xE002C014 ); -PROVIDE( IO0PIN = 0xE0028000 ); -PROVIDE( IO0DIR = 0xE0028008 ); -PROVIDE( IO2SET = 0xE0028024 ); -PROVIDE( SCS = 0xE01FC1A0 ); -PROVIDE( FIODIR0 = 0x3FFFC000 ); -PROVIDE( VICVectAddr = 0xFFFFF030 ); diff --git a/boop/trunk/main.c b/boop/trunk/main.c deleted file mode 100644 index 5f8fba8..0000000 --- a/boop/trunk/main.c +++ /dev/null @@ -1,417 +0,0 @@ -/* - main.c - main program routines - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -//typedef volatile unsigned int *reg32_t; - -#include "lpc2220.h" - - -#include "lcd.h" -#include "irq.h" -#include "keyboard.h" -#include "lcd.h" -#include "fonty.h" -#include "sid.h" -#include "sound.h" -//#include "sounds.h" -//#include "sound3.h" -#include "infrared.h" -#include "codes.h" -#include "encoders.h" -#include "ir_selector.h" -#include "serial.h" -#include "flash.h" -#include "rf.h" -#include "menu.h" -#include "testmenu.h" -#include "mainmenu.h" -#include "timerfuncs.h" -#define __MAIN_C__ -#include "global.h" -#include "adc.h" -#include "backlight.h" -#include "rtc.h" -#include "i2c.h" -#include "bfs.h" -#include "settingsmenu.h" -#include "ir_raw.h" -#include "ir_capture.h" -#include "controls.h" -#include "buffer.h" - -unsigned char sysInfo; - -extern volatile char timeout; - -extern ir_sfn irSend; -extern ir_fn irRepeat; -extern ir_fn irStop; - -const char hval[16] = "0123456789ABCDEF"; - -unsigned int oldkeys[2]; -unsigned int key_state; - -extern unsigned char act_encoder, act_set; - -extern unsigned char bl_val; - - -// betty runs on 10 MHz * 1/4 on reset -// this enables the PLL clock generation and sets the prescaler -void setSpeed(unsigned char sp) -{ - disableIRQ(); - switch(sp) - { - case SPEED_60: // turbo speed (60 mhz) - BCFG0 = 0x100005EF; - PLLCFG = 0x45; // 0100.0101 = PSEL=10=4 MSEL=00101=6 = 240mhz Fcco - PLLFEED = 0xAA; - PLLFEED = 0x55; - - VPBDIV = 0x00; - - BCFG0 = 0x100004A0; - BCFG2 = 0x100004A0; - BCFG1 = 0x00000C21; - sysInfo |= SYS_TURBO; - break; - - case SPEED_30: // normal speed (30 mhz) - default: - BCFG0 = 0x100005EF; - PLLCFG = 0x42; // 0100.0010 = PSEL=10=4 MSEL=00010=3 - PLLFEED = 0xAA; - PLLFEED = 0x55; - - VPBDIV = 0x02; - - BCFG0 = 0x10000420; - BCFG2 = 0x10000420; - BCFG1 = 0x00000400; - sysInfo &= ~SYS_TURBO; - break; - } - enableIRQ(); -} - -/* -// draw "emitting waves" symbol -// used when a button is pressed -void draw_ir (unsigned char x, unsigned char y, unsigned char m) -{ - //~ 0 1: ##### - //~ 1 2: # # - //~ 2 4: ### - //~ 3 8: # # - //~ 4 1: - //~ 5 2: ### - //~ 6 4: ##### - - draw_hline(x+1,y,5,3,m); // 0 - - draw_pixel(x ,y+1,3,m); // 1 - draw_pixel(x+6,y+1,3,m); // 1 - - draw_hline(x+2,y+2,3,3,m); // 2 - - draw_pixel(x+1,y+3,3,m); // 3 - draw_pixel(x+5,y+3,3,m); // 3 - - draw_hline(x+2,y+5,3,3,m); // 5 - - draw_hline(x+1,y+6,5,3,m); // 6 - - draw_symbol(x,y,7,(unsigned char*)symIR,LCD_COLOR_B,m); - -}*/ - - - -// shows current IR set on top of main screen -void drawSet (void) -{ - set_font(SMALLFONT); - draw_block (0, 0, 99, 9, LCD_COLOR_B, DRAW_ERASE); - draw_string (0,0,getSetName (irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set), LCD_COLOR_B, DRAW_PUT); -} - - -// -void drawMainscreen (void) -{ - //~ set_font(SMALLFONT); // done in drawSet() - - lcd_fill(0); - draw_logo(); - - // top bar - drawSet(); - -/* is updated in main loop - // time -#if FF_LARGE_IDLE_CLOCK - printTime (6,20, (struct time_ *)&rtc.time, 1); -#else - printTime (86,152, (struct time_ *)&rtc.time, 0); - printDate(0,152,(struct date_ *)&rtc.date,0); -#endif -*/ - showBat(0xff); // battery indicator - redraw_symbols(); // -} - - -//unsigned char i; - -/** let the LPC2200 sleep until the next IRQ - * - * This function tries to enter the sleep mode and stays - * there until the next interrupt wakes up the CPU. - * If that is not possible, the function returns immediately. - */ -extern unsigned char sact; -void cpu_idle () -{ - /* fall through if a key was pressed */ - if (ANYKEY) - return; - - //fall through if UART0 Scratch pad register is not empty - //OpenOCD can set this register with "mwb 0xE000C01C 0x01" to disable idle and power down mode - if(U0SCR) - return; - - /* only idle mode instead of power down when: - * * backlight on - * * IR transmission - * * RF is activated - * * sound is playing - * * I2C access - * * SYS_NOPDOWN in sysInfo is set - */ - if (bl_val != 0 || key_state != KEY_IDLE || - (RF.state > RFidle) || - (SID.flags & SIDenable) || sact || i2ccurrentjob || (sysInfo & SYS_NOPDOWN)) - { - if(sysInfo & SYS_NOIDLE) - return; - /* WARNING: no code reuse here: - * PCON = causes timing problems */ - EXTINT = 0x08; - PCON = PCON_IDLE; - PLLFEED = 0xAA; - PLLFEED = 0x55; - } - else - { - refresh_symbols(0xff); - EXTINT = 0x08; - sysInfo |= SYS_NOIDLE; - PCON = PCON_PDOWN; - PLLFEED = 0xAA; - PLLFEED = 0x55; - } -} // cpu_idle - -int main(void) -{ - sysInfo = SYS_NOIDLE; - - SCS |= 0x01; - FIODIR0 |= ((1<<21) | (1<<11) | (1<<6) | (1<<23) | (1<<19) | (1<<17)); - FIODIR0 |= (1<<12); - FIOSET0 |= (1<<12); - FIOCLR0 |= (1<<4); - - setSpeed(SPEED_30); - - lcd_init(0); - serial_init(); - - startTimerIRQ(); - startADC(); - - initKeys(); - - initSound(); - startSoundIRQ(); - - initIR(); - startIrIRQ(); - - RF_init(); - load_RF_setting(); - startRFIRQ(); - RF_changestate(RFwor); - - initI2C(); - initRTC(); - startRtcIRQ(); - - enableIRQ(); - - //testmenu_init(); - init_menu(); - - initBacklight(); - - oldkeys[0] = keys[0]; - oldkeys[1] = keys[0]; - - key_state = KEY_IDLE; - - set_font(BOLDFONT); - - BFS_Mount(); // flash file system - load_RC_setting(); // learned remote codes - load_setting(); // display settings - - - // recorded raw IR commands - { - struct RAWset_ RAWset; - unsigned char x; - unsigned long RAWcmdbase; - - RAWcmdbase = FLASH1_BASE +(secaddr[0]<<1); // data address - x=memcmp((void*)RAWcmdbase,"RC01",4); // check ID - - if(!x) // - { - memcpy(&RAWset,(void *)RAWcmdbase,sizeof(struct RAWset_)); - RAWset.name[7] = 0; - BFS_SaveFile(BFS_ID_RAWslot0, sizeof(struct RAWset_), (unsigned char*) &RAWset); - eraseSector(1,0); - } - } - - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - - drawMainscreen(); - ask_for_time(0); - -/* - playSound((unsigned char*)sound1_data, sound1_len); - waitSound(); - playSound((unsigned char*)sound2_data, sound2_len); -*/ - - // main loop - while (1) - { - // detect keyboard action (keyboard matrix scanned by interrupt) - if(keys[0] != oldkeys[0] || keys[1] != oldkeys[1]) - { - oldkeys[0] = keys[0]; - oldkeys[1] = keys[1]; - sysInfo |= SYS_KEY; - } - - // determine keyboard actions on main screen - switch(key_state) - { - case KEY_IDLE: - if(sysInfo & SYS_KEY) - { - sysInfo &= ~SYS_KEY; - if(KEY_Betty) - { - setBacklight(BL_AUTO); // activate backlight - menu_exec(&mainMenu); // select menu - setEncoder(irDevTab.device[irDevTab.active].encoder, irDevTab.device[irDevTab.active].set); - drawMainscreen(); // draw new menu - while(KEY_Exit); // block until - } - //~ else if(KEY_2) - //~ { - //setSpeed(SPEED_30); - //~ } - //~ else if(KEY_3) - //~ { - //setSpeed(SPEED_60); - //~ } - else if(KEY_A || KEY_B || KEY_C || KEY_D) - { - // select encoder - unsigned char x; - //playSound((unsigned char*)sound3_data, sound3_len); - x=0; - if (KEY_B) x=1; - if (KEY_C) x=2; - if (KEY_D) x=3; - - if (setEncoder(irDevTab.device[x].encoder, irDevTab.device[x].set)) { - setBacklight(BL_AUTO); - irDevTab.active = x; - //~ drawMainscreen(); - drawSet(); - } - } - - // (last-minute detection of regular key?) - if((keys[0] != 0) || (keys[1] != 0)) - key_state = KEY_PRESS; - } - break; - - case KEY_PRESS: - irSend(getCode()); - key_state = KEY_HOLD; - if(!(T1TCR & 0x02)) - draw_symbol(90,0,7,(unsigned char*)symIR,LCD_COLOR_B,DRAW_PUT); -// autorepeat = 0; - break; - - case KEY_HOLD: -// if(autorepeat >= AUTO_TIMEOUT) - irRepeat(); - //draw_ir(90, 0, DRAW_XOR); - if(keys[0] == 0 && keys[1] == 0) - key_state = KEY_RELEASE; - - break; - - case KEY_RELEASE: - if(!(T1TCR & 0x02)) - draw_symbol(90,0,7,(unsigned char*)symIR,LCD_COLOR_B,DRAW_ERASE); - irStop(); - key_state = KEY_IDLE; - break; - } - - cpu_idle(); // let the LPC2200 sleep until the next IRQ - - // display time - if (timeInfo & TIMECHANGED) - { -#if FF_LARGE_IDLE_CLOCK - // time large, no date - printTime( 6, 20, (struct time_ *)&rtc.time, 1); -#else - // time and date small - printTime( 86, 152, (struct time_ *)&rtc.time, 0); - printDate( 0, 152, (struct date_ *)&rtc.date, 0); -#endif - timeInfo &= ~TIMECHANGED; // clear update flag - } - - } // while (1) - return 0; // never returns -} // main diff --git a/boop/trunk/rtc/Make.conf b/boop/trunk/rtc/Make.conf deleted file mode 100644 index 8293f8f..0000000 --- a/boop/trunk/rtc/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := rtc.c i2c.c rtctimer.c diff --git a/boop/trunk/rtc/i2c.c b/boop/trunk/rtc/i2c.c deleted file mode 100644 index 3aa1edd..0000000 --- a/boop/trunk/rtc/i2c.c +++ /dev/null @@ -1,131 +0,0 @@ -/* - i2c.c - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "i2c.h" -#include "irq.h" -#include "rtc.h" -#include "global.h" - -volatile struct i2cjob_* volatile i2ccurrentjob; - -unsigned char i2c_jobexec(struct i2cjob_* job) { - - VICVectCntl3 &= ~VIC_SLOT_EN; - while(i2ccurrentjob); - i2ccurrentjob = job; - I2CONSET = STA; - while(i2ccurrentjob); - VICVectCntl3 |= VIC_SLOT_EN; - return 1; -} - -void i2cIRQ(void) { - unsigned char state; - - state = I2STAT; - i2ccurrentjob->buffer; - - switch(state) { - case 0x08: //A START condition has been transmitted - I2DAT = RTCslaveaddr | I2C_write; - I2CONSET = AA; - I2CONCLR = SI | STA; - i2ccurrentjob->pos = 0; - break; - case 0x18: //SLA+W has been transmitted; ACK has been received. - I2DAT = i2ccurrentjob->byteaddr; - I2CONSET = AA; - I2CONCLR = SI; - break; - case 0x28: //Data byte in I2DAT has been transmitted; ACK has been received. - switch(i2ccurrentjob->action) { - case I2C_read: - I2CONSET = STA; - I2CONCLR = AA | SI; - break; - case I2C_write: - if(i2ccurrentjob->len > i2ccurrentjob->pos) { - I2DAT = i2ccurrentjob->buffer[i2ccurrentjob->pos++]; - I2CONSET = AA; - I2CONCLR = SI; - } - else - i2ccurrentjob->action = I2C_done; - break; - default: - i2ccurrentjob->action = I2C_error; - } - break; - case 0x10: //A repeated START condition has been transmitted - I2DAT = RTCslaveaddr | I2C_read; - I2CONSET = AA; - I2CONCLR = SI | STA; - break; - case 0x40: //SLA+R has been transmitted; ACK has been received. - I2CONSET = AA; - I2CONCLR = SI; - break; - case 0x50: //Data byte has been received; ACK has been returned. - i2ccurrentjob->buffer[i2ccurrentjob->pos++] = I2DAT; - if(i2ccurrentjob->len > i2ccurrentjob->pos+1) - I2CONSET = AA; - else - I2CONCLR = AA; - I2CONCLR = SI; - break; - case 0x58: //Data byte has been received; NOT ACK has been returned. - i2ccurrentjob->buffer[i2ccurrentjob->pos] = I2DAT; - i2ccurrentjob->action = I2C_done; - break; - case 0x20: //SLA+W has been transmitted; NOT ACK has been received. - case 0x30: //Data byte in I2DAT has been transmitted; NOT ACK has been received. - if(i2ccurrentjob->pos) - i2ccurrentjob->pos--; - default: - i2ccurrentjob->action = I2C_error; - break; - } - - if((i2ccurrentjob->action == I2C_done) || (i2ccurrentjob->action == I2C_error)) { - I2CONSET = STO; - I2CONCLR = SI; - if(i2ccurrentjob->onfinish) { - struct i2cjob_* job; - job = (struct i2cjob_*)i2ccurrentjob; - i2ccurrentjob = 0; - job->onfinish(job); - } - else - i2ccurrentjob = 0; - } -} - -void initI2C(void) { - PINSEL0 |= (1<<4) | (1<<6); - I2SCLL = 19; - I2SCLH = 19; - - I2CONSET = I2EN; - i2ccurrentjob = 0; - - VICVectAddr4 = (unsigned long)&(i2cIRQ); - VICVectCntl4 = VIC_SLOT_EN | INT_SRC_I2C; - VICIntEnable = INT_I2C; -} - diff --git a/boop/trunk/rtc/i2c.h b/boop/trunk/rtc/i2c.h deleted file mode 100644 index 82f6932..0000000 --- a/boop/trunk/rtc/i2c.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - i2c.h - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef I2C_H -#define I2C_H - -#define AA 0x04 -#define SI 0x08 -#define STO 0x10 -#define STA 0x20 -#define I2EN 0x40 - -extern struct i2cjob_ dummyjob; - -typedef void(*i2c_fn)(struct i2cjob_*); - -struct i2cjob_ { - unsigned char* buffer; - i2c_fn onfinish; - unsigned char len; - unsigned char pos; - unsigned char byteaddr; - unsigned char action; -}; - -#define I2C_write 0 -#define I2C_read 1 -#define I2C_done 2 -#define I2C_error 3 - -volatile struct i2cjob_* volatile i2ccurrentjob; - -unsigned char i2c_jobexec(struct i2cjob_* job); -void initI2C(void); - -#endif diff --git a/boop/trunk/rtc/rtc.c b/boop/trunk/rtc/rtc.c deleted file mode 100644 index d176f96..0000000 --- a/boop/trunk/rtc/rtc.c +++ /dev/null @@ -1,432 +0,0 @@ -/* - rtc.c - - real-time clock PCF8563 by NXP Semiconductors - I2C Bus - Interrupt - - display date / time - set date / time - date calculations - settings menu - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "rtc.h" -#include "i2c.h" -#include "lcd.h" -#include "fonty.h" -#include "drawDigit.h" -#include "irq.h" -#include "adc.h" -#include "keyboard.h" -#include "rf.h" -#include "global.h" -#include "rtc.h" -#include "controls.h" -#include "timerfuncs.h" - -const unsigned long default_time[1] = {0x00000000}; -const unsigned char default_date[4] = {0x01, 0x02, 0x01, 0x08}; -const unsigned char months[36] = "JANFEBMRZAPRMAIJUNJULAUGSEPOKTNOVDEZ"; -const unsigned char days[14] = "SOMODIMIDOFRSA"; - -void initRTC (void) -{ - struct i2cjob_ job; - unsigned char buffer[4]; - - job.buffer = buffer; - job.onfinish = 0; - - //init rtc - job.len = 2; - job.byteaddr = RTCREG_CONTROL_STATUS_1; - job.buffer[0] = 0x08; - job.buffer[1] = 0x01; - do { - job.action = I2C_write; - i2c_jobexec(&job); - } while(!(job.action == I2C_done)); - - //init rtc alarm - job.len = 4; - job.byteaddr = RTCREG_MINUTE_ALARM;; - job.buffer[0] = (1<<7); - job.buffer[1] = (1<<7); - job.buffer[2] = (1<<7); - job.buffer[3] = (1<<7); - job.action = I2C_write; - i2c_jobexec(&job); - - //init rtc timer - job.len = 2; - job.byteaddr = RTCREG_TIMER_CONTROL; - job.buffer[0] = 0x82; - job.buffer[1] = 0x01; - job.action = I2C_write; - i2c_jobexec(&job); - - timeInfo =0; - - setTimeDate((struct time_*) default_time,(struct date_*) default_date); -} - -unsigned char getTimeDate (struct time_* t, struct date_ *d) -{ - struct i2cjob_ job; - unsigned char buffer[7]; - - job.buffer = buffer; - job.onfinish = 0; - job.len = 7; - job.byteaddr = RTCREG_SECOND; - job.action = I2C_read; - i2c_jobexec(&job); - - t->second = buffer[0] & 0x7F; - t->minute = buffer[1] & 0x7F; - t->hour = buffer[2] & 0x3F; - d->day = buffer[3] & 0x3F; - d->weekday = buffer[4] & 0x07; - d->month = buffer[5] & 0x1F; - d->year = buffer[6]; - - return buffer[0] & 0x80; /// \return VL - clock integrity. 0 is good. -} - -void setTimeDate (struct time_ *t, struct date_ *d) -{ - struct i2cjob_ job; - unsigned char buffer[7]; - - job.buffer = buffer; - job.onfinish = 0; - memcpy(job.buffer,(unsigned char *)t,3); - memcpy(job.buffer+3,(unsigned char *)d,4); - job.len = 7; - job.byteaddr = RTCREG_SECOND; - job.action = I2C_write; - i2c_jobexec(&job); - -} - -void printTime (unsigned char x, unsigned char y, struct time_* t, unsigned char format) -{ - if (format) - { - // 00:00 - unsigned char w = 25; - unsigned char h = 45; - - drawDigit (x+0, y, w, h, (t->hour >> 4) & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+w+2, y, w, h, t->hour & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+2*w +15, y, w, h, (t->minute >> 4) & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - drawDigit (x+3*w+2+15, y, w, h, t->minute & 0x0F, 5, LCD_COLOR_B, DRAW_PUT); - - draw_char (x+2*w+10, y+h/2, ':', LCD_COLOR_B, DRAW_PUT); - } - else - { - unsigned char f = activefont; - - set_font (SMALLFONT); - draw_block (x,y,42,7,LCD_COLOR_B,DRAW_ERASE); - draw_hexC (x+30,y,t->second, LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+15,y,t->minute, LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+0,y,t->hour, LCD_COLOR_B, DRAW_PUT); - draw_char (x+12,y,':', LCD_COLOR_B, DRAW_PUT); - draw_char (x+27,y,':', LCD_COLOR_B, DRAW_PUT); - set_font (f); - } -} - - -void printDate (unsigned char x, unsigned char y, struct date_* d, unsigned char format) -{ - unsigned char f; - char s[16]; - - f=activefont; - set_font(SMALLFONT); - - switch(format) { - case 1: - draw_block (x,y,80,7,LCD_COLOR_B,DRAW_ERASE); - s[ 0] = days[d->weekday * 2]; - s[ 1] = days[(d->weekday * 2) + 1]; - s[ 2] = ','; - s[ 3] = ' '; - s[ 4] = ((d->day & 0xf0)>>4) + 0x30; - s[ 5] = ((d->day & 0x0f)) + 0x30; - s[ 6] = '.'; - s[ 7] = ' '; - s[ 8] = months[(d->month - 1) * 3]; - s[ 9] = months[((d->month - 1) * 3)+1]; - s[10] = months[((d->month - 1) * 3)+2]; - s[11] = ' '; - s[12] = '2'; - s[13] = '0'; - s[14] = ((d->year & 0xf0)>>4) + 0x30; - s[15] = ((d->year & 0x0f)) + 0x30; - s[16] = 0; - draw_string (x, y, s, LCD_COLOR_B, DRAW_PUT); - break; - default: - draw_block(x,y,57,7,3,DRAW_ERASE); - draw_char (x+0,y,days[d->weekday * 2], LCD_COLOR_B, DRAW_PUT); - draw_char (x+6,y,days[ (d->weekday * 2) + 1], LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+15,y,d->day, LCD_COLOR_B, DRAW_PUT); - draw_char (x+27,y,'.', LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+30,y,d->month, LCD_COLOR_B, DRAW_PUT); - draw_char (x+42,y,'.', LCD_COLOR_B, DRAW_PUT); - draw_hexC (x+45,y,d->year, LCD_COLOR_B, DRAW_PUT); - } - - set_font(f); -} - -void rtcIRQreenable (struct i2cjob_* job) -{ - EXTINT |= (1<<2); - VICIntEnable = INT_EINT2; -} - -void rtcAckIRQ (struct i2cjob_* job) -{ - if (timeInfo & SETNEWTIME) { - rtcbuffer[1] = rtc.time.second; - rtcbuffer[2] = rtc.time.minute; - rtcbuffer[3] = rtc.time.hour; - rtcbuffer[4] = rtc.date.day; - rtcbuffer[5] = rtc.date.weekday; - rtcbuffer[6] = rtc.date.month; - rtcbuffer[7] = rtc.date.year; - i2cintjob.len = 8; - timeInfo &= ~SETNEWTIME; - timeInfo |= TIME_ACCURATE; // doesn't mean it's accurate, just that it was set - } - else { - rtc.time.second = job->buffer[1] & 0x7F; - rtc.time.minute = job->buffer[2] & 0x7F; - rtc.time.hour = job->buffer[3] & 0x3F; - rtc.date.day = job->buffer[4] & 0x3F; - rtc.date.weekday = job->buffer[5] & 0x07; - rtc.date.month = job->buffer[6] & 0x1F; - rtc.date.year = job->buffer[7]; - i2cintjob.len = 1; - } - - if(job->buffer[0] & ALARM_FLAG) - timeInfo |= ALARM_PENDING; - - timeInfo |= TIMECHANGED; - T0overflow = 0; - - i2cintjob.byteaddr = RTCREG_CONTROL_STATUS_2; - i2cintjob.buffer = rtcbuffer; - i2cintjob.buffer[0] = 0x01 | (timeInfo & ALARM_ENABLED); - i2cintjob.onfinish = rtcIRQreenable; - i2cintjob.action = I2C_write; - i2ccurrentjob = &i2cintjob; - I2CONSET = STA; - -} - -void rtcIRQ (void) -{ - EXTINT = (1<<2); - - i2cintjob.buffer = rtcbuffer; - i2cintjob.onfinish = rtcAckIRQ; - i2cintjob.len = 8; - i2cintjob.byteaddr = RTCREG_CONTROL_STATUS_2; - i2cintjob.action = I2C_read; - i2ccurrentjob = &i2cintjob; - I2CONSET = STA; - - if (!(PLLSTAT & (1<<8))) { - if ((rtc.time.second & 0x0f) == 9) - calcBat(0xff); - if ((rtc.time.second & 0x0f) == 0) - showBat(0xff); - } - - VICSoftIntClr = INT_EINT2; - VICIntEnClr = INT_EINT2; -} - -void startRtcIRQ (void) -{ - PINSEL0 |= (1<<31); - EXTWAKE |= (1<<2); - EXTINT |= (1<<2); - - VICVectAddr3 = (unsigned long)&(rtcIRQ); - VICVectCntl3 = VIC_SLOT_EN | INT_SRC_EINT2; - VICIntEnable = INT_EINT2; -} - -void calcBCD (unsigned char* value, char a, char max, char min) -{ - signed char x; - unsigned char y; - - x = (((*value & 0xf0)>>4) * 10 + (*value & 0x0f)) + a; - if (x > max) - x -= (1 + max - min); - if (x < min) - x += (1 + max - min); - y = x % 10; - y |= ((x-y) / 10)<<4; - *value = y; -} - -unsigned char checkBCD (unsigned char value, char max, char min) -{ - signed char x; - unsigned char y; - - x = (((value & 0xf0)>>4) * 10 + (value & 0x0f)); - if (x > max) - x = max; - if (x < min) - x = min; - y = x % 10; - y |= ((x-y) / 10)<<4; - return(y); -} - -void send_time (unsigned char dest, unsigned char wor) -{ - struct RFendpoint_* cur_ep; - - cur_ep = openEP((unsigned char*)&rtc,0, packet_time); - if (cur_ep) - { - cur_ep->dest = dest; - cur_ep->bufferlen = 7; - - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce; - if(wor) - cur_ep->flags |= EPsendwor; - RF_changestate(RFtx); - } -} - -void ask_for_time (unsigned char dest) -{ - struct RFendpoint_* cur_ep; - - cur_ep = openEP(0,0, packet_time); - if(cur_ep) - { - cur_ep->dest = dest; - cur_ep->data[0] = 0xFF; - cur_ep->bufferlen = 1; - - cur_ep->flags |= EPenabled | EPoutput | EPnewdata | EPonce | EPsendwor; - - RF_changestate(RFtx); - RF_timed_rx(400); - } -} - -void settime_click (FORM* form, CONTROL* control) -{ - VICIntEnClr = INT_EINT2; - rtc.date = ((DATEBOX*)(form->controls[0]))->date; - rtc.time = ((TIMEBOX*)(form->controls[1]))->time; - send_time(0,1); - setTimeDate((struct time_ *)&rtc.time, (struct date_ *)&rtc.date); - timeInfo |= TIME_ACCURATE; - VICIntEnable = INT_EINT2; - - form->flags |= BC_Form_exit; -} - - -// Settings > Clock menu -// -void change_clock (void) -{ - const LABEL label1 = {BC_Labelnotab,0,15,100,10,BOLDFONT,0,"Datum",0}; - DATEBOX datebox1 = {BC_Datebox,0,25,58,9,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - const LABEL label2 = {BC_Labelnotab,0,37,100,10,BOLDFONT,0,"Uhrzeit",0}; - TIMEBOX timebox1 = {BC_Timebox,0,47,43,9,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - const BUTTON button1 = {BC_Button,0,63,50,15,SMALLFONT,0,"Speichern",settime_click}; - - timebox1.time = rtc.time; - datebox1.date = rtc.date; - - CONTROL* controls[5] = { (CONTROL*)&datebox1, - (CONTROL*)&timebox1, - (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&button1}; - - FORM form = {"Datum & Uhrzeit"," ",0,0,0,0,controls,0,5,0,0}; - - form_exec(&form); -} - -/* Globale zur Verfügung stehenden Variablen: -//Variablen für die Zeit: -u08 dayofweek = 1, day = 1, month = 1; -u16 year = 2004; -u08 isschaltjahr; -*/ - -unsigned char isschaltjahr(unsigned int year) { - - if ( (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0) ) - return 1; - else - return 0; -} - -void calcweekday(struct date_* d) { - - unsigned int tagdesjahres; - unsigned int jahrdiff; - unsigned int tempwochentag; - unsigned char day; - unsigned char month; - unsigned char year; - - day = (d->day >> 4)*10 + (d->day & 0x0f); - month = (d->month >> 4)*10 + (d->month & 0x0f); - year = 2000+(d->year >> 4)*10 + (d->year & 0x0f); - - tagdesjahres = 31*(month-1); - if (month > 2) tagdesjahres = tagdesjahres -3 +isschaltjahr(year); - if (month > 4) tagdesjahres--; - if (month > 6) tagdesjahres--; - if (month > 9) tagdesjahres--; - if (month > 11) tagdesjahres--; - tagdesjahres += day; - - jahrdiff = year -2000; - tempwochentag = jahrdiff + (jahrdiff-1) / 4 - (jahrdiff-1) / 100 + (jahrdiff-1) / 400 + tagdesjahres; - if (jahrdiff > 0) - tempwochentag++; - tempwochentag = (tempwochentag % 7)+3; - if (tempwochentag > 6) - tempwochentag -= 7; - d->weekday = tempwochentag; -} diff --git a/boop/trunk/rtc/rtc.h b/boop/trunk/rtc/rtc.h deleted file mode 100644 index 81a520e..0000000 --- a/boop/trunk/rtc/rtc.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - rtc.h - - Copyright (C) 2008 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef RTC_H -#define RTC_H - -#include "i2c.h" - -#define RTCslaveaddr 0xA2 - -//PCF8563 registers -#define RTCREG_CONTROL_STATUS_1 0x00 -#define RTCREG_CONTROL_STATUS_2 0x01 -#define RTCREG_SECOND 0x02 -#define RTCREG_MINUTES 0x03 -#define RTCREG_HOURS 0x04 -#define RTCREG_DAYS 0x05 -#define RTCREG_WEEKDAYS 0x06 -#define RTCREG_MONTHS_CENTURY 0x07 -#define RTCREG_YEARS 0x08 -#define RTCREG_MINUTE_ALARM 0x09 -#define RTCREG_HOUR_ALARM 0x0A -#define RTCREG_DAY_ALARM 0x0B -#define RTCREG_WEEKDAY_ALARM 0x0C -#define RTCREG_CLKOUT_CONTROL 0x0D -#define RTCREG_TIMER_CONTROL 0x0E -#define RTCREG_TIMER 0x0F - -//RTCREG_CONTROL_STATUS_2 -#define TIMER_INT_EN (1<<0) -#define ALARM_INT_EN (1<<1) -#define TIMER_FLAG (1<<2) -#define ALARM_FLAG (1<<3) - -struct time_ -{ - unsigned char second; - unsigned char minute; - unsigned char hour; - unsigned char tag; -}; - -struct date_ -{ - unsigned char day; - unsigned char weekday; - unsigned char month; - unsigned char year; -}; - -struct rtc_ -{ - struct date_ date; - struct time_ time; -}; - -volatile struct rtc_ rtc; - -volatile unsigned char timeInfo; -#define TIMECHANGED (1<<0) -#define ALARM_ENABLED (1<<1) -#define SETNEWTIME (1<<2) -#define TIME_ACCURATE (1<<3) -#define ALARM_PENDING (1<<3) - - -struct i2cjob_ i2cintjob; -unsigned char rtcbuffer[8]; - -const unsigned char days[14]; - -void initRTC(void); -unsigned char getTimeDate(struct time_* t, struct date_ *d); -void setTimeDate(struct time_* t, struct date_ *d); -void printTime (unsigned char x, unsigned char y, struct time_* t, unsigned char format); -void printDate(unsigned char x, unsigned char y, struct date_* d, unsigned char format); -void rtcIRQ (void); -void startRtcIRQ(void); -void change_clock(void); -void calcweekday(struct date_* d); - -/// Send the time via RF packet @see RF_PACKET_TIME to dest -void send_time(unsigned char dest, unsigned char wor); - -/// Request to receive time via RF packet @see RF_PACKET_TIME from dest -void ask_for_time(unsigned char dest); - -void calcBCD(unsigned char* value, char a, char max, char min); -unsigned char checkBCD(unsigned char value, char max, char min); - -#endif diff --git a/boop/trunk/rtc/rtctimer.c b/boop/trunk/rtc/rtctimer.c deleted file mode 100644 index 1944f90..0000000 --- a/boop/trunk/rtc/rtctimer.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - rtctimer.c - real-time clock timer - Copyright (C) 2010 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "rtc.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" -#include "global.h" -#include "controls.h" -#include "sid.h" - -void initRTCtimer (void) { - -} - - -void RTCtimer_timer (FORM* form) -{ - ((TIMEBOX*)(form->controls[0]))->time = rtc.time; - control_draw(form->controls[0],0); //redraw timebox1 - if(timeInfo & ALARM_PENDING) { - form->tag=9; - timeInfo &= ~ALARM_PENDING; - } - if(form->tag) { - if(form->tag & 0x01) beep(1); - form->tag--; - } -} - -void RTCsave_click(FORM* form, CONTROL* control) { - struct i2cjob_ job; - unsigned char buffer[4]; - - buffer[0] = ((TIMEBOX*)(form->controls[8]))->time.minute; - buffer[1] = ((TIMEBOX*)(form->controls[8]))->time.hour | (1<<7); - buffer[2] = (1<<7); - buffer[3] = (1<<7); - - job.buffer = buffer; - job.onfinish = 0; - job.len = 4; - job.byteaddr = RTCREG_MINUTE_ALARM; - job.action = I2C_write; - i2c_jobexec(&job); - - timeInfo |= ALARM_ENABLED; -} - -void RTCtimer_edit(void) { - - const char* listbox1items[] = {"Alarm","Tastendruck","Makro","Funktion"}; - const char* listbox2items[] = {"Stunde","Tag","Monat"}; - - TIMEBOX timebox1 = {BC_Timebox | BC_NoTabStop,85,151,43,8,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - timebox1.time = rtc.time; - - const LABEL label1 = {BC_Labelnotab,0,20,70,9,BOLDFONT,0,"Timer",0}; - const LABEL label2 = {BC_Labelnotab,0,32,70,9,BOLDFONT,0,"Typ",0}; - const LABEL label3 = {BC_Labelnotab,0,44,70,9,BOLDFONT,0,"Wiederholung",0}; - const LABEL label4 = {BC_Labelnotab,0,56,70,9,BOLDFONT,0,"Alarmzeit",0}; - - NUMBOX numbox1 = {BC_Numbox,76,20,20,9,SMALLFONT,1,1,1,NULL,NULL}; - LISTBOX listbox1 = {BC_Listbox,76,32,50,10,SMALLFONT,0,1,(char**)listbox1items,NULL,NULL}; - LISTBOX listbox2 = {BC_Listbox,76,44,50,10,SMALLFONT,0,1,(char**)listbox2items,NULL,NULL}; - TIMEBOX timebox2 = {BC_Timebox,76,56,43,8,SMALLFONT,0,{0x00,0x00,0x00,0x00},NULL,NULL}; - - const BUTTON button1 = {BC_Button,0,80,60,15,SMALLFONT,0,"Speichern",RTCsave_click}; - - CONTROL* controls[] = { (CONTROL*)&timebox1, - (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&label3, - (CONTROL*)&label4, - (CONTROL*)&numbox1, - (CONTROL*)&listbox1, - (CONTROL*)&listbox2, - (CONTROL*)&timebox2, - (CONTROL*)&button1}; - - timebox2.time = rtc.time; - - FORM form = {"Timer bearbeiten","",NULL,NULL,RTCtimer_timer,0,controls,0,NUM_OF_ELEMENTS(controls),0,200}; - form_exec(&form); - - timeInfo &= ~ALARM_ENABLED; -} diff --git a/boop/trunk/rtc/rtctimer.h b/boop/trunk/rtc/rtctimer.h deleted file mode 100644 index 6bc0018..0000000 --- a/boop/trunk/rtc/rtctimer.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - rtctimer.h - real-time clock timer - Copyright (C) 2010 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef RTCTIMER_H -#define RTCTIMER_H - -struct RTCtimer_ { - unsigned char flags; - unsigned char minute; - unsigned char hour; - unsigned char day; - unsigned char month; - unsigned char repeat; //!< repeat alarm: Bit0=So...Bit6=Sa - unsigned char arg[4]; //!< argument for timer execution -}; -#endif - -//RTCtimer_ flags -#define RTCTIMER_TYPEMASK 0x07 -#define RTCTIMER_ALARM 0x00 -#define RTCTIMER_KEY 0x01 -#define RTCTIMER_MACRO 0x02 -#define RTCTIMER_FUNCTION 0x03 -#define RTCTIMER_OBSOLETE (1<<6) -#define RTCTIMER_SLOTFREE (1<<7) - -void RTCtimer_edit(void); diff --git a/boop/trunk/serial/Make.conf b/boop/trunk/serial/Make.conf deleted file mode 100644 index e36a9e2..0000000 --- a/boop/trunk/serial/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := serial.c redirector.c -SRCS := serirq.c diff --git a/boop/trunk/serial/redirector.c b/boop/trunk/serial/redirector.c deleted file mode 100644 index df263bd..0000000 --- a/boop/trunk/serial/redirector.c +++ /dev/null @@ -1,306 +0,0 @@ -/* - redirector.h - serial port redirector - Copyright (C) 2009 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "redirector.h" -#include "serial.h" -#include "buffer.h" -#include "global.h" -#include "controls.h" -#include "fonty.h" -#include "rf.h" -#include "timerfuncs.h" - -#define redirectorbuffersize 200 - -extern unsigned int is_drawing; - -struct redirector_ { - struct cBuffer_ incbuffer; - struct cBuffer_ outcbuffer; - struct RFendpoint_* dataout_ep; - struct RFendpoint_* datain_ep; - struct RFendpoint_* cmdout_ep; - struct RFendpoint_* cmdin_ep; - unsigned long lastlen; - unsigned char timeoutcnt; - unsigned char inbuffer[redirectorbuffersize]; - unsigned char outbuffer[redirectorbuffersize]; - unsigned char status; -}; - -const unsigned int listbrg[8] = { 1200,2400,4800,9600,14400,19200,28800,38400}; - -void redirector_start(FORM* form, struct redirector_* redirectorvars) { - - redirectorvars->dataout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->lastlen = 0; - redirectorvars->timeoutcnt = 0; - - cBufferFlush(&redirectorvars->incbuffer); - cBufferFlush(&redirectorvars->outcbuffer); - uart0_incbuffer = &redirectorvars->incbuffer; - uart0_outcbuffer = &redirectorvars->outcbuffer; - - redirectorvars->dataout_ep->flags |= EPenabled; - redirectorvars->datain_ep->flags |= EPenabled; - - U0FCR |= (1<<7); // trigger level 1 - serial_setbrg (listbrg[((LISTBOX*)(form->controls[2]))->listindex]); - sysInfo |= SYS_NOPDOWN; - - form->controls[2]->type |= BC_NoTabStop; - form->controls[3]->type |= BC_NoTabStop; - form->controls[5]->type |= BC_Disabled; - form->controls[6]->type &= ~BC_Disabled; - form->sel = 6; - form->flags |= BC_Form_redraw; - -} - -void redirector_start_click(FORM* form, CONTROL* control) { - - volatile unsigned long timeout; - - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - RF_changestate(RFrx); - - redirectorvars->cmdout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->cmdout_ep->data[0] = redir_SET; - redirectorvars->cmdout_ep->data[1] = ((LISTBOX*)(form->controls[2]))->listindex; - redirectorvars->cmdout_ep->bufferlen = 2; - redirectorvars->cmdout_ep->flags |= EPnewdata | EPsendwor; - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - RF_changestate(RFtx); - - addTimeout(&timeout, 200); - while(timeout && !(redirectorvars->cmdin_ep->flags & EPnewdata)); - removeTimeout(&timeout); - - if(!timeout) { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nZiel antwortet nicht"); - form_draw(form); - RF_changestate(RFwor); - return; - } - - redirectorvars->cmdout_ep->data[0] = redir_START; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - RF_changestate(RFtx); - - addTimeout(&timeout, 200); - while(timeout && !(redirectorvars->cmdin_ep->flags & EPnewdata)); - removeTimeout(&timeout); - - if(!timeout) { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nZiel antwortet nicht"); - form->flags |= BC_Form_redraw; - RF_changestate(RFwor); - return; - } - - redirector_start(form, redirectorvars); - -} - - -void redirector_stop_click(FORM* form, CONTROL* control) { - - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - redirectorvars->cmdout_ep->dest = ((NUMBOX*)(form->controls[3]))->value; - redirectorvars->cmdout_ep->data[0] = redir_STOP; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - - RF_changestate(RFtx); - - redirectorvars->dataout_ep->flags &= ~EPenabled; - redirectorvars->datain_ep->flags &= ~EPenabled; - - U0FCR &= ~((1<<6) | (1<<7)); // trigger level 0 - uart0_incbuffer = 0; - uart0_outcbuffer = 0; - serial_setbrg (DEFAULTBRG); - sysInfo &= ~SYS_NOPDOWN; - RF_changestate(RFwor); - - form->controls[2]->type &= ~BC_NoTabStop; - form->controls[3]->type &= ~BC_NoTabStop; - form->controls[5]->type &= ~BC_Disabled; - form->controls[6]->type |= BC_Disabled; - form->sel = 5; - form->flags |= BC_Form_redraw; - -} - -#define sendcount 59 -void redirector_timer(FORM* form) { - struct redirector_* redirectorvars; - redirectorvars = (struct redirector_*)form->tag; - - //((NUMBOX*)(form->controls[4]))->value = redirectorvars->outcbuffer.len; - //control_draw(form->controls[4],0); - - if(redirectorvars->incbuffer.len == redirectorvars->lastlen) { - if(redirectorvars->timeoutcnt) - redirectorvars->timeoutcnt--; - } - else { - redirectorvars->timeoutcnt = 2; - } - redirectorvars->lastlen = redirectorvars->incbuffer.len; - - - if(redirectorvars->dataout_ep && redirectorvars->incbuffer.len && !(redirectorvars->dataout_ep->flags & EPnewdata) && - ((redirectorvars->incbuffer.len >= sendcount) | !(redirectorvars->timeoutcnt))) { - - if(redirectorvars->incbuffer.len >= sendcount) - redirectorvars->dataout_ep->bufferlen = sendcount; - else - redirectorvars->dataout_ep->bufferlen = redirectorvars->incbuffer.len; - - redirectorvars->dataout_ep->flags |= EPnewdata; - RF_changestate(RFtx); - } - - if(redirectorvars->outcbuffer.len) { - if(!(U0IER & IER_THRE)) { - U0IER |= IER_THRE; - U0THR = cBufferGet(uart0_outcbuffer); - (((NUMBOX*)(form->controls[4]))->value)++; - control_draw(form->controls[4],0); - } - } - - if(redirectorvars->cmdin_ep->flags & EPnewdata) { - unsigned char ACK = 0; - switch (redirectorvars->cmdin_ep->data[0]) { - case redir_ACK: - break; - case redir_SET: - if (redirectorvars->cmdin_ep->bufferlen > 1) { - if(redirectorvars->cmdin_ep->data[1] <= baud_38400) { - ((LISTBOX*)(form->controls[2]))->listindex = redirectorvars->cmdin_ep->data[1]; - form->flags |= BC_Form_redraw; - } - ACK = 1; - } - break; - case redir_START: - ((NUMBOX*)(form->controls[3]))->value = redirectorvars->cmdin_ep->dest; - form->flags |= BC_Form_redraw; - /*redir_dest = RXframe->srcAddr; - setbaud(redir_baud); - redirector = 1; - ACK = 1;*/ - break; - case redir_STOP: - /*redirector = 0; - setbaud(baud_default); - ACK = 1;*/ - break; - case redir_PING: - ACK = 1; - break; - } - - redirectorvars->cmdin_ep->flags &= ~EPnewdata; - - if(ACK) { - redirectorvars->cmdout_ep->data[0] = redir_ACK; - redirectorvars->cmdout_ep->dest = redirectorvars->cmdin_ep->dest; - redirectorvars->cmdout_ep->bufferlen = 1; - redirectorvars->cmdout_ep->flags |= EPnewdata; - RF_changestate(RFtx); - } - } -} - - -void redirector_test(FORM* form, CONTROL* control) { - - if(uart0_incbuffer) { - cBufferAdd(uart0_incbuffer,'a'); - cBufferAdd(uart0_incbuffer,'b'); - cBufferAdd(uart0_incbuffer,'c'); - } -} - - -// menu (Tool>Redirector) -void uarto_redirector(void) { - - struct redirector_ redirectorvars; - - cBufferInit(&redirectorvars.incbuffer, redirectorvars.inbuffer, redirectorbuffersize); - cBufferInit(&redirectorvars.outcbuffer, redirectorvars.outbuffer, redirectorbuffersize); - - const char* listbox1items[8] = {"1200","2400","4800","9600","14400","19200","28800","38400"}; - - const LABEL label1 = {BC_Labelnotab,0,20,70,9,BOLDFONT,0,"Baud",0}; - const LABEL label2 = {BC_Labelnotab,0,32,70,9,BOLDFONT,0,"Zieladresse",0}; - LISTBOX listbox1 = {BC_Listbox,78,20,40,10,SMALLFONT,5,8,(char**)listbox1items,NULL,NULL}; - NUMBOX numbox1 = {BC_Numbox,78,32,20,9,SMALLFONT,1,0,255,NULL,NULL}; - NUMBOX numbox2 = {BC_Numbox | BC_NoTabStop,0,100,20,9,SMALLFONT,redirectorvars.outcbuffer.len,0,redirectorbuffersize,NULL,NULL}; - BUTTON button1 = {BC_Button,10,120,48,15,SMALLFONT,0,"Start",redirector_start_click}; - BUTTON button2 = {BC_Button | BC_Disabled,70,120,48,15,SMALLFONT,0,"Stop",redirector_stop_click}; - const BUTTON button3 = {BC_Button, 0,50,48,15,SMALLFONT,0,"test",redirector_test}; - - CONTROL* controls[8] = { (CONTROL*)&label1, - (CONTROL*)&label2, - (CONTROL*)&listbox1, - (CONTROL*)&numbox1, - (CONTROL*)&numbox2, - (CONTROL*)&button1, - (CONTROL*)&button2, - (CONTROL*)&button3}; - - FORM form = {"Com redirector","",NULL,NULL,redirector_timer,(unsigned long)&redirectorvars,controls,2,8,0,2}; - - redirectorvars.dataout_ep = openEP(&redirectorvars.incbuffer, 0, packet_redirDAT); - redirectorvars.datain_ep = openEP(&redirectorvars.outcbuffer, 0, packet_redirDAT); - redirectorvars.cmdout_ep = openEP(0, 0, packet_redirCMD); - redirectorvars.cmdin_ep = openEP(0, 0, packet_redirCMD); - - if(redirectorvars.dataout_ep && redirectorvars.datain_ep && redirectorvars.cmdout_ep && redirectorvars.cmdin_ep) { - redirectorvars.dataout_ep->flags |= EPoutput | EPtypecbuffer; - redirectorvars.datain_ep->flags |= EPinput | EPtypecbuffer; - redirectorvars.cmdout_ep->flags |= EPoutput | EPtypedata | EPenabled; - redirectorvars.cmdin_ep->flags |= EPinput | EPtypedata | EPenabled; - form_exec(&form); - } - else { - msgbox(30,BC_OKOnly | BC_DefaultButton1,"Fehler:\nKein freier RF Endpoint\nverfuegbar.\n"); - } - - redirector_stop_click(&form,form.controls[6]); - - closeEP(redirectorvars.datain_ep); - closeEP(redirectorvars.dataout_ep); - closeEP(redirectorvars.cmdin_ep); - closeEP(redirectorvars.cmdout_ep); - -} diff --git a/boop/trunk/serial/redirector.h b/boop/trunk/serial/redirector.h deleted file mode 100644 index 428fbe8..0000000 --- a/boop/trunk/serial/redirector.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - redirector.h - serial port redirector - Copyright (C) 2009 Telekatz - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef REDIRECTOR_H -#define REDIRECTOR_H - -#define redir_ACK 0 -#define redir_SET 1 -#define redir_START 2 -#define redir_STOP 3 -#define redir_PING 4 - -#define baud_1200 0 -#define baud_2400 1 -#define baud_4800 2 -#define baud_9600 3 -#define baud_14400 4 -#define baud_19200 5 -#define baud_28800 6 -#define baud_38400 7 -#define baud_57600 8 -#define baud_115200 9 - -void uarto_redirector(void); - -#endif diff --git a/boop/trunk/serial/serial.c b/boop/trunk/serial/serial.c deleted file mode 100644 index de8dc65..0000000 --- a/boop/trunk/serial/serial.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * minor changes (c) 2007 ch.klippel - * - * (C) Copyright 2004 - * DAVE Srl - * http://www.dave-tech.it - * http://www.wawnet.biz - * mailto:info@wawnet.biz - * - * (C) Copyright 2002-2004 - * Wolfgang Denk, DENX Software Engineering, - * - * (C) Copyright 2002 - * Sysgo Real-Time Solutions, GmbH - * Marius Groeger - * - * (C) Copyright 2002 - * Sysgo Real-Time Solutions, GmbH - * Alex Zuepke - * - * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) - * - * 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 - * - */ - - -#include "lpc2220.h" -#include "serial.h" -#include "irq.h" -#include "backlight.h" -#include "buffer.h" - -extern const char hval[16]; - -extern void uart0_irq(void); - -/* flush serial input queue. returns 0 on success or negative error - * number otherwise - */ -int serial_flush_input(void) -{ - volatile unsigned int tmp; - - /* keep on reading as long as the receiver is not empty */ - while(RX_DATA(U0LSR)) { - tmp = GET_CHAR(U0RBR); - } - - return 0; -} - - -/* flush output queue. returns 0 on success or negative error number - * otherwise - */ -int serial_flush_output(void) -{ - /* wait until the transmitter is no longer busy */ - while(TX_READY(U0LSR)==0) { - } - - return 0; -} - - -void serial_setbrg (unsigned int baudrate) -{ - - /* get correct divisor */ - /*for PCLK 15 Mhz */ - U0LCR = 0x83; - - switch(baudrate) { - - case 75: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 3; - break; - - case 150: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 1; - break; - - case 300: - U0DLL = 5; - U0DLM = 195; - U0FDR = (1 << 4) + 0; - break; - - case 600: - U0DLL = 2; - U0DLM = 78; - U0FDR = (4 << 4) + 1; - break; - - case 1200: - U0DLL = 1; - U0DLM = 39; - U0FDR = (4 << 4) + 1; - break; - - case 2400: - U0DLL = 186; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 4800: - U0DLL = 93; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 9600: - U0DLL = 71; - U0DLM = 0; - U0FDR = (8 << 4) + 3; - break; - - case 14400: - U0DLL = 31; - U0DLM = 0; - U0FDR = (10 << 4) + 11; - break; - - case 19200: - U0DLL = 38; - U0DLM = 0; - U0FDR = (14 << 4) + 4; - break; - - case 28800: - U0DLL = 24; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 38400: - U0DLL = 19; - U0DLM = 0; - U0FDR = (14 << 4) + 4; - break; - - case 57600: - U0DLL = 12; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 115200: - U0DLL = 6; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - - case 230400: - U0DLL = 3; - U0DLM = 0; - U0FDR = (14 << 4) + 5; - break; - } - U0LCR = 0x03; - - serial_flush_output(); - serial_flush_input(); -} - - -/* - * Initialise the serial port with the given baudrate. The settings - * are always 8 data bits, no parity, 1 stop bit, no start bits. - * - */ -int serial_init (void) -{ -// PINSEL0=0x05; // pin select -> tx, rx - serial_setbrg (DEFAULTBRG); -// serial_setbrg (57600); - U0FCR = 0x07; // enable fifo - uart0_incbuffer = 0; - uart0_outcbuffer = 0; - - // enable IRQ5 for UART0 - VICVectAddr5 = (unsigned long)&(uart0_irq); - VICVectCntl5 = VIC_SLOT_EN | INT_SRC_UART0; - VICIntEnable = INT_UART0; - U0IER = IER_RBR | IER_RXLS; - return (0); -} - - -/* - * Output a single byte to the serial port. - */ -void serial_putc (const char c) -{ - // proper CRLF transmission - if (c == '\n') - serial_putc('\r'); - - /* wait for room in the transmit FIFO */ - while(TX_READY(U0LSR)==0); - - PUT_CHAR(U0THR,c); -} - -void serial_putbyte (const char c) -{ - /* wait for room in the transmit FIFO */ - while(TX_READY(U0LSR)==0); - - PUT_CHAR(U0THR,c); -} -/* - * Read a single byte from the serial port. Returns 1 on success, 0 - * otherwise. When the function is succesfull, the character read is - * written into its argument c. - */ -int serial_tstc (void) -{ - return (RX_DATA(U0LSR)); -} - -/* - * Read a single byte from the serial port. Returns 1 on success, 0 - * otherwise. When the function is succesfull, the character read is - * written into its argument c. - */ -int serial_getc (void) -{ - int rv; - - for(;;) { - rv = serial_tstc(); - - if(rv > 0) - return (GET_CHAR(U0RBR)); - } -} - -void -serial_puts (const char *s) -{ - while (*s != 0) { - serial_putc (*s++); - } -} - -void putHexC(const unsigned char v) -{ - serial_putc(hval[v>>4]); - serial_putc(hval[v & 0x0F]); -} - -void putHexS(const unsigned short v) -{ - putHexC(v >> 8); - putHexC(v & 0xFF); -} - -void putHexW(const unsigned long v) -{ - putHexS(v >> 16); - putHexS(v & 0xFFFF); -} - -void serial_interactive(void) { - int ch = serial_getc(); - switch (ch) { - case '.': - serial_puts("Betty Boop ("__DATE__ " " __TIME__ ")\n"); - break; - case '0': - setBacklight(0x00); // pwm value - break; - case '1': - setBacklight(0x1F); // pwm value - break; - case '2': - setBacklight(0x3F); // pwm value - break; - default: - serial_putc(ch); - } -} diff --git a/boop/trunk/serial/serial.h b/boop/trunk/serial/serial.h deleted file mode 100644 index 292174f..0000000 --- a/boop/trunk/serial/serial.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - serial.h - serial port functions - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef BOOP_SERIAL_H -#define BOOP_SERIAL_H - -#define USRRxData (1 << 0) -#define USRTxHoldEmpty (1 << 6) - -#define IER_RBR 1 -#define IER_THRE 2 -#define IER_RXLS 4 - -#define IIR_RLS 0x06 -#define IIR_RDA 0x04 -#define IIR_CTI 0x0c -#define IIR_THRE 0x02 - -#define GET_CHAR(p) p -#define PUT_CHAR(p,c) (p= (unsigned )(c)) -#define TX_READY(s) ((s) & USRTxHoldEmpty) -#define RX_DATA(s) ((s) & USRRxData) - -#define DEFAULTBRG 115200 - -struct cBuffer_* uart0_incbuffer; -struct cBuffer_* uart0_outcbuffer; - -int serial_flush_input(void); -int serial_flush_output(void); -void serial_setbrg (unsigned int baudrate); -int serial_init (void); -void serial_putc (const char c); -void serial_putbyte (const char c); -int serial_tstc (void); -int serial_getc (void); -void serial_puts (const char *s); - -void putHexC(const unsigned char v); -void putHexS(const unsigned short v); -void putHexW(const unsigned long v); - -void serial_interactive(void); - -#endif /* BOOP_SERIAL_H */ diff --git a/boop/trunk/serial/serirq.c b/boop/trunk/serial/serirq.c deleted file mode 100644 index 8216acb..0000000 --- a/boop/trunk/serial/serirq.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - serirq.c - serial interrupr - Copyright (C) 2009 - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "backlight.h" -#include "lpc2220.h" -#include "serial.h" -#include "buffer.h" - -//volatile int uart0_active = 0; - -void uart0_irq(void) { - char st = U0IIR & 0x0f; - - // IRQ only valid when IIR_bit_0 == 0 - if (st & 1) - return; - - switch (st) { - case IIR_RLS: // Receive Line Status - putHexW(U0LSR); - serial_puts(" RLS?!\n"); - - break; - case IIR_RDA: // Receive Data Available - case IIR_CTI: // Character Time-out indication - if(uart0_incbuffer) { - while(U0LSR & (1 << 0)) { - cBufferAdd(uart0_incbuffer,U0RBR); - } - } - else { - setBacklight(BL_AUTO); - serial_interactive(); - } - break; - case IIR_THRE: - if(uart0_outcbuffer) { - if(uart0_outcbuffer->len) { - unsigned char x = 14; - while(x-- && uart0_outcbuffer->len) { - U0THR = cBufferGet(uart0_outcbuffer); - } - } - else { - U0IER &= ~IER_THRE; - } - } - else { - serial_puts("THRE?!\n"); - } - - } - -} - - diff --git a/boop/trunk/sound3.h b/boop/trunk/sound3.h deleted file mode 100644 index 01655d7..0000000 --- a/boop/trunk/sound3.h +++ /dev/null @@ -1,1571 +0,0 @@ -#define sound3_len 25060 -const unsigned char sound3_data[] = { -0x80,0x80,0x80,0x80, -0x7F,0x7F,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80, -0x7F,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x81, -0x81,0x82,0x82,0x81,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x81,0x81,0x81,0x81,0x80, -0x80,0x80,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x80, -0x80,0x80,0x80,0x80,0x81,0x81,0x82,0x81,0x81,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F, -0x7F,0x80,0x80,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x80,0x81,0x81, -0x81,0x81,0x80,0x7F,0x7F,0x7E,0x7E,0x7F,0x80,0x80,0x81,0x81,0x81,0x81,0x81,0x81, -0x81,0x81,0x81,0x81,0x80,0x80,0x81,0x82,0x83,0x83,0x83,0x83,0x82,0x81,0x81,0x80, -0x80,0x80,0x81,0x82,0x82,0x83,0x82,0x82,0x81,0x80,0x80,0x80,0x7F,0x7F,0x7F,0x7F, -0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x80,0x7F,0x7F,0x7F,0x80,0x80,0x81,0x81,0x81,0x81, -0x81,0x80,0x80,0x7F,0x7E,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x7F,0x7C,0x77,0x71,0x67, -0x5F,0x58,0x55,0x55,0x58,0x5B,0x5D,0x5D,0x5B,0x58,0x54,0x4D,0x42,0x38,0x3F,0x56, -0x6D,0x81,0x94,0xA6,0xB7,0xC1,0xC8,0xD0,0xDA,0xE3,0xE8,0xEA,0xE6,0xDE,0xD3,0xC5, -0xB7,0xAA,0x9F,0x9A,0x99,0x97,0x95,0x96,0x96,0x95,0x92,0x8F,0x8D,0x8E,0x8E,0x90, -0x8F,0x87,0x80,0x79,0x70,0x68,0x62,0x65,0x6B,0x6F,0x73,0x76,0x76,0x77,0x7B,0x7D, -0x77,0x72,0x6C,0x68,0x6B,0x72,0x7F,0x8A,0x8E,0x8C,0x83,0x6E,0x59,0x48,0x38,0x30, -0x2C,0x2B,0x2E,0x39,0x47,0x4E,0x54,0x5C,0x60,0x5E,0x58,0x56,0x5A,0x67,0x78,0x8D, -0xA2,0xB6,0xC1,0xC3,0xC0,0xBB,0xB2,0xAA,0xA1,0x93,0x89,0x85,0x83,0x80,0x81,0x84, -0x82,0x7D,0x72,0x63,0x55,0x48,0x40,0x3F,0x48,0x55,0x63,0x76,0x89,0x95,0x91,0x90, -0x89,0x83,0x7E,0x7B,0x7A,0x75,0x70,0x67,0x6D,0x75,0x7F,0x93,0xAB,0xB9,0xB6,0xAE, -0x9B,0x90,0x7B,0x6B,0x66,0x5F,0x5E,0x6A,0x76,0x7D,0x7F,0x82,0x85,0x7D,0x78,0x77, -0x82,0x89,0x99,0xAB,0xC3,0xC5,0xB3,0xA6,0xA0,0x93,0x85,0x8C,0x97,0x9F,0x9B,0x8A, -0x71,0x5C,0x53,0x57,0x62,0x77,0x88,0x9A,0xA6,0xAC,0xB0,0xB5,0xC5,0xD1,0xD6,0xCF, -0xCE,0xCE,0xC4,0xAE,0x97,0x81,0x71,0x65,0x5F,0x5D,0x5C,0x57,0x43,0x35,0x2C,0x27, -0x29,0x32,0x45,0x59,0x6B,0x76,0x75,0x74,0x78,0x7D,0x7D,0x77,0x71,0x73,0x78,0x70, -0x6A,0x63,0x55,0x4F,0x51,0x5B,0x57,0x54,0x60,0x6F,0x7A,0x8C,0xAB,0xCB,0xE5,0xEE, -0xD6,0xAD,0x84,0x6D,0x6F,0x7B,0x86,0x82,0x78,0x6C,0x5C,0x50,0x4E,0x53,0x59,0x6D, -0x74,0x7F,0x89,0x85,0x90,0x9F,0xB9,0xCA,0xCF,0xD3,0xD8,0xE1,0xE1,0xD2,0xB0,0x86, -0x6B,0x74,0x86,0x88,0x84,0x86,0x88,0x85,0x8C,0x98,0x97,0x95,0x93,0x92,0x8E,0x86, -0x87,0x8C,0x8D,0x8B,0x7E,0x6A,0x53,0x40,0x3C,0x3D,0x3C,0x48,0x5E,0x6F,0x7B,0x88, -0x8F,0x88,0x81,0x82,0x7D,0x72,0x6C,0x68,0x64,0x5B,0x56,0x5B,0x62,0x6A,0x6A,0x6F, -0x73,0x73,0x70,0x69,0x5F,0x5F,0x5C,0x54,0x57,0x5F,0x6B,0x77,0x86,0xA3,0xC9,0xDD, -0xD5,0xC9,0xC1,0xBA,0xB7,0xB6,0xB3,0xAA,0xA0,0x96,0x94,0x93,0x90,0x8A,0x87,0x7D, -0x71,0x67,0x5B,0x55,0x55,0x59,0x5B,0x5B,0x59,0x5F,0x79,0x8F,0x9B,0x9B,0x8F,0x86, -0x7E,0x7E,0x84,0x84,0x74,0x6B,0x6C,0x67,0x5D,0x54,0x51,0x5E,0x6E,0x6C,0x63,0x60, -0x67,0x73,0x7F,0x79,0x64,0x58,0x62,0x77,0x78,0x6B,0x63,0x5E,0x5C,0x5E,0x57,0x4F, -0x55,0x60,0x65,0x69,0x65,0x5D,0x60,0x6B,0x73,0x71,0x76,0x7F,0x8C,0x95,0x96,0x93, -0xA3,0xBE,0xC5,0xC4,0xCA,0xD6,0xD5,0xBC,0xAA,0x9F,0x97,0x9A,0xA4,0xA5,0xA6,0xAB, -0xAC,0xB1,0xB5,0xAC,0x9E,0x91,0x86,0x7E,0x83,0x8D,0x99,0xA7,0xAA,0xA4,0xA2,0x9E, -0x9D,0x9A,0x91,0x89,0x85,0x7B,0x73,0x79,0x83,0x81,0x72,0x68,0x62,0x5A,0x52,0x5A, -0x6E,0x86,0x98,0xA0,0xA3,0x9F,0x95,0x87,0x79,0x73,0x6D,0x68,0x66,0x68,0x69,0x6A, -0x6A,0x6D,0x6E,0x6C,0x6E,0x69,0x5F,0x59,0x5C,0x62,0x67,0x6B,0x6C,0x6C,0x6F,0x79, -0x80,0x7C,0x73,0x6D,0x68,0x68,0x6A,0x76,0x8C,0xA5,0xB6,0xBD,0xBD,0xB3,0xAB,0xAB, -0xAE,0xAF,0xB2,0xB3,0xA4,0x97,0x8D,0x81,0x76,0x69,0x62,0x63,0x60,0x58,0x4B,0x3B, -0x31,0x37,0x45,0x4E,0x56,0x5F,0x72,0x86,0x90,0x95,0x90,0x84,0x89,0x93,0x9B,0xA1, -0xA3,0xAA,0xA7,0xA0,0x96,0x96,0x97,0x91,0x96,0x99,0x99,0x95,0x8F,0x8C,0x89,0x8E, -0x94,0x8B,0x79,0x64,0x4B,0x37,0x2F,0x33,0x40,0x50,0x5E,0x69,0x63,0x57,0x53,0x50, -0x46,0x41,0x46,0x56,0x68,0x77,0x85,0x8F,0x92,0x9A,0xA2,0xA8,0xAC,0xB0,0xB1,0xB0, -0xB1,0xB7,0xB5,0xB0,0xAC,0xA5,0xA7,0xA8,0x9F,0x93,0x8A,0x87,0x8B,0x8A,0x85,0x7B, -0x6E,0x61,0x56,0x52,0x59,0x62,0x65,0x6B,0x77,0x81,0x7F,0x75,0x75,0x7E,0x86,0x8B, -0x8E,0x96,0x9E,0x9B,0x94,0x8F,0x89,0x92,0xA3,0xAE,0xB3,0xAD,0xA1,0x94,0x87,0x7B, -0x74,0x70,0x6C,0x69,0x61,0x55,0x48,0x47,0x52,0x63,0x71,0x73,0x75,0x77,0x7E,0x84, -0x7A,0x6E,0x70,0x77,0x7E,0x7C,0x79,0x7C,0x7C,0x79,0x75,0x70,0x71,0x76,0x7E,0x81, -0x84,0x85,0x7D,0x73,0x6F,0x75,0x81,0x84,0x88,0x88,0x7E,0x68,0x50,0x4F,0x60,0x72, -0x7D,0x84,0x80,0x6F,0x59,0x49,0x44,0x46,0x57,0x74,0x8B,0x91,0x8B,0x8A,0x8C,0x8B, -0x86,0x83,0x84,0x84,0x89,0x90,0x98,0xAA,0xBF,0xC9,0xCB,0xD1,0xCE,0xBD,0xAF,0xAC, -0xA8,0x9C,0x91,0x8A,0x88,0x8E,0x91,0x91,0x96,0xA2,0xAF,0xB3,0xAE,0x9D,0x86,0x73, -0x6C,0x6D,0x74,0x7F,0x7E,0x78,0x7E,0x89,0x8C,0x85,0x84,0x89,0x8B,0x8C,0x8A,0x81, -0x7D,0x85,0x8F,0x8E,0x87,0x8A,0x99,0xA7,0xAF,0xA9,0xA0,0x93,0x87,0x7D,0x76,0x76, -0x79,0x7E,0x7D,0x73,0x6B,0x67,0x6C,0x75,0x76,0x78,0x7A,0x7D,0x81,0x78,0x6B,0x66, -0x65,0x63,0x66,0x6B,0x6A,0x61,0x56,0x51,0x54,0x5F,0x69,0x75,0x82,0x8B,0x90,0x8C, -0x85,0x80,0x85,0x8C,0x8D,0x88,0x7B,0x67,0x57,0x4A,0x44,0x49,0x52,0x5A,0x65,0x6F, -0x70,0x71,0x6D,0x63,0x52,0x4A,0x45,0x42,0x49,0x55,0x66,0x75,0x7C,0x7D,0x78,0x73, -0x72,0x75,0x72,0x65,0x5F,0x64,0x71,0x7F,0x89,0x96,0xA6,0xB3,0xB4,0xB0,0xA9,0xA3, -0x9A,0x96,0x9A,0xA0,0xAB,0xB7,0xC0,0xC0,0xB9,0xA6,0x8E,0x7C,0x7A,0x7E,0x7C,0x79, -0x7A,0x79,0x75,0x71,0x78,0x83,0x87,0x86,0x7B,0x6B,0x67,0x6B,0x7A,0x91,0xA2,0xA7, -0xA9,0xAD,0xB0,0xB0,0xAE,0xA4,0x92,0x85,0x80,0x7F,0x7D,0x78,0x73,0x7F,0x98,0xA7, -0xA1,0x91,0x86,0x81,0x7B,0x6F,0x62,0x57,0x55,0x56,0x55,0x51,0x58,0x68,0x78,0x80, -0x80,0x7D,0x7B,0x80,0x89,0x92,0x8F,0x83,0x77,0x6F,0x6A,0x67,0x67,0x6C,0x6F,0x72, -0x73,0x73,0x78,0x80,0x82,0x7F,0x7A,0x7A,0x7F,0x86,0x92,0xA8,0xBD,0xC7,0xC7,0xC5, -0xC6,0xCB,0xC8,0xB8,0xA1,0x85,0x72,0x6C,0x6B,0x68,0x66,0x74,0x8E,0x9F,0xA5,0x9D, -0x88,0x6E,0x57,0x4E,0x51,0x5B,0x65,0x71,0x7B,0x80,0x76,0x65,0x5D,0x5D,0x61,0x5D, -0x52,0x4C,0x46,0x3C,0x3C,0x44,0x52,0x67,0x80,0x8F,0x90,0x87,0x80,0x7D,0x7A,0x7C, -0x81,0x83,0x7D,0x72,0x67,0x64,0x69,0x73,0x82,0x91,0xA1,0xAA,0xA4,0x91,0x7D,0x70, -0x69,0x6C,0x73,0x79,0x87,0x98,0xA6,0xB0,0xBB,0xD0,0xDE,0xDC,0xD8,0xD8,0xD1,0xBE, -0xA9,0x9E,0xA3,0xAE,0xAE,0xA2,0x8E,0x7B,0x74,0x78,0x7D,0x80,0x85,0x8A,0x8B,0x87, -0x7F,0x7E,0x83,0x87,0x83,0x76,0x6A,0x65,0x67,0x73,0x86,0x96,0x9F,0x9B,0x8C,0x7F, -0x75,0x6C,0x64,0x59,0x50,0x51,0x5A,0x64,0x68,0x66,0x68,0x74,0x84,0x8C,0x88,0x86, -0x86,0x7D,0x6D,0x64,0x5A,0x46,0x33,0x31,0x3B,0x41,0x3F,0x3A,0x3C,0x43,0x4F,0x5B, -0x61,0x61,0x69,0x74,0x78,0x7A,0x7A,0x7C,0x7F,0x7E,0x7E,0x83,0x8B,0x94,0x9B,0x9D, -0x92,0x88,0x89,0x89,0x80,0x76,0x74,0x7A,0x7E,0x80,0x83,0x88,0x8B,0x8F,0x98,0xA3, -0xAC,0xB0,0xA9,0x9D,0x97,0x99,0x96,0x8A,0x7A,0x78,0x7D,0x7D,0x77,0x73,0x7F,0x94, -0xA8,0xB1,0xAE,0xA9,0xA6,0x9D,0x8B,0x7D,0x72,0x6F,0x75,0x80,0x8B,0x90,0x90,0x84, -0x72,0x6B,0x74,0x79,0x76,0x7B,0x7D,0x72,0x6C,0x74,0x81,0x8A,0x8C,0x84,0x71,0x5F, -0x56,0x58,0x5C,0x59,0x51,0x4D,0x51,0x5F,0x6A,0x6B,0x73,0x86,0x93,0x98,0x98,0x96, -0x90,0x89,0x8B,0x9B,0xAC,0xB3,0xB5,0xB6,0xB9,0xB6,0xAE,0xA5,0x9F,0x9C,0xA0,0xA9, -0xAB,0xA4,0x9A,0x97,0x97,0x96,0x93,0x8F,0x88,0x7A,0x6D,0x65,0x68,0x74,0x7B,0x7D, -0x7A,0x76,0x78,0x83,0x92,0x9A,0x97,0x90,0x8B,0x8F,0x92,0x89,0x7D,0x79,0x77,0x6F, -0x65,0x5D,0x5E,0x6C,0x80,0x88,0x85,0x83,0x82,0x81,0x7C,0x77,0x74,0x77,0x7C,0x7F, -0x81,0x82,0x83,0x7C,0x6B,0x5B,0x56,0x5C,0x5F,0x5C,0x57,0x54,0x53,0x50,0x51,0x5D, -0x71,0x7D,0x83,0x87,0x86,0x84,0x85,0x8C,0x9B,0xA7,0xA2,0x92,0x88,0x88,0x8C,0x96, -0xA1,0xA3,0x98,0x89,0x7F,0x78,0x70,0x6C,0x72,0x7B,0x7A,0x73,0x6E,0x6E,0x74,0x78, -0x7A,0x7D,0x81,0x81,0x74,0x63,0x59,0x5B,0x65,0x6D,0x72,0x75,0x77,0x7A,0x81,0x83, -0x86,0x8C,0x84,0x76,0x6D,0x70,0x7C,0x88,0x8A,0x86,0x87,0x8D,0x8A,0x8A,0x96,0xA0, -0x98,0x8A,0x88,0x94,0x9F,0x9F,0x99,0x8E,0x84,0x81,0x7C,0x7B,0x80,0x82,0x7F,0x7A, -0x75,0x72,0x77,0x84,0x92,0x9B,0x9C,0x93,0x85,0x7A,0x78,0x84,0x94,0x9C,0x9A,0x8E, -0x84,0x87,0x8C,0x87,0x76,0x62,0x4E,0x41,0x43,0x56,0x6D,0x75,0x73,0x6F,0x76,0x84, -0x8C,0x8C,0x8B,0x87,0x81,0x7B,0x79,0x7E,0x7F,0x7B,0x74,0x74,0x7E,0x8B,0x92,0x93, -0x83,0x6F,0x67,0x65,0x61,0x5C,0x5A,0x5C,0x62,0x68,0x6B,0x6F,0x6D,0x63,0x5F,0x68, -0x74,0x7B,0x7D,0x7C,0x87,0x9C,0xAA,0xAA,0x9F,0x99,0xA3,0xA8,0xA5,0xA5,0xA3,0xA0, -0xA0,0x9E,0x9F,0xA7,0xA9,0xA4,0x9A,0x90,0x8D,0x8E,0x8A,0x85,0x81,0x7D,0x7A,0x76, -0x76,0x7C,0x86,0x8C,0x89,0x85,0x7E,0x76,0x70,0x6B,0x6B,0x71,0x74,0x6E,0x66,0x69, -0x79,0x8D,0x9B,0xA1,0x9D,0x96,0x93,0x92,0x8F,0x8E,0x8E,0x8C,0x86,0x81,0x83,0x85, -0x80,0x7B,0x7E,0x82,0x80,0x7F,0x81,0x81,0x7C,0x7D,0x7E,0x79,0x7A,0x7B,0x74,0x6D, -0x6B,0x73,0x80,0x92,0x9A,0x90,0x89,0x89,0x85,0x79,0x67,0x5B,0x63,0x75,0x7F,0x7B, -0x72,0x6E,0x76,0x80,0x88,0x8C,0x91,0x97,0x97,0x97,0x99,0x93,0x83,0x74,0x71,0x70, -0x6D,0x66,0x62,0x64,0x70,0x84,0x98,0xA2,0xA0,0x9C,0x97,0x91,0x8B,0x84,0x7E,0x7A, -0x72,0x67,0x65,0x76,0x8B,0x8F,0x87,0x82,0x86,0x8B,0x86,0x75,0x66,0x6A,0x75,0x7D, -0x83,0x85,0x85,0x89,0x90,0x90,0x85,0x74,0x62,0x50,0x42,0x46,0x5D,0x6D,0x6E,0x72, -0x81,0x8F,0x91,0x8B,0x84,0x7E,0x76,0x7A,0x8A,0x92,0x8C,0x87,0x8B,0x8F,0x8B,0x80, -0x75,0x6D,0x61,0x54,0x4D,0x53,0x5C,0x5D,0x55,0x46,0x40,0x4B,0x5B,0x67,0x6E,0x70, -0x6F,0x72,0x7C,0x85,0x81,0x75,0x70,0x77,0x86,0x91,0x93,0x96,0x9A,0x9D,0xA4,0xAE, -0xB8,0xB3,0xA2,0x94,0x8C,0x82,0x7C,0x81,0x8E,0x9A,0x9B,0x9B,0xA6,0xB0,0xAE,0x9E, -0x8D,0x85,0x7D,0x71,0x76,0x8E,0xA1,0xA5,0x9F,0x99,0x91,0x86,0x86,0x89,0x88,0x77, -0x64,0x61,0x6D,0x7C,0x87,0x8D,0x8A,0x80,0x76,0x70,0x74,0x83,0x8D,0x89,0x7E,0x7C, -0x79,0x73,0x75,0x7F,0x7D,0x6C,0x5C,0x63,0x79,0x81,0x7E,0x7B,0x73,0x6E,0x69,0x60, -0x60,0x6A,0x70,0x77,0x84,0x94,0x9C,0x95,0x8C,0x87,0x85,0x8D,0x91,0x8F,0x8E,0x8C, -0x8D,0x93,0x9F,0xAC,0xB1,0xA5,0x91,0x87,0x88,0x89,0x87,0x82,0x7B,0x7B,0x80,0x85, -0x92,0xA7,0xB1,0xAF,0xAB,0xA5,0xA0,0x99,0x88,0x72,0x60,0x52,0x52,0x64,0x7B,0x8B, -0x97,0x9D,0x97,0x82,0x6E,0x6A,0x73,0x74,0x69,0x62,0x65,0x68,0x63,0x62,0x6E,0x82, -0x95,0x90,0x7E,0x78,0x80,0x80,0x6D,0x5F,0x65,0x77,0x83,0x84,0x8B,0x95,0x98,0x9E, -0xA6,0x9F,0x90,0x8E,0x89,0x75,0x61,0x55,0x53,0x56,0x5B,0x63,0x6D,0x7B,0x7E,0x73, -0x66,0x5D,0x58,0x55,0x55,0x56,0x50,0x4D,0x5E,0x7B,0x96,0xA8,0xA8,0x99,0x88,0x7B, -0x79,0x84,0x8A,0x8C,0x94,0x9B,0x93,0x86,0x85,0x8A,0x93,0x95,0x85,0x73,0x6B,0x66, -0x64,0x69,0x69,0x6A,0x71,0x71,0x73,0x7E,0x8D,0x98,0x94,0x8A,0x8E,0x9A,0x9C,0x94, -0x90,0x8C,0x87,0x82,0x7C,0x77,0x79,0x85,0x99,0xA2,0x97,0x8A,0x83,0x82,0x89,0x89, -0x81,0x84,0x90,0x8E,0x82,0x7F,0x81,0x78,0x68,0x5E,0x5F,0x5D,0x5A,0x5E,0x5C,0x56, -0x51,0x56,0x62,0x74,0x83,0x85,0x87,0x8B,0x8C,0x8E,0x94,0x95,0x8C,0x88,0x94,0xAC, -0xBC,0xBC,0xBC,0xBE,0xB5,0xAB,0x9F,0x91,0x84,0x7B,0x70,0x6F,0x78,0x7E,0x79,0x78, -0x78,0x69,0x59,0x51,0x45,0x3A,0x33,0x31,0x36,0x3E,0x47,0x53,0x62,0x69,0x68,0x67, -0x6F,0x7E,0x88,0x8E,0x92,0x9A,0xA9,0xB9,0xBE,0xBF,0xC1,0xBF,0xBB,0xB0,0xA1,0x9A, -0x9E,0xA5,0xA8,0xA9,0xA4,0x99,0x8B,0x7F,0x78,0x6A,0x5F,0x60,0x61,0x62,0x6A,0x6E, -0x6D,0x70,0x76,0x7C,0x81,0x91,0x9D,0x9A,0x92,0x86,0x80,0x82,0x87,0x8A,0x94,0xA4, -0xAD,0xAD,0xA7,0xA7,0xAF,0xAC,0xA4,0x97,0x82,0x7F,0x8C,0x98,0xA3,0xA2,0x8D,0x7A, -0x75,0x70,0x66,0x60,0x63,0x65,0x64,0x61,0x63,0x65,0x63,0x5E,0x58,0x58,0x5A,0x56, -0x58,0x67,0x78,0x81,0x7D,0x7F,0x8B,0x91,0x8B,0x83,0x83,0x84,0x82,0x85,0x8E,0x91, -0x8A,0x85,0x7B,0x6B,0x6F,0x81,0x95,0xA5,0xA8,0x9B,0x93,0x97,0x96,0x8F,0x91,0x97, -0x8F,0x75,0x5A,0x58,0x65,0x71,0x79,0x80,0x82,0x7D,0x78,0x75,0x70,0x69,0x62,0x61, -0x64,0x62,0x64,0x6F,0x80,0x8F,0x9D,0xAD,0xB5,0xAE,0x98,0x7D,0x73,0x72,0x70,0x6C, -0x69,0x6C,0x6F,0x6E,0x6C,0x6B,0x68,0x69,0x69,0x64,0x5B,0x4E,0x46,0x47,0x54,0x63, -0x6D,0x6F,0x71,0x72,0x70,0x74,0x77,0x75,0x71,0x68,0x65,0x73,0x89,0x96,0x9B,0xA0, -0xA8,0xA8,0xA8,0xAA,0xA9,0xA2,0x99,0x90,0x8D,0x8D,0x8E,0x8E,0x90,0x89,0x7D,0x75, -0x6C,0x6F,0x7B,0x7B,0x73,0x73,0x77,0x7B,0x78,0x6F,0x6A,0x6A,0x67,0x6D,0x7B,0x7A, -0x7B,0x84,0x89,0x86,0x80,0x85,0x8B,0x87,0x83,0x7F,0x7C,0x87,0x96,0xA8,0xBF,0xC7, -0xBD,0xBD,0xCB,0xC6,0xAE,0x93,0x82,0x78,0x73,0x75,0x7D,0x86,0x82,0x70,0x5D,0x60, -0x73,0x81,0x85,0x82,0x73,0x66,0x6C,0x7F,0x8D,0x8C,0x82,0x76,0x69,0x60,0x5E,0x5E, -0x60,0x63,0x69,0x77,0x83,0x87,0x95,0x9D,0x9C,0xA3,0xA5,0x9A,0x93,0x99,0x9D,0x9E, -0x9E,0x9E,0x9D,0x95,0x8A,0x7A,0x72,0x77,0x7B,0x84,0x95,0x92,0x83,0x81,0x87,0x8B, -0x88,0x7E,0x74,0x69,0x5B,0x5D,0x6A,0x6E,0x6C,0x69,0x69,0x6C,0x6F,0x72,0x6E,0x64, -0x66,0x73,0x89,0xA0,0xAF,0xB9,0xC1,0xB4,0x9D,0x95,0x96,0x8B,0x84,0x83,0x73,0x59, -0x54,0x6E,0x8D,0x9C,0x95,0x7D,0x69,0x69,0x73,0x6A,0x5F,0x6A,0x79,0x7F,0x7B,0x7B, -0x7F,0x87,0x88,0x83,0x7C,0x74,0x6D,0x71,0x78,0x7B,0x78,0x7D,0x89,0x8F,0x8A,0x7A, -0x70,0x6B,0x6A,0x73,0x7A,0x7A,0x81,0x8D,0x8F,0x91,0x94,0x90,0x88,0x7D,0x73,0x72, -0x74,0x7A,0x82,0x81,0x82,0x89,0x89,0x80,0x79,0x71,0x6D,0x74,0x84,0x8D,0x85,0x74, -0x6C,0x68,0x65,0x63,0x5D,0x5B,0x64,0x66,0x5F,0x67,0x78,0x8A,0x9A,0xA2,0x9E,0x92, -0x8B,0x8E,0x96,0x99,0xA0,0xAE,0xB0,0xA5,0x91,0x84,0x77,0x67,0x5F,0x60,0x5F,0x58, -0x4A,0x41,0x4B,0x55,0x65,0x7B,0x7E,0x7E,0x84,0x8B,0x89,0x82,0x7C,0x78,0x79,0x7D, -0x80,0x86,0x89,0x8C,0x90,0x8D,0x89,0x8E,0x95,0x92,0x8B,0x86,0x8B,0x96,0x99,0x97, -0x93,0x93,0x9A,0xA3,0x9E,0x87,0x73,0x67,0x6A,0x6B,0x66,0x64,0x65,0x6B,0x74,0x7A, -0x78,0x72,0x6B,0x68,0x6E,0x75,0x72,0x69,0x6C,0x7D,0x83,0x79,0x6D,0x72,0x7F,0x85, -0x8E,0x9A,0xA6,0xAF,0xAE,0xA8,0xA1,0x97,0x91,0x9A,0xA5,0xA3,0x9E,0x9D,0x9B,0x96, -0x8D,0x87,0x8C,0x8F,0x7E,0x6C,0x6E,0x74,0x81,0x94,0x9D,0x93,0x83,0x7E,0x86,0x8D, -0x86,0x7A,0x73,0x6F,0x69,0x65,0x63,0x62,0x64,0x67,0x67,0x6D,0x79,0x7D,0x7B,0x81, -0x8D,0x96,0x9B,0xA1,0xA2,0xA0,0x9F,0xA7,0xB0,0xAF,0xA8,0x9D,0x95,0x8F,0x8D,0x8B, -0x8A,0x8F,0x92,0x83,0x6F,0x6B,0x73,0x77,0x77,0x71,0x65,0x57,0x4F,0x54,0x5B,0x5E, -0x5F,0x5A,0x59,0x62,0x6E,0x7A,0x7F,0x83,0x86,0x83,0x82,0x7A,0x6D,0x6D,0x7A,0x8F, -0xA5,0xB6,0xAF,0x97,0x8D,0x93,0x9B,0xA6,0x9E,0x88,0x7E,0x79,0x70,0x68,0x66,0x70, -0x84,0x99,0xA1,0x9A,0x90,0x87,0x7A,0x69,0x56,0x43,0x34,0x31,0x3C,0x4F,0x64,0x76, -0x7E,0x82,0x86,0x87,0x85,0x81,0x78,0x74,0x80,0x91,0x95,0x9A,0xA5,0xA1,0x92,0x87, -0x8C,0x94,0x8D,0x89,0x8B,0x88,0x84,0x7D,0x71,0x6A,0x5D,0x58,0x60,0x67,0x6D,0x73, -0x79,0x81,0x82,0x7C,0x71,0x6A,0x67,0x64,0x62,0x67,0x74,0x84,0x8F,0x96,0xA0,0xA9, -0xAF,0xB1,0xB4,0xB1,0x9D,0x8D,0x88,0x8A,0x8E,0x91,0x98,0xA2,0x9F,0x92,0x86,0x72, -0x60,0x56,0x48,0x3E,0x3C,0x3A,0x3B,0x3E,0x47,0x55,0x61,0x6D,0x74,0x7A,0x79,0x73, -0x78,0x83,0x80,0x6C,0x66,0x76,0x8C,0x9A,0xA6,0xB1,0xB4,0xB3,0xAA,0x9B,0x91,0x8D, -0x90,0x91,0x95,0xA0,0xAA,0xB7,0xBC,0xB5,0xA5,0x8D,0x72,0x61,0x62,0x64,0x61,0x63, -0x69,0x6C,0x6D,0x6D,0x73,0x74,0x6B,0x64,0x5E,0x57,0x5C,0x6B,0x79,0x86,0x92,0x9D, -0x99,0x92,0x9A,0xA5,0xAF,0xAB,0xA4,0xA5,0x9D,0x8E,0x88,0x92,0xA0,0x98,0x86,0x89, -0x95,0xA3,0xB4,0xB7,0xAA,0x9D,0x90,0x83,0x7C,0x74,0x64,0x54,0x5D,0x69,0x61,0x51, -0x4F,0x54,0x55,0x57,0x60,0x62,0x5E,0x63,0x6D,0x74,0x7A,0x7F,0x83,0x8B,0x9D,0xB2, -0xBD,0xBE,0xB9,0xB3,0xAA,0x9B,0x8F,0x8E,0x98,0x92,0x85,0x87,0x93,0xAA,0xB5,0xB8, -0xB5,0x9E,0x7F,0x70,0x6F,0x68,0x57,0x4A,0x4E,0x59,0x61,0x6C,0x74,0x74,0x6F,0x62, -0x5E,0x61,0x5D,0x56,0x58,0x6C,0x87,0x8F,0x90,0x91,0x89,0x83,0x8D,0x90,0x86,0x83, -0x8D,0x9A,0x8C,0x6C,0x60,0x75,0x92,0x98,0x90,0x89,0x78,0x6C,0x72,0x78,0x76,0x72, -0x65,0x5A,0x57,0x58,0x5B,0x67,0x72,0x6D,0x61,0x63,0x6D,0x71,0x6B,0x65,0x6E,0x79, -0x76,0x73,0x7A,0x84,0x88,0x83,0x8A,0x9D,0xAB,0xA6,0x8C,0x7D,0x87,0x91,0x95,0xA0, -0xA9,0xA1,0x96,0x8D,0x8F,0xA0,0xAC,0xA3,0x8A,0x73,0x6F,0x74,0x70,0x5B,0x49,0x49, -0x60,0x79,0x84,0x7D,0x73,0x78,0x7B,0x81,0x87,0x78,0x66,0x67,0x6D,0x6D,0x71,0x7E, -0x86,0x8B,0x95,0xA5,0xAD,0xAF,0xA8,0x99,0x8D,0x83,0x80,0x83,0x7E,0x7C,0x7E,0x7B, -0x75,0x71,0x71,0x71,0x69,0x62,0x6B,0x76,0x79,0x72,0x6A,0x74,0x7B,0x79,0x7B,0x85, -0x99,0xA3,0xA0,0x99,0x8F,0x8C,0x8A,0x89,0x87,0x7D,0x78,0x7F,0x88,0x95,0x9E,0x9A, -0x91,0x91,0x95,0x99,0x91,0x82,0x86,0x82,0x76,0x76,0x81,0x8A,0x87,0x7B,0x7C,0x7B, -0x6B,0x65,0x6F,0x72,0x77,0x7F,0x6C,0x54,0x5C,0x78,0x81,0x76,0x76,0x79,0x71,0x6A, -0x6D,0x79,0x81,0x77,0x75,0x8C,0x9B,0x99,0x9D,0xA7,0xA8,0xA4,0xA0,0xA1,0x9E,0x8B, -0x6F,0x63,0x6C,0x74,0x77,0x72,0x66,0x67,0x6E,0x73,0x7A,0x80,0x81,0x75,0x71,0x85, -0x88,0x77,0x73,0x7E,0x82,0x82,0x83,0x7E,0x8C,0x9D,0x9A,0xA2,0xA6,0x9D,0x96,0x90, -0x8B,0x8B,0x92,0x91,0x8F,0x9C,0xA6,0xAA,0xAB,0xA8,0x9F,0x93,0x83,0x70,0x64,0x60, -0x65,0x74,0x81,0x80,0x7C,0x7D,0x7B,0x80,0x7C,0x78,0x82,0x89,0x80,0x6B,0x62,0x72, -0x7E,0x82,0x83,0x7B,0x6E,0x6E,0x77,0x83,0x8A,0x8E,0x87,0x79,0x7C,0x89,0x89,0x83, -0x79,0x6C,0x61,0x64,0x72,0x7E,0x8C,0x92,0x82,0x6A,0x5F,0x64,0x6C,0x70,0x64,0x57, -0x63,0x76,0x85,0x91,0x93,0x7F,0x70,0x75,0x78,0x7C,0x81,0x7D,0x7C,0x80,0x7F,0x90, -0xA3,0xA0,0x98,0x99,0x95,0x86,0x7F,0x77,0x69,0x5F,0x61,0x69,0x6F,0x72,0x75,0x7A, -0x7E,0x74,0x69,0x6A,0x6B,0x70,0x7E,0x82,0x73,0x6F,0x84,0x9D,0xAA,0xAD,0xAA,0xA0, -0x96,0x88,0x75,0x6C,0x6A,0x5D,0x5B,0x64,0x72,0x7D,0x7F,0x78,0x75,0x77,0x70,0x68, -0x6D,0x73,0x73,0x73,0x70,0x79,0x81,0x7F,0x7E,0x88,0x91,0x89,0x7C,0x87,0x91,0x82, -0x74,0x7D,0x8D,0x92,0x8B,0x94,0x9E,0x9D,0x9B,0x9B,0xAC,0xB0,0x90,0x7A,0x86,0x8B, -0x84,0x7C,0x65,0x54,0x57,0x62,0x70,0x7D,0x81,0x78,0x72,0x6C,0x6B,0x6E,0x71,0x75, -0x76,0x6C,0x69,0x72,0x7A,0x8C,0xA0,0xAF,0xAF,0x9A,0x8F,0x89,0x7F,0x7A,0x7F,0x84, -0x83,0x82,0x80,0x80,0x8C,0xA3,0xB9,0xC5,0xC2,0xAE,0xA3,0xA5,0x99,0x8C,0x8F,0x8B, -0x8C,0x98,0x97,0x8B,0x86,0x81,0x6D,0x68,0x6F,0x72,0x6E,0x62,0x60,0x6E,0x74,0x7B, -0x84,0x7E,0x7B,0x89,0x97,0x96,0x90,0x87,0x84,0x89,0x83,0x7B,0x7A,0x71,0x74,0x7E, -0x7F,0x86,0x90,0x9B,0x9D,0x8F,0x8B,0x8E,0x94,0x92,0x7F,0x72,0x72,0x75,0x6F,0x6B, -0x77,0x7B,0x64,0x57,0x62,0x60,0x57,0x52,0x53,0x60,0x5D,0x51,0x59,0x60,0x5D,0x70, -0x80,0x7C,0x72,0x74,0x6E,0x5D,0x64,0x6E,0x70,0x81,0x93,0x97,0x93,0x96,0xA1,0xA9, -0xAB,0xA5,0xAB,0xAF,0x9E,0x96,0x93,0x86,0x7E,0x82,0x87,0x84,0x7C,0x7F,0x80,0x81, -0x86,0x82,0x76,0x77,0x7E,0x7B,0x73,0x71,0x70,0x72,0x7A,0x7C,0x8B,0x9A,0x9B,0x92, -0x86,0x86,0x8C,0x8C,0x8B,0x8E,0x91,0x90,0x99,0xA0,0x92,0x7C,0x81,0x93,0x95,0x88, -0x7A,0x7A,0x7A,0x73,0x6A,0x66,0x68,0x6C,0x72,0x6C,0x67,0x6B,0x71,0x86,0x98,0x87, -0x6B,0x6F,0x85,0x8C,0x87,0x76,0x66,0x6D,0x6D,0x6A,0x7A,0x82,0x7D,0x79,0x74,0x6C, -0x69,0x69,0x6D,0x75,0x7D,0x7B,0x78,0x82,0x86,0x7F,0x80,0x8A,0x86,0x7B,0x7F,0x84, -0x7A,0x72,0x72,0x73,0x71,0x6E,0x62,0x51,0x4E,0x54,0x66,0x75,0x72,0x6E,0x70,0x6D, -0x77,0x8F,0x92,0x8A,0x9A,0xA8,0xA3,0xAB,0xB7,0xB6,0xAC,0xA1,0x99,0x9D,0xA8,0xA2, -0x8E,0x84,0x87,0x89,0x7F,0x72,0x62,0x5F,0x71,0x81,0x7F,0x7A,0x7B,0x7D,0x81,0x82, -0x89,0x93,0x9C,0x9A,0x89,0x7B,0x7F,0x89,0x90,0x85,0x75,0x7F,0x8A,0x8E,0x87,0x85, -0x8E,0x84,0x76,0x78,0x81,0x87,0x85,0x88,0x86,0x75,0x67,0x63,0x71,0x83,0x85,0x82, -0x8D,0x8F,0x82,0x85,0x8A,0x7B,0x6E,0x70,0x78,0x7D,0x75,0x67,0x6C,0x7A,0x89,0x95, -0x87,0x6F,0x65,0x6F,0x80,0x8F,0x8D,0x84,0x84,0x88,0x8D,0x91,0x93,0x98,0xA0,0xA8, -0xAA,0x9F,0x97,0x8E,0x78,0x72,0x7D,0x78,0x75,0x7D,0x85,0x7F,0x7D,0x8A,0x7E,0x6E, -0x7A,0x87,0x88,0x82,0x7E,0x85,0x8E,0x90,0x8D,0x91,0x99,0xA1,0xA0,0x96,0x9A,0x99, -0x8E,0x7F,0x76,0x77,0x6C,0x67,0x6F,0x77,0x7D,0x7B,0x74,0x78,0x70,0x66,0x6E,0x7D, -0x85,0x7A,0x67,0x67,0x79,0x86,0x88,0x85,0x80,0x7F,0x75,0x6C,0x6F,0x73,0x79,0x76, -0x67,0x67,0x73,0x7A,0x69,0x58,0x65,0x75,0x7E,0x8B,0x86,0x7C,0x82,0x86,0x83,0x7C, -0x7B,0x7B,0x7D,0x81,0x7F,0x6D,0x5A,0x5D,0x63,0x62,0x60,0x60,0x5B,0x5F,0x74,0x87, -0x9B,0x99,0x86,0x8C,0xAD,0xB1,0x9F,0x97,0x8B,0x80,0x85,0x8A,0x89,0x7F,0x7D,0x7E, -0x79,0x7B,0x71,0x5C,0x62,0x73,0x71,0x69,0x76,0x89,0x86,0x7A,0x73,0x76,0x79,0x74, -0x78,0x86,0x91,0x85,0x6A,0x67,0x76,0x85,0x8C,0x91,0x97,0x91,0x91,0x95,0x95,0xA0, -0x9F,0x99,0x9F,0xA2,0xA2,0x9B,0x9A,0x9C,0x94,0x82,0x70,0x74,0x7A,0x72,0x69,0x70, -0x7C,0x78,0x80,0x89,0x7D,0x73,0x76,0x79,0x74,0x66,0x60,0x6B,0x79,0x7F,0x84,0x8D, -0x97,0x9C,0x9B,0x8A,0x79,0x77,0x71,0x6B,0x6F,0x7C,0x88,0x8E,0xA2,0xB4,0xAE,0x9E, -0x8D,0x82,0x7F,0x7B,0x80,0x7F,0x7F,0x80,0x7D,0x84,0x85,0x79,0x71,0x68,0x63,0x5F, -0x57,0x4C,0x4D,0x5C,0x63,0x68,0x69,0x69,0x73,0x78,0x7E,0x8C,0x92,0x98,0x99,0x99, -0x9E,0xA7,0xB0,0xA9,0xA6,0xAA,0xA9,0xAF,0xAD,0xA2,0x97,0x8C,0x81,0x77,0x78,0x75, -0x6D,0x6D,0x74,0x7C,0x84,0x8B,0x83,0x72,0x76,0x85,0x86,0x79,0x70,0x70,0x70,0x77, -0x7E,0x81,0x88,0x8D,0x87,0x83,0x83,0x84,0x8E,0x99,0x9A,0x97,0x8B,0x81,0x86,0x8F, -0x8E,0x88,0x92,0x9E,0xA4,0x99,0x81,0x7D,0x7B,0x67,0x53,0x50,0x53,0x55,0x5B,0x5F, -0x5E,0x5E,0x5F,0x63,0x68,0x6A,0x60,0x62,0x77,0x77,0x6B,0x74,0x84,0x8F,0x93,0x97, -0x96,0x8A,0x7A,0x80,0x9A,0xA2,0x99,0x98,0x9C,0x8E,0x81,0x85,0x8D,0x97,0x9E,0x9F, -0x8E,0x7E,0x76,0x70,0x78,0x8B,0x8F,0x80,0x75,0x67,0x56,0x4E,0x4A,0x54,0x65,0x6D, -0x74,0x77,0x6E,0x68,0x7C,0x98,0xA3,0xA4,0xA3,0x95,0x86,0x87,0x91,0x9F,0xA6,0x95, -0x78,0x6E,0x71,0x71,0x71,0x70,0x6E,0x6C,0x6F,0x76,0x84,0x96,0x8E,0x84,0x84,0x7E, -0x7A,0x71,0x64,0x6A,0x73,0x77,0x7D,0x87,0x92,0x8A,0x6F,0x61,0x66,0x73,0x75,0x6B, -0x64,0x6C,0x77,0x7E,0x78,0x73,0x7D,0x84,0x89,0x8A,0x89,0x88,0x84,0x7B,0x7A,0x7F, -0x86,0x8F,0x9A,0x9B,0x8A,0x74,0x79,0x8F,0x97,0x91,0x80,0x73,0x6F,0x72,0x75,0x77, -0x81,0x84,0x7F,0x7B,0x76,0x78,0x8D,0xA3,0xA0,0x94,0x8B,0x80,0x76,0x67,0x5F,0x5C, -0x63,0x6E,0x6F,0x7A,0x91,0x9A,0x95,0x96,0xA2,0xAE,0x9C,0x8B,0x9D,0xA2,0x96,0x8F, -0x8C,0x8F,0x84,0x7F,0x81,0x75,0x66,0x5E,0x63,0x68,0x66,0x68,0x70,0x7E,0x84,0x7E, -0x77,0x75,0x82,0x88,0x94,0xAB,0xAE,0xA4,0x9A,0x91,0x88,0x84,0x89,0x91,0x8C,0x88, -0x8B,0x88,0x81,0x85,0x9A,0xA3,0x98,0x8B,0x82,0x92,0xAB,0xA9,0x95,0x87,0x74,0x65, -0x6A,0x76,0x7B,0x7E,0x7B,0x7B,0x79,0x7F,0x83,0x80,0x7A,0x67,0x63,0x66,0x67,0x7B, -0x7D,0x72,0x78,0x88,0x8D,0x7B,0x76,0x7F,0x7E,0x76,0x75,0x7A,0x86,0x91,0x94,0x8F, -0x87,0x87,0x8A,0x88,0x82,0x7E,0x7D,0x76,0x70,0x73,0x80,0x80,0x78,0x67,0x56,0x68, -0x82,0x88,0x7A,0x6F,0x72,0x7A,0x86,0x88,0x82,0x7C,0x7E,0x7A,0x6A,0x56,0x54,0x65, -0x74,0x8C,0x96,0x8A,0x87,0x93,0x9E,0x9F,0x9D,0x9B,0x94,0x8D,0x8F,0x87,0x78,0x6C, -0x6A,0x71,0x7D,0x84,0x86,0x82,0x6E,0x63,0x6C,0x7A,0x7A,0x6A,0x6D,0x83,0x86,0x79, -0x6F,0x75,0x86,0x96,0x9D,0x96,0x83,0x75,0x6D,0x65,0x62,0x69,0x75,0x81,0x8E,0x94, -0x8A,0x77,0x79,0x7F,0x76,0x71,0x70,0x7B,0x89,0x8D,0x8B,0x81,0x7C,0x7E,0x74,0x5F, -0x55,0x51,0x58,0x67,0x6D,0x71,0x72,0x7B,0x8B,0x93,0x8F,0x81,0x80,0x8E,0x87,0x7F, -0x81,0x85,0x8E,0x9B,0xB0,0xAC,0x94,0x93,0x99,0x8E,0x75,0x64,0x5C,0x57,0x57,0x61, -0x70,0x77,0x7D,0x87,0x8D,0x89,0x83,0x91,0xA1,0x97,0x8B,0x91,0x9B,0x98,0x9E,0xA4, -0xA5,0xA8,0x9D,0x84,0x70,0x6B,0x76,0x7C,0x89,0x97,0x95,0x92,0x8C,0x93,0x94,0x76, -0x6A,0x71,0x75,0x71,0x6B,0x69,0x6E,0x80,0x95,0x8B,0x72,0x71,0x7A,0x83,0x8B,0x91, -0x9C,0x9D,0x8B,0x86,0x8F,0x88,0x77,0x74,0x78,0x84,0x8F,0x8E,0x8B,0x96,0x9D,0x9D, -0x9C,0x96,0x98,0x92,0x82,0x6F,0x61,0x59,0x53,0x5E,0x69,0x62,0x60,0x67,0x6E,0x6F, -0x67,0x66,0x65,0x63,0x6A,0x6E,0x76,0x80,0x8A,0x93,0x9A,0x98,0x96,0x9C,0x99,0x91, -0x8C,0x83,0x80,0x81,0x81,0x81,0x8A,0x93,0x8F,0x87,0x84,0x78,0x77,0x85,0x91,0x99, -0x99,0x8E,0x77,0x62,0x55,0x57,0x74,0x82,0x72,0x6D,0x70,0x73,0x80,0x8C,0x8D,0x93, -0x93,0x88,0x7D,0x7C,0x87,0x99,0x9C,0x93,0x91,0x91,0x92,0x9D,0xAE,0xAD,0x9B,0x8B, -0x7C,0x71,0x6A,0x62,0x69,0x6E,0x77,0x80,0x87,0x8D,0x80,0x70,0x6B,0x6D,0x76,0x7C, -0x7B,0x78,0x73,0x6F,0x66,0x5E,0x5E,0x5E,0x62,0x67,0x65,0x5D,0x62,0x75,0x7E,0x7D, -0x76,0x76,0x7F,0x82,0x8A,0x92,0xA3,0xAE,0xAB,0xA4,0x94,0x91,0x96,0x83,0x6F,0x72, -0x7D,0x83,0x8D,0x90,0x7B,0x66,0x60,0x5B,0x62,0x78,0x7A,0x6F,0x66,0x61,0x6F,0x89, -0x8C,0x84,0x7D,0x68,0x58,0x5F,0x63,0x68,0x74,0x84,0x93,0x9B,0x92,0x88,0x8F,0x9F, -0x9E,0x97,0x95,0x97,0x8C,0x7E,0x79,0x85,0x8A,0x80,0x87,0x93,0x8F,0x89,0x83,0x76, -0x6A,0x63,0x5E,0x54,0x52,0x5F,0x6E,0x80,0x83,0x8A,0x99,0x95,0x8C,0x8D,0x89,0x85, -0x83,0x7E,0x88,0x91,0x92,0x9E,0x9B,0x93,0x95,0x8D,0x85,0x7D,0x7D,0x82,0x7D,0x7B, -0x6E,0x5E,0x6C,0x79,0x81,0x8C,0x89,0x75,0x6F,0x87,0x96,0x91,0x99,0x95,0x87,0x80, -0x75,0x6C,0x6B,0x6B,0x68,0x6A,0x71,0x78,0x78,0x77,0x79,0x7E,0x8B,0x94,0x98,0x91, -0x89,0x82,0x89,0xA3,0xAF,0xAF,0xAF,0xAB,0xA1,0x8F,0x7D,0x81,0x84,0x81,0x7B,0x82, -0x7F,0x77,0x78,0x84,0x84,0x79,0x63,0x5F,0x74,0x72,0x72,0x82,0x92,0x94,0x91,0x8E, -0x88,0x8A,0x94,0x8C,0x83,0x8C,0x93,0x99,0x9F,0x98,0x8D,0x91,0x99,0x9E,0x93,0x7D, -0x72,0x7E,0x87,0x7C,0x7B,0x7B,0x82,0x85,0x79,0x68,0x66,0x68,0x6D,0x70,0x73,0x7A, -0x71,0x67,0x65,0x6D,0x6B,0x65,0x6E,0x7C,0x7F,0x82,0x6F,0x5E,0x69,0x7C,0x84,0x7A, -0x7F,0x7E,0x76,0x7A,0x8C,0x97,0x89,0x66,0x61,0x71,0x79,0x84,0x86,0x81,0x7A,0x7E, -0x78,0x6B,0x6C,0x79,0x80,0x87,0x87,0x85,0x8F,0x93,0x83,0x81,0x83,0x82,0x84,0x76, -0x6C,0x6C,0x69,0x65,0x68,0x66,0x6D,0x7B,0x84,0x82,0x80,0x7F,0x80,0x87,0x7F,0x76, -0x79,0x86,0x8E,0x81,0x75,0x7C,0x8B,0x95,0x88,0x79,0x85,0x92,0x8D,0x8E,0x91,0x8B, -0x9D,0xA9,0xA5,0xAE,0xAE,0xA2,0x9B,0x98,0x8D,0x7E,0x79,0x73,0x6D,0x68,0x61,0x71, -0x80,0x75,0x59,0x4E,0x51,0x50,0x56,0x65,0x71,0x79,0x6E,0x65,0x7D,0x89,0x85,0x86, -0x87,0x92,0x9D,0xA4,0x99,0x7B,0x63,0x66,0x7C,0x88,0x87,0x83,0x80,0x7F,0x83,0x88, -0x81,0x78,0x6F,0x6D,0x69,0x60,0x74,0x88,0x8F,0x91,0x97,0x9D,0x9C,0x90,0x94,0x91, -0x7E,0x6E,0x74,0x80,0x7B,0x78,0x78,0x84,0x8A,0x88,0x8B,0x93,0x91,0x90,0x97,0x9A, -0x9D,0xA2,0xA5,0x94,0x83,0x85,0x91,0x8F,0x8D,0x8E,0x92,0x91,0x83,0x73,0x70,0x74, -0x76,0x76,0x76,0x6B,0x66,0x68,0x69,0x83,0x8C,0x8B,0x8A,0x7B,0x78,0x85,0x84,0x79, -0x68,0x6B,0x7D,0x84,0x8E,0x8B,0x86,0x8C,0x98,0xA3,0xA0,0x94,0x8B,0x72,0x6D,0x75, -0x72,0x79,0x8A,0x8E,0x82,0x70,0x6B,0x6F,0x79,0x70,0x66,0x72,0x7B,0x81,0x81,0x8C, -0x8E,0x80,0x72,0x6E,0x75,0x7C,0x81,0x7A,0x70,0x7A,0x84,0x86,0x7F,0x80,0x89,0x87, -0x81,0x79,0x7E,0x89,0x8D,0x85,0x7B,0x78,0x7B,0x78,0x75,0x78,0x7F,0x8A,0x8A,0x81, -0x7D,0x81,0x8C,0x82,0x74,0x78,0x81,0x86,0x89,0x84,0x85,0x83,0x67,0x53,0x61,0x75, -0x71,0x6A,0x6A,0x71,0x85,0x8C,0x92,0x9A,0x9F,0xA0,0x9D,0x9C,0x9B,0xA0,0xA3,0x9D, -0x97,0x8C,0x81,0x7E,0x7F,0x73,0x66,0x64,0x6C,0x6C,0x74,0x8A,0x93,0x8A,0x76,0x76, -0x83,0x75,0x6C,0x81,0x8A,0x84,0x86,0x93,0x9E,0x9D,0x99,0x8E,0x82,0x7A,0x6D,0x69, -0x68,0x61,0x57,0x57,0x5A,0x6A,0x7B,0x7B,0x7C,0x83,0x8A,0x87,0x80,0x7C,0x72,0x6D, -0x6E,0x70,0x7B,0x86,0x8C,0x90,0x83,0x67,0x68,0x74,0x6C,0x63,0x61,0x61,0x77,0x82, -0x78,0x76,0x74,0x79,0x7D,0x73,0x7D,0x8F,0x93,0x8B,0x71,0x5F,0x6E,0x84,0x94,0x9B, -0x95,0x7F,0x6A,0x68,0x7B,0x90,0x96,0x96,0xA2,0xA9,0xA6,0x96,0x92,0x9D,0x92,0x8B, -0x90,0x91,0x88,0x7E,0x7C,0x87,0x90,0x87,0x7F,0x7D,0x77,0x75,0x79,0x67,0x65,0x76, -0x7D,0x79,0x81,0x92,0x9C,0xA0,0xA0,0x98,0x8A,0x80,0x73,0x77,0x7B,0x75,0x7E,0x95, -0x97,0x88,0x83,0x8E,0x85,0x73,0x73,0x7B,0x85,0x7D,0x65,0x5B,0x78,0x94,0x9A,0x98, -0x94,0x8D,0x89,0x88,0x80,0x7B,0x72,0x66,0x66,0x7D,0x89,0x77,0x71,0x6D,0x75,0x8C, -0x8D,0x8A,0x8D,0x92,0x94,0x94,0x94,0x94,0x98,0x96,0x88,0x78,0x79,0x72,0x67,0x69, -0x65,0x6B,0x7D,0x80,0x71,0x72,0x74,0x6D,0x6D,0x7A,0x7C,0x7B,0x80,0x7F,0x82,0x93, -0xA7,0xA5,0xA4,0xB0,0xB1,0x9A,0x83,0x79,0x72,0x6F,0x73,0x74,0x79,0x84,0x87,0x7F, -0x7C,0x82,0x82,0x85,0x8D,0x94,0x87,0x78,0x73,0x73,0x72,0x78,0x85,0x93,0xAE,0xBC, -0xA8,0x87,0x7B,0x7E,0x6C,0x60,0x64,0x58,0x4A,0x60,0x7B,0x7B,0x7A,0x78,0x6E,0x6F, -0x82,0x85,0x7D,0x6F,0x55,0x5B,0x76,0x81,0x70,0x60,0x62,0x61,0x6A,0x76,0x7B,0x88, -0x8A,0x7C,0x71,0x6D,0x8C,0xAC,0x9F,0x84,0x85,0x95,0x8D,0x8D,0x98,0x96,0x8D,0x7C, -0x6A,0x5A,0x53,0x57,0x61,0x67,0x5E,0x5D,0x6A,0x7C,0x86,0x88,0x86,0x88,0x8B,0x86, -0x8B,0x9A,0x8F,0x7A,0x72,0x78,0x7F,0x80,0x7E,0x7D,0x8D,0x9E,0x9A,0x8E,0x80,0x7B, -0x7E,0x81,0x8B,0x92,0x95,0x92,0x87,0x83,0x81,0x84,0x8A,0x8F,0x8C,0x74,0x67,0x77, -0x80,0x87,0x96,0xAA,0xB3,0x9F,0x8B,0x7E,0x77,0x71,0x7B,0x85,0x80,0x7E,0x8C,0xA4, -0xAF,0xA9,0xA5,0xA0,0x90,0x76,0x69,0x75,0x7C,0x7D,0x78,0x6B,0x76,0x89,0x98,0x99, -0x87,0x79,0x72,0x72,0x6D,0x6A,0x6C,0x61,0x6C,0x7F,0x81,0x79,0x73,0x73,0x6E,0x63, -0x59,0x52,0x5E,0x77,0x77,0x6A,0x63,0x75,0x89,0x8E,0x8F,0x8A,0x83,0x79,0x83,0x93, -0x93,0x82,0x76,0x81,0x8F,0x99,0x94,0x75,0x62,0x6B,0x81,0x94,0x89,0x80,0x87,0x80, -0x78,0x7D,0x7A,0x7C,0x83,0x7C,0x6B,0x61,0x6A,0x7A,0x83,0x87,0x8B,0xA1,0xA8,0x98, -0x8D,0x89,0x84,0x7C,0x6D,0x6A,0x7A,0x86,0x92,0xA9,0xAA,0x8E,0x7E,0x95,0xA2,0x89, -0x79,0x79,0x82,0x90,0x8F,0x7F,0x7F,0x8E,0x9C,0xA6,0x99,0x85,0x84,0x7F,0x77,0x79, -0x79,0x71,0x66,0x62,0x68,0x70,0x76,0x71,0x6D,0x78,0x85,0x91,0x95,0x93,0x8D,0x8E, -0x98,0x8D,0x7A,0x7D,0x95,0x97,0x85,0x7F,0x82,0x7E,0x72,0x6D,0x7C,0x7E,0x6F,0x67, -0x63,0x67,0x71,0x7D,0x80,0x7A,0x85,0x9A,0xA6,0xA8,0x9D,0x87,0x81,0x85,0x80,0x71, -0x63,0x5D,0x5D,0x69,0x78,0x79,0x6C,0x71,0x78,0x76,0x7B,0x74,0x6C,0x74,0x8A,0x97, -0x8B,0x82,0x88,0x8F,0x91,0x88,0x86,0x88,0x7C,0x6A,0x6A,0x70,0x75,0x6B,0x70,0x82, -0x82,0x7D,0x81,0x81,0x7D,0x88,0x8D,0x8A,0x7E,0x70,0x75,0x7B,0x7F,0x7D,0x71,0x6D, -0x73,0x7A,0x8B,0x8F,0x82,0x8C,0xA5,0xAB,0xA9,0xA8,0x99,0x81,0x76,0x7A,0x7A,0x72, -0x70,0x76,0x7E,0x82,0x6F,0x61,0x68,0x6F,0x67,0x59,0x5A,0x53,0x4A,0x56,0x6B,0x6B, -0x68,0x7E,0x93,0x92,0x8E,0x90,0x8D,0x8C,0x8C,0x7F,0x7C,0x8F,0x8E,0x7D,0x7F,0x91, -0xA5,0xA7,0xA4,0x90,0x7C,0x7B,0x6B,0x61,0x6F,0x84,0x8C,0x82,0x76,0x7C,0x8B,0x94, -0x90,0x89,0x85,0x7C,0x76,0x78,0x84,0x82,0x77,0x7C,0x7F,0x74,0x69,0x75,0x84,0x81, -0x81,0x8E,0x9D,0xA5,0xA5,0xA7,0xA5,0x9B,0x93,0x90,0x97,0xA1,0x98,0x90,0x95,0x97, -0x91,0x86,0x7C,0x82,0x7D,0x68,0x60,0x61,0x6E,0x78,0x75,0x79,0x7F,0x82,0x8D,0x8E, -0x7E,0x75,0x86,0x96,0x97,0x8B,0x7E,0x85,0x87,0x86,0x8F,0x9B,0x95,0x84,0x7D,0x7F, -0x7C,0x70,0x73,0x82,0x81,0x7E,0x82,0x8A,0x92,0x98,0x9B,0x95,0x87,0x7F,0x80,0x7B, -0x79,0x78,0x67,0x5E,0x5C,0x67,0x7F,0x8A,0x75,0x56,0x57,0x61,0x61,0x5E,0x6D,0x77, -0x68,0x71,0x8C,0x93,0x8F,0x8A,0x90,0xA2,0x9C,0x78,0x62,0x5D,0x5C,0x62,0x6C,0x6E, -0x6E,0x71,0x7E,0x8E,0x96,0x9A,0x90,0x8B,0x8E,0x8D,0x87,0x78,0x6B,0x6E,0x87,0x9A, -0x9C,0x8E,0x7B,0x7D,0x81,0x70,0x5A,0x4D,0x48,0x59,0x66,0x64,0x74,0x8B,0x8B,0x87, -0x88,0x87,0x91,0x97,0x91,0x8E,0x8F,0x8E,0x8C,0x89,0x8A,0x90,0xA2,0xAC,0x9C,0x81, -0x7C,0x85,0x8B,0x93,0x93,0x88,0x7E,0x70,0x73,0x7C,0x74,0x73,0x78,0x7F,0x81,0x7A, -0x76,0x7A,0x7F,0x83,0x85,0x77,0x6E,0x69,0x64,0x6E,0x79,0x81,0x8A,0x94,0x8F,0x8A, -0x8D,0x94,0x96,0x98,0x90,0x79,0x70,0x7F,0x92,0x9F,0x96,0x88,0x7E,0x7F,0x7F,0x76, -0x6F,0x69,0x68,0x6B,0x6D,0x67,0x62,0x72,0x8B,0x8D,0x77,0x6C,0x7D,0x86,0x82,0x72, -0x63,0x66,0x6D,0x71,0x7D,0x8F,0x9D,0x98,0x8A,0x86,0x87,0x86,0x84,0x7D,0x7D,0x7D, -0x79,0x7D,0x89,0x8E,0x88,0x8E,0x9D,0xA3,0x97,0x83,0x6E,0x62,0x6A,0x73,0x73,0x6D, -0x68,0x66,0x5C,0x5A,0x68,0x76,0x80,0x85,0x7E,0x7C,0x7C,0x7D,0x88,0x95,0x8D,0x84, -0x7D,0x7D,0x9C,0xB8,0xB8,0xAB,0xA6,0xA3,0x92,0x8A,0x85,0x7A,0x69,0x51,0x52,0x6E, -0x84,0x8F,0x92,0x90,0x95,0x9F,0xA1,0x93,0x7B,0x6B,0x7D,0x97,0x87,0x6B,0x6E,0x73, -0x73,0x70,0x74,0x71,0x6C,0x71,0x70,0x72,0x76,0x85,0x97,0x8A,0x7D,0x88,0x90,0x92, -0x98,0x9F,0x9E,0x91,0x89,0x85,0x82,0x7F,0x7C,0x8B,0x8D,0x84,0x7D,0x7F,0x7F,0x80, -0x8D,0x96,0x8E,0x80,0x7B,0x76,0x6E,0x73,0x77,0x7A,0x76,0x6A,0x64,0x5F,0x68,0x78, -0x80,0x78,0x7A,0x88,0x93,0xA9,0xAD,0x91,0x74,0x78,0x87,0x8A,0x82,0x75,0x76,0x83, -0x84,0x7B,0x75,0x7A,0x7A,0x7A,0x79,0x79,0x76,0x6C,0x6C,0x78,0x7C,0x7E,0x88,0x8D, -0x8D,0x89,0x7E,0x79,0x77,0x7A,0x84,0x8B,0x92,0x89,0x8A,0x9A,0x95,0x89,0x89,0x90, -0x8D,0x80,0x7E,0x92,0x98,0x85,0x76,0x72,0x6E,0x70,0x77,0x7C,0x78,0x72,0x69,0x5B, -0x5E,0x70,0x7D,0x7C,0x80,0x79,0x6D,0x74,0x78,0x75,0x75,0x7A,0x77,0x65,0x5B,0x5E, -0x6B,0x6F,0x61,0x63,0x79,0x89,0x8D,0x84,0x83,0x88,0x85,0x8C,0x93,0x89,0x85,0x8B, -0x8F,0x86,0x74,0x76,0x77,0x6C,0x68,0x6E,0x73,0x78,0x7B,0x7F,0x76,0x6E,0x77,0x81, -0x88,0x8C,0x8D,0x8E,0x92,0x91,0x93,0x9F,0x9F,0x8E,0x75,0x72,0x77,0x7A,0x7E,0x80, -0x8E,0x93,0x93,0x94,0x93,0x90,0x8B,0x88,0x86,0x88,0x8C,0x8E,0x8C,0x8C,0x96,0x95, -0x89,0x87,0x80,0x6E,0x6D,0x72,0x6B,0x70,0x79,0x83,0x91,0x86,0x78,0x83,0x8E,0x8A, -0x86,0x92,0x9A,0x8F,0x8E,0x90,0x84,0x81,0x78,0x65,0x65,0x78,0x84,0x93,0x94,0x89, -0x92,0x91,0x7E,0x7B,0x87,0x88,0x87,0x87,0x7C,0x6E,0x73,0x7B,0x83,0x83,0x74,0x73, -0x7F,0x80,0x77,0x78,0x80,0x8B,0x8A,0x77,0x6A,0x6C,0x7B,0x81,0x87,0x96,0x9C,0x99, -0x98,0x98,0x91,0x88,0x78,0x6C,0x67,0x63,0x66,0x6E,0x79,0x87,0x90,0x8A,0x85,0x85, -0x83,0x76,0x6D,0x61,0x5C,0x68,0x83,0x9B,0x95,0x85,0x7E,0x88,0x90,0x84,0x6E,0x6D, -0x71,0x75,0x75,0x73,0x7E,0x8D,0x99,0x9C,0x99,0x9B,0x99,0x95,0x8F,0x81,0x75,0x79, -0x7F,0x78,0x67,0x59,0x5A,0x67,0x7A,0x77,0x70,0x7D,0x85,0x83,0x86,0x85,0x80,0x7B, -0x75,0x70,0x75,0x7E,0x86,0x92,0x94,0x8D,0x83,0x7B,0x83,0x8D,0x86,0x72,0x76,0x87, -0x90,0x9E,0x9D,0x91,0x8C,0x83,0x7E,0x75,0x6B,0x62,0x52,0x53,0x63,0x64,0x5D,0x5F, -0x5B,0x58,0x68,0x79,0x7E,0x86,0x91,0x8E,0x83,0x8A,0x9A,0xA4,0xA0,0x95,0x87,0x86, -0x8E,0x95,0x92,0x7D,0x7B,0x89,0x86,0x76,0x6E,0x77,0x8C,0x8B,0x82,0x87,0x82,0x7D, -0x7D,0x7D,0x7C,0x6F,0x70,0x82,0x81,0x76,0x6F,0x71,0x75,0x78,0x78,0x78,0x82,0x88, -0x8D,0x8F,0x93,0x97,0x8C,0x86,0x8D,0x8C,0x8F,0x94,0x92,0x8E,0x8F,0x99,0xA9,0xA5, -0x8F,0x77,0x64,0x67,0x70,0x72,0x69,0x6A,0x73,0x74,0x74,0x81,0x8E,0x88,0x7F,0x7D, -0x79,0x75,0x76,0x79,0x79,0x79,0x7D,0x84,0x8F,0x8C,0x88,0x8C,0x87,0x7B,0x7A,0x7E, -0x7E,0x7D,0x79,0x81,0x93,0x91,0x83,0x87,0x8C,0x81,0x71,0x7E,0x87,0x72,0x5E,0x60, -0x6E,0x77,0x76,0x7B,0x7F,0x77,0x6F,0x75,0x86,0x90,0x90,0x7E,0x66,0x66,0x70,0x7E, -0x88,0x82,0x80,0x87,0x96,0x96,0x8D,0x8B,0x92,0x95,0x91,0x96,0x91,0x85,0x76,0x6F, -0x76,0x7E,0x84,0x86,0x85,0x85,0x87,0x8A,0x8C,0x88,0x85,0x80,0x78,0x76,0x78,0x7B, -0x76,0x6E,0x73,0x7E,0x90,0x8D,0x78,0x70,0x77,0x7F,0x7F,0x80,0x81,0x88,0x92,0x8D, -0x95,0xAD,0xAD,0x9D,0x9D,0x9D,0x95,0x95,0x8A,0x76,0x71,0x79,0x82,0x84,0x82,0x81, -0x75,0x6C,0x70,0x6E,0x70,0x7C,0x8B,0x86,0x71,0x6C,0x73,0x81,0x8B,0x7F,0x7A,0x83, -0x8E,0x96,0x8D,0x7F,0x79,0x79,0x81,0x7E,0x76,0x7A,0x78,0x78,0x81,0x8C,0x92,0x83, -0x78,0x7C,0x79,0x70,0x74,0x84,0x8C,0x7D,0x76,0x7C,0x7E,0x72,0x6D,0x76,0x71,0x66, -0x6D,0x71,0x75,0x76,0x6B,0x6B,0x70,0x6C,0x67,0x70,0x7E,0x8A,0x95,0x94,0x7E,0x79, -0x83,0x83,0x7D,0x7D,0x81,0x7D,0x82,0x89,0x85,0x8A,0x8B,0x7B,0x7B,0x7F,0x6F,0x74, -0x7A,0x74,0x80,0x92,0x8E,0x80,0x85,0x8F,0x8F,0x8D,0x82,0x73,0x71,0x79,0x77,0x70, -0x71,0x7A,0x76,0x76,0x82,0x7F,0x6F,0x62,0x62,0x71,0x77,0x7B,0x82,0x7C,0x78,0x7F, -0x88,0x8D,0x8A,0x7A,0x73,0x89,0x98,0x8F,0x8F,0x96,0x98,0x91,0x87,0x88,0x8B,0x8B, -0x88,0x7D,0x79,0x7C,0x77,0x7E,0x8E,0x86,0x76,0x77,0x7F,0x86,0x8E,0x93,0x99,0x8D, -0x75,0x6F,0x75,0x71,0x6F,0x75,0x7B,0x80,0x8F,0x91,0x80,0x70,0x7A,0x81,0x85,0x93, -0x9E,0x94,0x87,0x82,0x8E,0xA4,0xA7,0x9E,0x94,0x7E,0x77,0x80,0x71,0x75,0x80,0x86, -0x90,0x92,0x91,0x8F,0x8F,0x90,0x83,0x82,0x91,0x90,0x97,0x87,0x6B,0x6D,0x74,0x6E, -0x65,0x75,0x8C,0x92,0x94,0x83,0x79,0x80,0x7B,0x79,0x75,0x72,0x6B,0x66,0x6F,0x81, -0x91,0x9B,0x9C,0x9C,0x90,0x78,0x7E,0x7E,0x7D,0x75,0x75,0x77,0x64,0x65,0x7C,0x91, -0x9C,0x98,0x85,0x7A,0x6A,0x61,0x69,0x77,0x6F,0x61,0x6D,0x89,0x8D,0x84,0x7B,0x85, -0x96,0x8C,0x84,0x81,0x7B,0x70,0x6A,0x73,0x7A,0x78,0x72,0x6D,0x73,0x74,0x69,0x6A, -0x6E,0x66,0x64,0x79,0x83,0x88,0x8E,0x88,0x7B,0x7D,0x87,0x8F,0x88,0x7C,0x77,0x74, -0x72,0x6C,0x69,0x72,0x81,0x7E,0x73,0x6B,0x6F,0x7B,0x8D,0x9B,0x9C,0x9D,0x92,0x86, -0x86,0x8C,0x8D,0x97,0x9D,0x94,0x84,0x8A,0x8F,0x87,0x7B,0x7C,0x8B,0x92,0x81,0x6D, -0x74,0x85,0x8D,0x85,0x7C,0x86,0x94,0x9D,0x96,0x87,0x85,0x7A,0x6E,0x70,0x77,0x72, -0x68,0x7A,0x89,0x83,0x7F,0x83,0x8D,0x84,0x7B,0x8D,0x94,0x91,0x94,0x98,0x8B,0x81, -0x87,0x89,0x7E,0x76,0x75,0x74,0x74,0x6C,0x66,0x6F,0x7A,0x79,0x74,0x73,0x72,0x6D, -0x68,0x6C,0x7C,0x8D,0x99,0x9A,0x8F,0x8B,0x94,0x8D,0x77,0x74,0x7A,0x7B,0x7B,0x77, -0x74,0x6E,0x65,0x6F,0x81,0x87,0x82,0x7D,0x73,0x6F,0x6B,0x6F,0x7B,0x7C,0x7B,0x8F, -0x99,0x91,0x8F,0x94,0x8D,0x7A,0x74,0x81,0x88,0x87,0x86,0x8A,0x8A,0x8C,0x9A,0xA1, -0x8A,0x7C,0x7F,0x75,0x6E,0x6B,0x66,0x71,0x7F,0x79,0x71,0x7D,0x82,0x77,0x6D,0x71, -0x72,0x62,0x64,0x7B,0x86,0x81,0x81,0x83,0x80,0x7B,0x76,0x80,0x84,0x84,0x8F,0x9F, -0xA6,0xA5,0x9D,0x8D,0x8A,0x91,0x90,0x87,0x6F,0x62,0x76,0x8A,0x88,0x78,0x73,0x7E, -0x7D,0x7B,0x75,0x67,0x6B,0x7D,0x80,0x7A,0x83,0x90,0x93,0x97,0x9A,0x9A,0x92,0x84, -0x7F,0x79,0x7F,0x8C,0x8A,0x83,0x7E,0x7C,0x80,0x91,0x9F,0x9D,0x9B,0x9E,0x99,0x89, -0x7F,0x81,0x8A,0x8E,0x90,0x8F,0x89,0x8C,0x88,0x7E,0x7C,0x70,0x63,0x6A,0x74,0x6B, -0x68,0x6E,0x6F,0x67,0x67,0x78,0x84,0x80,0x83,0x8B,0x8F,0x91,0x94,0x99,0x9A,0x98, -0x93,0x83,0x73,0x6E,0x77,0x7B,0x77,0x76,0x7A,0x7E,0x80,0x84,0x84,0x82,0x7F,0x71, -0x68,0x72,0x7B,0x7B,0x79,0x78,0x7D,0x85,0x7F,0x74,0x70,0x64,0x56,0x57,0x62,0x65, -0x66,0x72,0x7F,0x84,0x86,0x82,0x85,0x8D,0x8A,0x80,0x7D,0x82,0x82,0x7E,0x83,0x88, -0x89,0x92,0x94,0x8B,0x7A,0x69,0x6A,0x7A,0x7D,0x71,0x76,0x81,0x7C,0x6E,0x65,0x70, -0x76,0x70,0x71,0x68,0x62,0x6B,0x76,0x80,0x86,0x85,0x89,0x8F,0x8D,0x83,0x8B,0x9C, -0xA2,0x9C,0x8E,0x88,0x82,0x84,0x89,0x93,0x9D,0x9B,0x95,0x94,0x90,0x87,0x86,0x82, -0x75,0x7B,0x78,0x73,0x73,0x67,0x64,0x70,0x78,0x78,0x7A,0x87,0x8A,0x84,0x8A,0x96, -0x98,0x95,0x98,0x97,0x84,0x77,0x7F,0x84,0x79,0x76,0x71,0x77,0x8A,0x91,0x8E,0x8C, -0x94,0x8F,0x7B,0x75,0x75,0x83,0x86,0x74,0x77,0x8C,0x90,0x8C,0x91,0x91,0x8F,0x90, -0x81,0x72,0x72,0x6F,0x6B,0x70,0x6A,0x63,0x73,0x83,0x7C,0x72,0x7A,0x82,0x7E,0x73, -0x6B,0x70,0x76,0x7E,0x87,0x8A,0x8A,0x89,0x8E,0x8F,0x90,0x98,0x91,0x7D,0x7B,0x8E, -0x99,0x95,0x8E,0x8B,0x92,0x90,0x7F,0x71,0x71,0x7D,0x7E,0x77,0x7D,0x8D,0x9A,0xA4, -0x9A,0x84,0x7E,0x83,0x80,0x75,0x68,0x60,0x60,0x67,0x70,0x70,0x6E,0x6C,0x73,0x7A, -0x7A,0x7C,0x88,0x9B,0x9A,0x8A,0x84,0x81,0x86,0x8C,0x86,0x87,0x8E,0x83,0x77,0x78, -0x75,0x6F,0x70,0x7F,0x7C,0x72,0x74,0x79,0x75,0x65,0x6E,0x80,0x82,0x82,0x75,0x6C, -0x71,0x70,0x6F,0x72,0x7B,0x82,0x7F,0x78,0x6F,0x72,0x83,0x88,0x83,0x84,0x89,0x86, -0x81,0x8A,0x8E,0x8B,0x88,0x8B,0x9B,0x9E,0x8D,0x83,0x82,0x86,0x81,0x70,0x6F,0x88, -0x8F,0x82,0x7A,0x77,0x81,0x91,0x94,0x91,0x8C,0x81,0x82,0x85,0x80,0x83,0x94,0x95, -0x87,0x83,0x8D,0x92,0x8D,0x87,0x7C,0x74,0x6C,0x6A,0x6E,0x75,0x73,0x82,0x93,0x8E, -0x8A,0x90,0x8E,0x88,0x87,0x81,0x84,0x8B,0x89,0x89,0x83,0x77,0x73,0x71,0x79,0x86, -0x8E,0x87,0x76,0x6E,0x6C,0x71,0x78,0x75,0x71,0x6E,0x63,0x68,0x7C,0x82,0x82,0x85, -0x88,0x82,0x82,0x83,0x77,0x67,0x60,0x5C,0x6C,0x7B,0x71,0x72,0x7A,0x7B,0x7E,0x84, -0x82,0x83,0x86,0x81,0x7B,0x79,0x83,0x93,0x9C,0x9D,0x91,0x86,0x89,0x8F,0x8C,0x7F, -0x71,0x6B,0x69,0x6C,0x6E,0x6F,0x75,0x6C,0x5D,0x62,0x7A,0x89,0x7C,0x71,0x87,0x9A, -0x9B,0x9C,0x9B,0x97,0x93,0x8D,0x87,0x87,0x8B,0x84,0x77,0x76,0x78,0x81,0x86,0x87, -0x86,0x7F,0x75,0x76,0x8A,0x9F,0xA0,0x92,0x87,0x8C,0x8F,0x88,0x87,0x8F,0x8F,0x8D, -0x8C,0x7C,0x6D,0x70,0x74,0x75,0x75,0x7A,0x89,0x90,0x86,0x7A,0x72,0x73,0x70,0x70, -0x73,0x7D,0x8A,0x92,0x99,0xA5,0xAC,0xA5,0x90,0x85,0x81,0x74,0x60,0x50,0x57,0x6A, -0x78,0x7E,0x89,0x8F,0x8F,0x8B,0x82,0x83,0x80,0x72,0x68,0x69,0x71,0x77,0x76,0x75, -0x7D,0x87,0x88,0x7A,0x75,0x7F,0x84,0x84,0x85,0x85,0x8B,0x96,0x97,0x86,0x7E,0x89, -0x97,0x99,0x8F,0x82,0x79,0x84,0x91,0x8B,0x7D,0x79,0x7A,0x74,0x6E,0x77,0x7D,0x73, -0x73,0x7E,0x88,0x8D,0x90,0x8C,0x7B,0x72,0x78,0x80,0x7E,0x7F,0x7E,0x79,0x7E,0x81, -0x80,0x7D,0x7B,0x84,0x98,0x9E,0x8D,0x7B,0x78,0x79,0x74,0x73,0x7D,0x88,0x83,0x77, -0x74,0x7A,0x89,0x8B,0x8A,0x8A,0x7D,0x74,0x78,0x7B,0x7D,0x7D,0x73,0x6C,0x71,0x75, -0x76,0x78,0x7E,0x7C,0x73,0x7A,0x7E,0x75,0x6E,0x70,0x7C,0x8A,0x8E,0x8B,0x81,0x7E, -0x76,0x7B,0x8C,0x8F,0x84,0x74,0x6D,0x72,0x79,0x7E,0x80,0x7E,0x85,0x8A,0x81,0x6F, -0x68,0x71,0x73,0x63,0x64,0x78,0x90,0x98,0x8F,0x83,0x81,0x8C,0x85,0x72,0x6C,0x68, -0x6A,0x76,0x80,0x85,0x86,0x85,0x86,0x85,0x84,0x91,0x93,0x7C,0x6E,0x73,0x78,0x79, -0x8C,0x94,0x8F,0x97,0xA2,0x9E,0x94,0x96,0x94,0x89,0x81,0x80,0x7D,0x89,0x93,0x8B, -0x80,0x7C,0x7E,0x7E,0x82,0x80,0x7E,0x81,0x80,0x76,0x66,0x70,0x86,0x7D,0x6B,0x70, -0x83,0x92,0x98,0x95,0x8E,0x91,0x91,0x92,0x95,0x96,0x8D,0x84,0x84,0x86,0x86,0x90, -0x9C,0x92,0x8B,0x93,0x89,0x75,0x6B,0x6B,0x6B,0x69,0x74,0x77,0x69,0x6C,0x79,0x76, -0x79,0x82,0x8A,0x88,0x76,0x62,0x61,0x6D,0x71,0x78,0x85,0x8F,0x8A,0x77,0x7A,0x8B, -0x87,0x81,0x7F,0x7E,0x7D,0x7F,0x7E,0x7D,0x80,0x83,0x8B,0x85,0x75,0x77,0x7A,0x75, -0x7D,0x8E,0x94,0x8A,0x78,0x75,0x7E,0x83,0x84,0x71,0x64,0x6F,0x76,0x7C,0x8B,0x8A, -0x7E,0x88,0x91,0x82,0x76,0x78,0x79,0x74,0x76,0x78,0x79,0x85,0x8E,0x82,0x83,0x90, -0x83,0x6C,0x6D,0x78,0x78,0x7A,0x83,0x87,0x8E,0x93,0x97,0x91,0x84,0x94,0x9F,0x94, -0x82,0x78,0x7A,0x7A,0x7E,0x8B,0x93,0x8D,0x8D,0x90,0x82,0x74,0x77,0x7E,0x7F,0x78, -0x6C,0x72,0x84,0x7E,0x6C,0x69,0x7D,0x8B,0x80,0x74,0x71,0x82,0x8B,0x83,0x72,0x72, -0x88,0x9E,0xA4,0x97,0x86,0x7E,0x7D,0x77,0x72,0x74,0x76,0x78,0x79,0x7D,0x8D,0x8D, -0x8D,0x89,0x7C,0x7B,0x79,0x6D,0x73,0x7F,0x85,0x82,0x77,0x75,0x79,0x7B,0x7A,0x7D, -0x85,0x85,0x85,0x8D,0x8A,0x79,0x66,0x69,0x73,0x75,0x7A,0x88,0x94,0x8D,0x84,0x92, -0x98,0x8C,0x7C,0x7D,0x83,0x78,0x71,0x74,0x7F,0x87,0x93,0x91,0x86,0x7C,0x76,0x7F, -0x7F,0x77,0x70,0x67,0x68,0x72,0x74,0x73,0x70,0x84,0x92,0x7D,0x6E,0x7B,0x85,0x87, -0x87,0x88,0x8A,0x8B,0x8F,0x92,0x8F,0x89,0x86,0x87,0x8B,0x8B,0x97,0xA3,0x99,0x83, -0x78,0x78,0x79,0x71,0x64,0x5E,0x67,0x72,0x6E,0x6D,0x75,0x72,0x6F,0x7B,0x7A,0x6D, -0x6A,0x68,0x71,0x80,0x8C,0x90,0x91,0x94,0x92,0x8B,0x8F,0x8B,0x7E,0x7F,0x79,0x6F, -0x6F,0x7E,0x8B,0x8C,0x8D,0x93,0x8E,0x86,0x7E,0x80,0x8A,0x86,0x76,0x71,0x7D,0x7D, -0x7B,0x80,0x7E,0x7F,0x7E,0x7D,0x77,0x73,0x7C,0x7C,0x7A,0x86,0x91,0x9D,0x9D,0x98, -0x97,0x98,0x9B,0x97,0x8E,0x83,0x80,0x87,0x94,0x92,0x85,0x82,0x86,0x88,0x87,0x7E, -0x7A,0x7B,0x78,0x7D,0x88,0x86,0x86,0x90,0x97,0x8B,0x7E,0x74,0x6C,0x6B,0x70,0x7C, -0x81,0x7B,0x79,0x7D,0x7C,0x86,0x8C,0x81,0x7D,0x85,0x84,0x8F,0xA0,0x96,0x91,0x96, -0x94,0x88,0x7F,0x71,0x5E,0x56,0x5D,0x69,0x67,0x68,0x77,0x89,0x91,0x85,0x71,0x6A, -0x67,0x5B,0x60,0x6F,0x7C,0x88,0x90,0x9A,0x96,0x7D,0x6E,0x76,0x7C,0x75,0x6D,0x72, -0x7B,0x7D,0x7D,0x86,0x90,0x88,0x81,0x85,0x86,0x78,0x6A,0x61,0x5E,0x60,0x6A,0x7B, -0x8C,0x90,0x89,0x85,0x85,0x80,0x79,0x72,0x71,0x7B,0x79,0x6D,0x6C,0x74,0x7D,0x90, -0x9E,0x9F,0x9A,0x8E,0x7F,0x77,0x80,0x85,0x82,0x82,0x89,0x83,0x78,0x7A,0x83,0x80, -0x7F,0x87,0x83,0x7A,0x77,0x77,0x7A,0x82,0x89,0x88,0x7E,0x7D,0x86,0x8B,0x81,0x7E, -0x86,0x87,0x7C,0x76,0x7D,0x8A,0x94,0x99,0x94,0x85,0x82,0x87,0x8E,0x93,0x90,0x85, -0x88,0x8D,0x8C,0x8C,0x85,0x82,0x86,0x82,0x80,0x80,0x83,0x83,0x82,0x82,0x78,0x72, -0x75,0x80,0x8B,0x92,0x8B,0x7C,0x75,0x79,0x78,0x73,0x73,0x73,0x75,0x79,0x7F,0x81, -0x82,0x81,0x87,0x91,0x90,0x79,0x6E,0x6A,0x67,0x70,0x7A,0x84,0x89,0x8A,0x89,0x86, -0x82,0x7D,0x6F,0x67,0x6F,0x6F,0x70,0x7C,0x82,0x86,0x8F,0x97,0x9D,0x94,0x86,0x85, -0x85,0x82,0x7E,0x7B,0x84,0x86,0x81,0x75,0x75,0x81,0x7F,0x71,0x79,0x87,0x7E,0x7C, -0x83,0x88,0x83,0x82,0x83,0x80,0x7A,0x6F,0x6C,0x78,0x83,0x80,0x7C,0x81,0x87,0x89, -0x7F,0x6F,0x76,0x7E,0x7E,0x7D,0x83,0x81,0x7A,0x86,0x93,0x9D,0x97,0x85,0x7A,0x78, -0x7B,0x86,0x88,0x82,0x84,0x89,0x8C,0x86,0x82,0x7F,0x7D,0x87,0x8D,0x83,0x75,0x79, -0x84,0x87,0x85,0x6F,0x69,0x73,0x79,0x7A,0x79,0x79,0x72,0x6C,0x75,0x82,0x85,0x8B, -0x90,0x92,0x98,0x9E,0x9A,0x96,0x8C,0x7C,0x75,0x7B,0x7B,0x82,0x87,0x7C,0x79,0x7C, -0x7D,0x7B,0x7C,0x79,0x71,0x6D,0x6A,0x6D,0x78,0x8D,0x9E,0x9D,0x92,0x85,0x74,0x6F, -0x70,0x73,0x78,0x7A,0x7C,0x8B,0x8F,0x87,0x7B,0x7E,0x7E,0x7A,0x82,0x84,0x7D,0x7B, -0x81,0x88,0x8B,0x85,0x7D,0x73,0x6C,0x63,0x5F,0x6B,0x79,0x83,0x89,0x8B,0x86,0x81, -0x8A,0x93,0x8F,0x83,0x77,0x7A,0x82,0x88,0x8C,0x86,0x80,0x7E,0x83,0x8C,0x8D,0x8B, -0x8E,0x86,0x77,0x75,0x7A,0x79,0x76,0x7B,0x7D,0x7D,0x80,0x84,0x83,0x78,0x73,0x79, -0x74,0x6B,0x69,0x7A,0x86,0x83,0x81,0x83,0x93,0x91,0x7B,0x7A,0x85,0x8D,0x87,0x7D, -0x82,0x82,0x73,0x6A,0x7C,0x8D,0x8D,0x83,0x7B,0x7D,0x80,0x83,0x7E,0x7F,0x86,0x7E, -0x79,0x7C,0x7D,0x7B,0x79,0x7B,0x83,0x87,0x7F,0x7C,0x70,0x66,0x75,0x7A,0x6B,0x68, -0x77,0x85,0x86,0x86,0x8C,0x91,0x8A,0x88,0x92,0x92,0x88,0x85,0x7C,0x70,0x71,0x84, -0x8F,0x8F,0x95,0x8B,0x82,0x89,0x96,0x94,0x91,0x91,0x8A,0x77,0x69,0x6A,0x74,0x88, -0x91,0x87,0x7F,0x7F,0x83,0x80,0x7D,0x7F,0x83,0x8A,0x87,0x7B,0x7C,0x7F,0x76,0x83, -0x94,0x96,0x91,0x8E,0x89,0x82,0x81,0x8C,0x8D,0x86,0x85,0x81,0x85,0x90,0x98,0x96, -0x8D,0x89,0x80,0x77,0x72,0x6D,0x6A,0x5C,0x58,0x65,0x73,0x7C,0x7F,0x80,0x81,0x82, -0x79,0x69,0x70,0x87,0x8A,0x88,0x84,0x7C,0x7D,0x8D,0x99,0x90,0x81,0x70,0x69,0x75, -0x7F,0x7F,0x78,0x7A,0x89,0x8C,0x84,0x7D,0x7A,0x74,0x75,0x7C,0x81,0x82,0x7C,0x75, -0x73,0x71,0x6F,0x73,0x71,0x6C,0x66,0x67,0x69,0x66,0x6F,0x81,0x8C,0x87,0x7E,0x82, -0x8C,0x94,0x98,0x8B,0x84,0x8D,0x8C,0x7F,0x82,0x8A,0x8D,0x8E,0x8F,0x99,0x95,0x84, -0x81,0x89,0x89,0x7C,0x6E,0x6D,0x6F,0x7C,0x89,0x7E,0x73,0x6E,0x6A,0x77,0x87,0x89, -0x83,0x89,0x97,0x9A,0x92,0x90,0x8F,0x85,0x7B,0x76,0x75,0x7B,0x81,0x83,0x7E,0x80, -0x80,0x83,0x87,0x8A,0x8D,0x8E,0x82,0x71,0x6E,0x74,0x7A,0x7B,0x76,0x7A,0x85,0x81, -0x6F,0x69,0x6B,0x70,0x79,0x76,0x6D,0x69,0x74,0x83,0x89,0x80,0x82,0x8B,0x8C,0x88, -0x7F,0x83,0x91,0x8F,0x8B,0x8F,0x8A,0x7A,0x77,0x81,0x7D,0x77,0x7E,0x86,0x89,0x7C, -0x71,0x7C,0x86,0x84,0x7F,0x79,0x74,0x75,0x76,0x79,0x79,0x7A,0x7E,0x7E,0x88,0x8C, -0x87,0x8E,0x8E,0x85,0x81,0x85,0x8C,0x8B,0x88,0x8F,0x99,0x96,0x91,0x94,0x9C,0x94, -0x87,0x85,0x84,0x7E,0x76,0x70,0x6F,0x72,0x74,0x70,0x79,0x8B,0x8C,0x83,0x85,0x8A, -0x83,0x78,0x73,0x78,0x7C,0x7B,0x7D,0x82,0x86,0x8B,0x8F,0x94,0x93,0x8D,0x86,0x85, -0x86,0x7E,0x73,0x6B,0x75,0x87,0x83,0x77,0x7C,0x86,0x87,0x78,0x71,0x7B,0x7B,0x79, -0x7A,0x75,0x77,0x72,0x6C,0x6B,0x71,0x7A,0x79,0x7C,0x7D,0x78,0x79,0x76,0x73,0x73, -0x75,0x78,0x75,0x77,0x7D,0x7D,0x83,0x88,0x92,0x95,0x8C,0x88,0x8A,0x8C,0x8B,0x83, -0x82,0x86,0x82,0x7B,0x78,0x7B,0x7E,0x82,0x7E,0x7A,0x7D,0x7C,0x74,0x71,0x70,0x71, -0x80,0x88,0x76,0x76,0x93,0x94,0x83,0x7D,0x81,0x80,0x7F,0x80,0x81,0x89,0x91,0x91, -0x94,0x9B,0x97,0x8D,0x8D,0x82,0x70,0x78,0x8A,0x86,0x79,0x78,0x7E,0x86,0x83,0x7F, -0x80,0x88,0x87,0x7F,0x7E,0x87,0x8B,0x7D,0x6F,0x78,0x8D,0x90,0x87,0x82,0x85,0x85, -0x79,0x77,0x80,0x87,0x8D,0x86,0x74,0x77,0x89,0x8E,0x87,0x81,0x7A,0x7D,0x8A,0x8E, -0x82,0x7D,0x7D,0x74,0x6C,0x6D,0x74,0x73,0x6F,0x6B,0x73,0x72,0x68,0x72,0x7C,0x77, -0x72,0x7F,0x8F,0x8F,0x77,0x68,0x71,0x7E,0x7B,0x7D,0x82,0x82,0x7D,0x83,0x8B,0x90, -0x8B,0x83,0x84,0x84,0x87,0x79,0x67,0x6E,0x7B,0x7F,0x7A,0x78,0x81,0x86,0x83,0x7A, -0x73,0x7D,0x88,0x85,0x7E,0x81,0x89,0x8C,0x90,0x92,0x84,0x7E,0x85,0x87,0x81,0x7C, -0x7C,0x74,0x6E,0x6F,0x74,0x88,0x97,0x8E,0x80,0x7D,0x85,0x89,0x81,0x7B,0x81,0x87, -0x86,0x8B,0x99,0x9F,0x93,0x88,0x87,0x86,0x82,0x8A,0x8D,0x7E,0x7B,0x81,0x88,0x8E, -0x83,0x74,0x7A,0x7A,0x71,0x6F,0x74,0x77,0x7A,0x7D,0x7F,0x7F,0x79,0x73,0x76,0x7C, -0x76,0x75,0x82,0x94,0x95,0x8D,0x8D,0x82,0x78,0x75,0x7D,0x8B,0x8D,0x88,0x8A,0x92, -0x9E,0x97,0x7A,0x71,0x7B,0x82,0x83,0x7E,0x7E,0x79,0x78,0x7A,0x7A,0x7E,0x7F,0x74, -0x76,0x80,0x87,0x8E,0x8A,0x7D,0x7A,0x77,0x76,0x73,0x67,0x6B,0x77,0x7E,0x81,0x81, -0x83,0x8B,0x8D,0x81,0x75,0x78,0x7F,0x7E,0x82,0x84,0x86,0x91,0x95,0x8B,0x88,0x8D, -0x92,0x86,0x74,0x73,0x77,0x7B,0x83,0x81,0x72,0x6E,0x7A,0x80,0x7E,0x75,0x7A,0x80, -0x79,0x7D,0x7E,0x77,0x77,0x78,0x7F,0x7C,0x78,0x83,0x91,0x91,0x92,0x93,0x91,0x8B, -0x7E,0x7A,0x77,0x71,0x78,0x7E,0x81,0x88,0x85,0x7A,0x7E,0x83,0x73,0x6B,0x70,0x71, -0x73,0x7D,0x7E,0x7B,0x7B,0x74,0x6E,0x71,0x79,0x7E,0x80,0x81,0x7D,0x77,0x7E,0x7D, -0x81,0x8A,0x82,0x7A,0x83,0x87,0x7F,0x81,0x81,0x7C,0x7B,0x81,0x8B,0x90,0x8D,0x83, -0x7A,0x79,0x7A,0x82,0x90,0x92,0x8F,0x95,0x97,0x8A,0x77,0x6E,0x72,0x73,0x76,0x77, -0x7D,0x83,0x81,0x82,0x7F,0x83,0x8A,0x85,0x85,0x84,0x7F,0x7F,0x88,0x8F,0x8A,0x8E, -0x8D,0x89,0x8F,0x8D,0x89,0x94,0x92,0x89,0x8F,0x98,0x92,0x89,0x88,0x8A,0x84,0x7B, -0x78,0x73,0x78,0x7E,0x7A,0x76,0x75,0x79,0x71,0x6B,0x6E,0x6C,0x75,0x7F,0x7A,0x7D, -0x86,0x83,0x80,0x7F,0x79,0x76,0x74,0x74,0x74,0x7C,0x83,0x7C,0x7A,0x83,0x8B,0x82, -0x78,0x7B,0x87,0x8E,0x88,0x81,0x84,0x8B,0x87,0x7E,0x79,0x7E,0x7F,0x7D,0x7C,0x7D, -0x88,0x8A,0x7D,0x7C,0x7C,0x69,0x66,0x76,0x78,0x71,0x76,0x88,0x93,0x87,0x7D,0x82, -0x81,0x7A,0x7F,0x87,0x81,0x6B,0x66,0x7E,0x95,0x8F,0x79,0x6B,0x6F,0x72,0x69,0x6E, -0x84,0x8F,0x8C,0x8A,0x93,0x98,0x90,0x8A,0x84,0x7F,0x7B,0x7C,0x82,0x82,0x7D,0x7B, -0x7F,0x86,0x8D,0x8E,0x87,0x81,0x7D,0x7C,0x7A,0x83,0x8E,0x92,0x8E,0x89,0x87,0x86, -0x85,0x86,0x8A,0x8B,0x84,0x7D,0x80,0x7E,0x72,0x66,0x68,0x76,0x7D,0x81,0x8D,0x98, -0x96,0x87,0x83,0x8B,0x8D,0x8E,0x91,0x8E,0x86,0x7C,0x7C,0x86,0x87,0x82,0x81,0x82, -0x8B,0x8C,0x81,0x7E,0x7E,0x7A,0x70,0x6B,0x6B,0x72,0x78,0x75,0x75,0x76,0x71,0x66, -0x62,0x6B,0x79,0x81,0x83,0x7F,0x7A,0x7F,0x86,0x82,0x82,0x8C,0x8F,0x88,0x82,0x82, -0x83,0x82,0x7F,0x81,0x7C,0x75,0x80,0x8A,0x90,0x8E,0x7D,0x6F,0x67,0x6D,0x7A,0x7F, -0x7C,0x7E,0x86,0x7F,0x74,0x77,0x81,0x7B,0x69,0x6A,0x75,0x79,0x78,0x74,0x73,0x7F, -0x91,0x94,0x88,0x7C,0x74,0x76,0x78,0x78,0x7D,0x88,0x8C,0x8C,0x8D,0x93,0x9D,0x97, -0x8A,0x83,0x85,0x85,0x80,0x85,0x8C,0x8D,0x90,0x8C,0x84,0x7D,0x77,0x75,0x72,0x70, -0x70,0x71,0x76,0x8A,0x8F,0x82,0x7B,0x74,0x71,0x77,0x82,0x82,0x80,0x85,0x8D,0x91, -0x8A,0x82,0x89,0x98,0x99,0x90,0x8C,0x8F,0x97,0x8F,0x7D,0x7D,0x7F,0x7B,0x70,0x68, -0x6F,0x7A,0x81,0x87,0x86,0x85,0x7E,0x77,0x72,0x70,0x6E,0x6D,0x74,0x79,0x81,0x8C, -0x8E,0x88,0x86,0x8A,0x85,0x7B,0x74,0x74,0x7B,0x84,0x8C,0x88,0x86,0x8C,0x90,0x92, -0x8C,0x88,0x85,0x85,0x8D,0x89,0x76,0x71,0x79,0x78,0x73,0x75,0x7F,0x86,0x86,0x88, -0x80,0x73,0x69,0x65,0x6B,0x73,0x73,0x72,0x75,0x75,0x73,0x76,0x85,0x92,0x8B,0x7C, -0x7A,0x82,0x83,0x7E,0x80,0x86,0x88,0x8C,0x8F,0x8D,0x87,0x80,0x80,0x85,0x89,0x8E, -0x96,0x98,0x8E,0x83,0x7C,0x80,0x89,0x88,0x81,0x7E,0x7D,0x76,0x6B,0x6D,0x76,0x75, -0x75,0x75,0x77,0x7A,0x77,0x72,0x79,0x7D,0x71,0x70,0x81,0x8C,0x85,0x7E,0x7D,0x7F, -0x80,0x83,0x87,0x85,0x83,0x87,0x95,0xA1,0x9E,0x90,0x84,0x89,0x8D,0x8C,0x8C,0x8A, -0x8C,0x8B,0x86,0x7E,0x74,0x6B,0x67,0x6A,0x6D,0x70,0x75,0x74,0x75,0x7D,0x75,0x66, -0x67,0x71,0x6C,0x66,0x73,0x84,0x88,0x8A,0x8B,0x89,0x8F,0x8E,0x7F,0x76,0x74,0x7B, -0x8C,0x92,0x94,0x95,0x92,0x96,0x98,0x96,0x8C,0x86,0x81,0x78,0x72,0x6D,0x72,0x7F, -0x81,0x83,0x84,0x81,0x81,0x84,0x85,0x7D,0x72,0x71,0x73,0x73,0x76,0x79,0x77,0x71, -0x7B,0x89,0x82,0x7C,0x7D,0x79,0x80,0x81,0x7D,0x82,0x91,0x9A,0x97,0x94,0x9B,0x9D, -0x9C,0x8D,0x83,0x8A,0x7D,0x73,0x79,0x83,0x83,0x7E,0x81,0x7D,0x79,0x7C,0x73,0x71, -0x76,0x6C,0x63,0x69,0x6D,0x6C,0x76,0x7F,0x7E,0x79,0x7C,0x75,0x73,0x70,0x6D,0x79, -0x85,0x7B,0x72,0x7D,0x91,0x95,0x90,0x8A,0x89,0x95,0x8E,0x89,0x96,0x93,0x89,0x8D, -0x91,0x88,0x83,0x84,0x7F,0x7F,0x7E,0x75,0x79,0x89,0x8A,0x84,0x78,0x6E,0x6C,0x69, -0x61,0x57,0x61,0x6D,0x73,0x82,0x89,0x85,0x86,0x89,0x8E,0x8C,0x89,0x8B,0x88,0x8F, -0x93,0x94,0x9A,0x93,0x83,0x85,0x8A,0x8C,0x87,0x86,0x7D,0x7F,0x8F,0x90,0x92,0x9B, -0x94,0x87,0x82,0x83,0x83,0x84,0x85,0x79,0x7A,0x77,0x6D,0x70,0x77,0x74,0x6F,0x6F, -0x72,0x75,0x7D,0x7E,0x81,0x93,0x84,0x74,0x7A,0x7F,0x7F,0x80,0x7E,0x82,0x85,0x85, -0x7F,0x7E,0x86,0x81,0x81,0x7F,0x7F,0x86,0x8C,0x89,0x7F,0x7A,0x79,0x75,0x76,0x76, -0x76,0x77,0x73,0x70,0x60,0x63,0x72,0x73,0x6C,0x68,0x6A,0x71,0x78,0x81,0x87,0x83, -0x7E,0x88,0x8C,0x85,0x84,0x8A,0x87,0x7F,0x83,0x8D,0x93,0x90,0x94,0x92,0x85,0x82, -0x8A,0x93,0x90,0x82,0x7F,0x7B,0x79,0x81,0x7E,0x7D,0x7F,0x84,0x83,0x7F,0x86,0x7D, -0x6F,0x72,0x77,0x81,0x88,0x84,0x83,0x87,0x8A,0x7F,0x7A,0x7C,0x7D,0x83,0x83,0x6F, -0x6F,0x7E,0x91,0x94,0x89,0x8E,0x94,0x92,0x86,0x85,0x91,0x88,0x77,0x7B,0x83,0x84, -0x77,0x7A,0x80,0x7A,0x74,0x79,0x7E,0x77,0x6F,0x74,0x72,0x6D,0x77,0x7F,0x84,0x87, -0x86,0x85,0x83,0x7C,0x77,0x7C,0x82,0x7E,0x7A,0x79,0x83,0x8C,0x8C,0x8A,0x7F,0x76, -0x76,0x7C,0x80,0x7F,0x7D,0x81,0x82,0x83,0x83,0x85,0x86,0x7E,0x7B,0x82,0x79,0x79, -0x83,0x82,0x7B,0x78,0x7D,0x82,0x84,0x78,0x6E,0x6E,0x79,0x7B,0x77,0x71,0x72,0x82, -0x8F,0x88,0x7F,0x81,0x8D,0x90,0x8D,0x80,0x75,0x82,0x87,0x7B,0x72,0x7C,0x85,0x89, -0x8A,0x88,0x82,0x87,0x89,0x81,0x7E,0x84,0x8A,0x8E,0x93,0x90,0x91,0x91,0x85,0x83, -0x8A,0x89,0x8F,0x8F,0x81,0x7B,0x83,0x89,0x86,0x7A,0x70,0x6B,0x6A,0x6C,0x6E,0x7C, -0x87,0x89,0x84,0x81,0x84,0x84,0x81,0x81,0x84,0x8D,0x8E,0x87,0x7E,0x7A,0x82,0x8F, -0x90,0x82,0x79,0x7F,0x86,0x82,0x7D,0x84,0x8F,0x8F,0x8C,0x8B,0x8B,0x7D,0x75,0x72, -0x6A,0x66,0x61,0x5C,0x5B,0x5E,0x5F,0x69,0x77,0x7B,0x79,0x7A,0x79,0x7E,0x86,0x86, -0x85,0x8A,0x90,0x94,0x97,0x9B,0x99,0x91,0x85,0x83,0x8C,0x88,0x79,0x71,0x74,0x72, -0x6E,0x77,0x83,0x82,0x81,0x81,0x80,0x82,0x7C,0x7B,0x7D,0x74,0x75,0x7C,0x7D,0x80, -0x7A,0x74,0x7E,0x8A,0x87,0x7E,0x7E,0x85,0x85,0x81,0x82,0x86,0x81,0x7C,0x79,0x79, -0x7C,0x79,0x80,0x8B,0x8A,0x84,0x86,0x8F,0x94,0x91,0x90,0x90,0x90,0x8D,0x86,0x80, -0x7C,0x80,0x84,0x82,0x84,0x81,0x7D,0x75,0x6B,0x6D,0x69,0x6B,0x75,0x77,0x74,0x77, -0x82,0x89,0x82,0x7C,0x7D,0x88,0x91,0x8C,0x78,0x6D,0x71,0x75,0x79,0x7E,0x7E,0x7B, -0x7E,0x80,0x7F,0x85,0x8F,0x9B,0x9E,0x91,0x86,0x8C,0x93,0x88,0x7B,0x74,0x7A,0x83, -0x83,0x7F,0x7E,0x7E,0x80,0x79,0x71,0x75,0x7F,0x79,0x6F,0x73,0x7A,0x7B,0x7E,0x85, -0x84,0x7F,0x7D,0x79,0x79,0x82,0x85,0x86,0x8F,0x95,0x90,0x8D,0x96,0x92,0x83,0x7E, -0x72,0x6E,0x7C,0x82,0x84,0x8D,0x92,0x8F,0x8B,0x88,0x7B,0x73,0x77,0x71,0x62,0x64, -0x72,0x71,0x6F,0x73,0x7A,0x79,0x78,0x77,0x7C,0x86,0x8A,0x87,0x81,0x7E,0x85,0x89, -0x8A,0x8C,0x90,0x91,0x8D,0x85,0x83,0x87,0x8C,0x8B,0x8A,0x85,0x78,0x71,0x71,0x75, -0x7A,0x7F,0x84,0x81,0x7F,0x82,0x83,0x80,0x79,0x7B,0x83,0x79,0x6F,0x6F,0x76,0x7E, -0x82,0x7D,0x70,0x69,0x75,0x83,0x8C,0x8B,0x84,0x8B,0x93,0x91,0x83,0x78,0x7D,0x85, -0x91,0x9A,0x92,0x8D,0x91,0x94,0x97,0x96,0x8D,0x7C,0x69,0x6D,0x7E,0x84,0x89,0x8F, -0x8A,0x7F,0x7B,0x7A,0x7A,0x76,0x6B,0x5F,0x5C,0x60,0x6E,0x7C,0x7C,0x77,0x78,0x7E, -0x81,0x83,0x83,0x7C,0x80,0x8F,0x8F,0x88,0x8F,0x9A,0xA0,0xA0,0x96,0x87,0x7E,0x7E, -0x7A,0x7A,0x84,0x83,0x7D,0x84,0x84,0x76,0x6F,0x80,0x90,0x89,0x76,0x6D,0x70,0x72, -0x70,0x75,0x7A,0x77,0x6C,0x6A,0x71,0x73,0x75,0x79,0x80,0x86,0x85,0x8A,0x89,0x85, -0x87,0x86,0x84,0x8D,0x92,0x81,0x6E,0x70,0x80,0x8A,0x85,0x7C,0x74,0x74,0x77,0x75, -0x77,0x7F,0x7B,0x77,0x7A,0x77,0x76,0x84,0x91,0x93,0x7E,0x6C,0x74,0x80,0x7E,0x7C, -0x7E,0x7B,0x6E,0x6A,0x74,0x7A,0x84,0x8B,0x8C,0x86,0x80,0x8D,0x94,0x8C,0x8A,0x89, -0x7F,0x78,0x7F,0x8D,0x90,0x84,0x74,0x73,0x7B,0x82,0x87,0x8A,0x8E,0x8B,0x90,0x98, -0x94,0x88,0x85,0x87,0x83,0x7C,0x79,0x81,0x83,0x7A,0x75,0x7A,0x82,0x7D,0x7B,0x75, -0x69,0x6A,0x73,0x7E,0x8B,0x8F,0x93,0x93,0x8F,0x88,0x84,0x89,0x8A,0x87,0x7F,0x7A, -0x88,0x94,0x90,0x88,0x7F,0x7C,0x7D,0x7E,0x84,0x84,0x80,0x7C,0x82,0x8A,0x85,0x84, -0x88,0x82,0x7B,0x82,0x89,0x83,0x7F,0x81,0x7B,0x73,0x78,0x7D,0x78,0x6D,0x6C,0x76, -0x7E,0x82,0x7C,0x72,0x73,0x76,0x74,0x74,0x7B,0x81,0x7E,0x82,0x8D,0x89,0x83,0x82, -0x84,0x85,0x7D,0x76,0x6F,0x6E,0x7C,0x82,0x81,0x82,0x82,0x80,0x7C,0x7F,0x87,0x87, -0x81,0x7B,0x76,0x7A,0x83,0x85,0x85,0x82,0x81,0x82,0x83,0x82,0x80,0x85,0x8B,0x8B, -0x82,0x76,0x71,0x6D,0x72,0x75,0x73,0x79,0x84,0x87,0x85,0x7B,0x76,0x7C,0x84,0x89, -0x82,0x78,0x77,0x75,0x76,0x83,0x88,0x82,0x83,0x84,0x83,0x87,0x8C,0x8A,0x84,0x79, -0x75,0x81,0x84,0x80,0x85,0x8D,0x8E,0x8E,0x8C,0x85,0x7F,0x82,0x85,0x87,0x86,0x7C, -0x7D,0x83,0x82,0x82,0x7E,0x78,0x76,0x7B,0x7F,0x80,0x8A,0x93,0x8D,0x82,0x7E,0x85, -0x93,0x98,0x8F,0x8F,0x8C,0x8B,0x8C,0x89,0x83,0x78,0x79,0x7A,0x71,0x6B,0x6E,0x77, -0x78,0x7B,0x88,0x8A,0x82,0x7B,0x79,0x7B,0x7B,0x78,0x7D,0x80,0x7C,0x75,0x72,0x75, -0x7B,0x87,0x86,0x7C,0x7B,0x7D,0x79,0x79,0x82,0x82,0x75,0x72,0x7D,0x91,0xA1,0xA2, -0x95,0x84,0x79,0x78,0x77,0x70,0x6A,0x66,0x66,0x69,0x69,0x6A,0x76,0x80,0x77,0x6F, -0x73,0x71,0x71,0x77,0x7F,0x86,0x88,0x83,0x83,0x86,0x89,0x8C,0x87,0x8A,0x8B,0x88, -0x7F,0x78,0x81,0x8D,0x8C,0x84,0x83,0x87,0x89,0x88,0x8C,0x92,0x92,0x8B,0x84,0x80, -0x82,0x81,0x7D,0x76,0x77,0x78,0x70,0x70,0x7D,0x8A,0x89,0x89,0x86,0x7A,0x75,0x7A, -0x7D,0x7D,0x7F,0x87,0x8E,0x83,0x78,0x7E,0x8B,0x99,0x9F,0x99,0x92,0x8C,0x82,0x7C, -0x7F,0x82,0x80,0x80,0x85,0x8C,0x8A,0x87,0x8F,0x8A,0x7B,0x70,0x6D,0x6D,0x72,0x75, -0x76,0x7B,0x82,0x85,0x82,0x7F,0x82,0x85,0x87,0x7A,0x68,0x6C,0x7D,0x81,0x7D,0x80, -0x85,0x86,0x84,0x7B,0x78,0x7C,0x7A,0x79,0x81,0x89,0x91,0x93,0x92,0x92,0x8F,0x8D, -0x8D,0x8D,0x88,0x80,0x78,0x7B,0x88,0x85,0x7B,0x71,0x6B,0x71,0x7A,0x78,0x6A,0x62, -0x66,0x6C,0x73,0x81,0x87,0x86,0x86,0x7F,0x7A,0x7A,0x7D,0x83,0x87,0x88,0x88,0x8A, -0x93,0x9A,0x94,0x86,0x7F,0x80,0x81,0x83,0x83,0x7C,0x77,0x78,0x7B,0x80,0x8B,0x91, -0x8A,0x7F,0x6D,0x60,0x65,0x72,0x6F,0x6C,0x70,0x74,0x7C,0x7F,0x81,0x80,0x7B,0x74, -0x70,0x72,0x72,0x6E,0x74,0x79,0x79,0x84,0x94,0x98,0x95,0x95,0x95,0x93,0x90,0x8A, -0x88,0x8C,0x89,0x81,0x7D,0x79,0x79,0x85,0x8C,0x84,0x79,0x76,0x7B,0x82,0x85,0x7F, -0x76,0x73,0x71,0x72,0x7B,0x82,0x7B,0x71,0x78,0x7D,0x78,0x73,0x72,0x7B,0x7E,0x7D, -0x82,0x83,0x82,0x8A,0x8F,0x92,0x95,0x96,0x97,0x96,0x9A,0x9D,0x96,0x8A,0x7F,0x76, -0x78,0x84,0x88,0x84,0x80,0x80,0x83,0x85,0x7D,0x74,0x71,0x75,0x76,0x77,0x7F,0x83, -0x86,0x8D,0x8F,0x8C,0x89,0x84,0x7F,0x7F,0x7B,0x7B,0x83,0x88,0x87,0x88,0x8A,0x86, -0x7A,0x6C,0x70,0x81,0x91,0x8B,0x77,0x78,0x87,0x8E,0x89,0x78,0x6A,0x65,0x6A,0x73, -0x78,0x79,0x78,0x7B,0x78,0x71,0x77,0x84,0x84,0x7A,0x72,0x6E,0x70,0x78,0x79,0x79, -0x81,0x8D,0x94,0x92,0x8D,0x8C,0x8D,0x8A,0x85,0x7F,0x78,0x77,0x7C,0x7C,0x71,0x6B, -0x73,0x7F,0x87,0x85,0x81,0x84,0x88,0x7D,0x72,0x71,0x71,0x71,0x71,0x7A,0x83,0x83, -0x8A,0x90,0x91,0x8E,0x88,0x87,0x92,0x93,0x80,0x78,0x84,0x85,0x7F,0x7E,0x82,0x86, -0x8B,0x8A,0x81,0x82,0x87,0x8A,0x8C,0x89,0x85,0x83,0x82,0x82,0x7E,0x7C,0x7C,0x80, -0x76,0x70,0x7C,0x86,0x7E,0x71,0x6E,0x72,0x7A,0x7C,0x80,0x95,0x9F,0x92,0x84,0x84, -0x8B,0x8E,0x8A,0x7F,0x7B,0x7E,0x7F,0x7C,0x7D,0x81,0x86,0x87,0x80,0x7A,0x76,0x70, -0x6E,0x72,0x75,0x7B,0x80,0x82,0x7B,0x7A,0x81,0x7D,0x73,0x70,0x78,0x7A,0x73,0x74, -0x81,0x90,0x97,0x8D,0x87,0x88,0x85,0x86,0x88,0x81,0x7F,0x82,0x82,0x88,0x8C,0x86, -0x81,0x84,0x85,0x85,0x79,0x6D,0x70,0x78,0x78,0x71,0x6F,0x76,0x7B,0x7B,0x73,0x70, -0x7B,0x7A,0x79,0x81,0x84,0x84,0x8C,0x91,0x8A,0x83,0x89,0x8D,0x84,0x7F,0x85,0x8C, -0x8F,0x88,0x83,0x88,0x8D,0x86,0x83,0x8C,0x89,0x80,0x7A,0x76,0x75,0x7F,0x86,0x7A, -0x75,0x7F,0x7F,0x80,0x84,0x82,0x7A,0x77,0x74,0x73,0x75,0x74,0x73,0x75,0x7B,0x7B, -0x81,0x84,0x85,0x8A,0x89,0x84,0x7A,0x6E,0x73,0x80,0x88,0x8B,0x91,0x95,0x8B,0x88, -0x89,0x81,0x7E,0x7E,0x7D,0x7D,0x7C,0x7E,0x78,0x77,0x75,0x74,0x7A,0x77,0x74,0x78, -0x77,0x77,0x7D,0x85,0x88,0x85,0x83,0x80,0x80,0x7E,0x7C,0x86,0x8E,0x8A,0x85,0x82, -0x84,0x7A,0x71,0x70,0x72,0x7D,0x87,0x8F,0x94,0x8F,0x84,0x85,0x8D,0x91,0x90,0x91, -0x8C,0x83,0x87,0x87,0x83,0x89,0x88,0x82,0x7F,0x7A,0x7B,0x7A,0x75,0x75,0x7F,0x83, -0x7F,0x78,0x6E,0x5F,0x63,0x76,0x7B,0x7F,0x80,0x81,0x7F,0x85,0x8B,0x8D,0x92,0x8A, -0x7E,0x82,0x84,0x7F,0x84,0x8B,0x8B,0x8A,0x8F,0x8E,0x89,0x85,0x83,0x8A,0x90,0x7C, -0x69,0x76,0x84,0x7E,0x7C,0x7E,0x7C,0x81,0x80,0x7A,0x79,0x77,0x75,0x7B,0x7F,0x7C, -0x75,0x73,0x72,0x73,0x73,0x76,0x77,0x7D,0x86,0x84,0x86,0x88,0x85,0x84,0x7B,0x77, -0x7D,0x7E,0x81,0x84,0x84,0x88,0x91,0x97,0x95,0x91,0x8C,0x85,0x7E,0x7A,0x78,0x7A, -0x82,0x87,0x7F,0x79,0x7D,0x77,0x6D,0x73,0x7D,0x86,0x85,0x7E,0x7D,0x78,0x6E,0x67, -0x69,0x76,0x81,0x86,0x85,0x84,0x8D,0x90,0x84,0x7F,0x7E,0x7B,0x7C,0x7D,0x7F,0x83, -0x85,0x85,0x86,0x85,0x82,0x7C,0x75,0x71,0x70,0x70,0x7C,0x8B,0x8D,0x86,0x7B,0x79, -0x7E,0x75,0x72,0x7F,0x83,0x79,0x79,0x82,0x83,0x80,0x83,0x81,0x7F,0x7E,0x7B,0x83, -0x94,0x95,0x8A,0x8C,0x91,0x8C,0x8C,0x8E,0x8B,0x8B,0x8A,0x79,0x77,0x81,0x80,0x7F, -0x7D,0x78,0x75,0x74,0x76,0x7A,0x7E,0x7D,0x77,0x7B,0x84,0x87,0x88,0x85,0x7F,0x7A, -0x74,0x79,0x83,0x8A,0x87,0x85,0x86,0x7E,0x78,0x77,0x79,0x7F,0x89,0x8B,0x89,0x8B, -0x8D,0x8E,0x91,0x91,0x86,0x7D,0x7E,0x7F,0x82,0x88,0x8B,0x85,0x7F,0x7E,0x80,0x81, -0x77,0x71,0x6E,0x6D,0x77,0x80,0x7D,0x7B,0x81,0x82,0x83,0x86,0x84,0x7B,0x76,0x7F, -0x86,0x88,0x86,0x84,0x89,0x8B,0x7F,0x73,0x76,0x81,0x8B,0x8A,0x7F,0x79,0x7F,0x80, -0x78,0x77,0x7C,0x81,0x81,0x81,0x83,0x83,0x81,0x7F,0x7D,0x75,0x70,0x77,0x74,0x68, -0x6D,0x78,0x78,0x75,0x77,0x7D,0x84,0x81,0x76,0x76,0x7C,0x79,0x78,0x86,0x95,0x9B, -0x99,0x8F,0x82,0x7A,0x78,0x6D,0x64,0x70,0x7C,0x7C,0x7F,0x87,0x8B,0x8A,0x89,0x8E, -0x8D,0x89,0x82,0x7A,0x79,0x87,0x91,0x8B,0x86,0x86,0x86,0x85,0x81,0x75,0x79,0x8C, -0x87,0x78,0x78,0x7C,0x7B,0x77,0x73,0x78,0x7E,0x77,0x72,0x7E,0x8F,0x8E,0x89,0x8B, -0x8C,0x8A,0x85,0x85,0x85,0x86,0x8C,0x91,0x93,0x92,0x8D,0x87,0x81,0x7C,0x7F,0x78, -0x73,0x78,0x7A,0x7D,0x82,0x8B,0x8F,0x8D,0x8A,0x8B,0x8C,0x85,0x82,0x86,0x84,0x7A, -0x7D,0x83,0x86,0x7B,0x6A,0x62,0x5E,0x5E,0x60,0x68,0x74,0x78,0x79,0x7E,0x81,0x83, -0x89,0x8F,0x94,0x95,0x95,0x93,0x92,0x97,0x8B,0x7C,0x7D,0x80,0x82,0x80,0x7F,0x80, -0x85,0x84,0x7F,0x80,0x83,0x79,0x71,0x72,0x73,0x73,0x75,0x83,0x8B,0x7A,0x6E,0x6F, -0x6D,0x62,0x5F,0x6B,0x74,0x6E,0x6E,0x78,0x81,0x7F,0x73,0x76,0x83,0x87,0x87,0x88, -0x95,0x9A,0x96,0x91,0x95,0xA2,0x9A,0x87,0x7A,0x78,0x7A,0x7D,0x7E,0x83,0x8C,0x8E, -0x87,0x7A,0x76,0x6E,0x64,0x68,0x70,0x71,0x6D,0x72,0x7A,0x82,0x88,0x85,0x7D,0x79, -0x75,0x71,0x6F,0x73,0x7A,0x7F,0x8C,0x98,0x9A,0x99,0x97,0x91,0x8B,0x85,0x83,0x88, -0x91,0x8F,0x86,0x87,0x8D,0x8D,0x8C,0x8C,0x86,0x81,0x83,0x82,0x7A,0x76,0x72,0x6E, -0x6D,0x6D,0x70,0x74,0x76,0x76,0x77,0x7B,0x85,0x8B,0x8E,0x91,0x8A,0x83,0x7E,0x82, -0x94,0x9A,0x8E,0x88,0x92,0x97,0x8B,0x8A,0x97,0x9B,0x8E,0x82,0x80,0x7E,0x7A,0x7D, -0x78,0x7A,0x84,0x85,0x80,0x7E,0x7D,0x7D,0x7D,0x7E,0x7C,0x72,0x69,0x67,0x6A,0x70, -0x77,0x7D,0x7C,0x7A,0x7F,0x89,0x87,0x7A,0x77,0x7E,0x7E,0x80,0x82,0x86,0x8B,0x8D, -0x90,0x91,0x8E,0x8D,0x87,0x84,0x81,0x7D,0x75,0x6C,0x71,0x7A,0x7D,0x7C,0x77,0x71, -0x6A,0x65,0x63,0x69,0x73,0x7C,0x7E,0x76,0x71,0x78,0x79,0x79,0x81,0x86,0x84,0x83, -0x7D,0x73,0x75,0x85,0x8D,0x84,0x7C,0x7B,0x7F,0x80,0x80,0x80,0x86,0x8E,0x8D,0x8D, -0x8F,0x88,0x7E,0x7D,0x83,0x8B,0x8A,0x7F,0x79,0x78,0x76,0x75,0x79,0x7B,0x73,0x6C, -0x6E,0x7A,0x85,0x8B,0x8B,0x85,0x84,0x88,0x89,0x8A,0x8D,0x85,0x7F,0x7D,0x83,0x88, -0x83,0x7F,0x87,0x90,0x8E,0x88,0x86,0x8B,0x93,0x91,0x87,0x7F,0x81,0x88,0x8A,0x89, -0x85,0x81,0x7C,0x79,0x77,0x7B,0x82,0x88,0x8B,0x87,0x7F,0x78,0x76,0x79,0x7D,0x7D, -0x80,0x83,0x82,0x7E,0x7B,0x7C,0x83,0x83,0x81,0x81,0x80,0x80,0x84,0x81,0x77,0x79, -0x7D,0x7F,0x81,0x80,0x84,0x86,0x81,0x81,0x80,0x81,0x7A,0x69,0x68,0x7A,0x8F,0x97, -0x90,0x8A,0x87,0x86,0x81,0x7B,0x78,0x6C,0x6D,0x7C,0x80,0x79,0x7A,0x86,0x8A,0x7F, -0x76,0x7A,0x7B,0x6E,0x64,0x74,0x86,0x85,0x80,0x83,0x88,0x8A,0x86,0x7A,0x6F,0x74, -0x7E,0x85,0x8A,0x8B,0x85,0x80,0x81,0x84,0x8A,0x84,0x7F,0x81,0x80,0x76,0x73,0x7E, -0x89,0x8C,0x87,0x7F,0x82,0x88,0x84,0x7B,0x78,0x7B,0x7B,0x78,0x77,0x74,0x73,0x75, -0x74,0x72,0x75,0x79,0x7D,0x80,0x7E,0x7C,0x83,0x8E,0x93,0x96,0x92,0x92,0x94,0x8C, -0x89,0x8A,0x88,0x81,0x7C,0x80,0x8B,0x87,0x7C,0x78,0x77,0x73,0x74,0x7F,0x80,0x79, -0x76,0x74,0x77,0x80,0x84,0x84,0x83,0x7E,0x73,0x70,0x79,0x80,0x81,0x7F,0x84,0x8B, -0x82,0x76,0x7B,0x8C,0x94,0x8C,0x86,0x82,0x84,0x87,0x8B,0x93,0x91,0x8A,0x88,0x88, -0x86,0x84,0x83,0x85,0x7F,0x76,0x76,0x7D,0x84,0x89,0x84,0x85,0x88,0x83,0x83,0x88, -0x87,0x7D,0x7A,0x7C,0x7B,0x75,0x75,0x7D,0x83,0x83,0x7F,0x86,0x8C,0x84,0x79,0x7A, -0x84,0x87,0x89,0x8C,0x86,0x7A,0x72,0x73,0x79,0x82,0x83,0x7F,0x81,0x80,0x7B,0x78, -0x79,0x7A,0x74,0x6E,0x71,0x71,0x6A,0x64,0x69,0x7A,0x86,0x81,0x76,0x73,0x7A,0x7E, -0x76,0x73,0x7A,0x85,0x87,0x89,0x8D,0x87,0x7E,0x80,0x7D,0x7B,0x85,0x89,0x8A,0x88, -0x84,0x80,0x7E,0x88,0x86,0x7A,0x80,0x88,0x86,0x80,0x7E,0x84,0x84,0x7D,0x74,0x73, -0x76,0x71,0x68,0x6A,0x7B,0x87,0x89,0x83,0x7F,0x7F,0x82,0x83,0x82,0x84,0x85,0x7E, -0x77,0x7B,0x88,0x92,0xA1,0xA4,0x98,0x90,0x90,0x89,0x80,0x7C,0x7B,0x7C,0x82,0x85, -0x83,0x87,0x88,0x84,0x7E,0x7B,0x7E,0x7D,0x79,0x79,0x79,0x82,0x8F,0x90,0x8A,0x83, -0x7D,0x80,0x82,0x77,0x6D,0x6F,0x76,0x7B,0x80,0x82,0x84,0x89,0x87,0x7D,0x83,0x8C, -0x8A,0x7E,0x74,0x73,0x7D,0x87,0x86,0x80,0x83,0x87,0x89,0x87,0x87,0x85,0x7E,0x79, -0x79,0x7A,0x7E,0x82,0x7D,0x76,0x78,0x84,0x8E,0x90,0x83,0x7A,0x7C,0x7D,0x76,0x7D, -0x86,0x82,0x79,0x78,0x76,0x73,0x77,0x79,0x7D,0x80,0x82,0x86,0x90,0x95,0x94,0x89, -0x7E,0x78,0x79,0x7C,0x7B,0x80,0x83,0x87,0x87,0x84,0x83,0x81,0x77,0x77,0x83,0x84, -0x79,0x78,0x7D,0x7E,0x84,0x8D,0x89,0x82,0x81,0x7F,0x7F,0x7E,0x7E,0x7B,0x75,0x6C, -0x70,0x78,0x78,0x70,0x6B,0x74,0x7E,0x7D,0x79,0x7C,0x81,0x8D,0x92,0x8E,0x8A,0x88, -0x82,0x7A,0x76,0x7C,0x83,0x81,0x7E,0x84,0x90,0x91,0x8E,0x8B,0x81,0x76,0x6D,0x73, -0x7D,0x7C,0x7A,0x75,0x74,0x77,0x77,0x7E,0x84,0x81,0x79,0x6D,0x68,0x67,0x6A,0x7F, -0x8B,0x84,0x80,0x84,0x85,0x8A,0x92,0x90,0x88,0x89,0x85,0x7B,0x77,0x7D,0x85,0x88, -0x8B,0x8B,0x85,0x85,0x7B,0x7E,0x98,0xA0,0x98,0x99,0x9A,0x8D,0x80,0x83,0x86,0x7F, -0x77,0x71,0x75,0x79,0x74,0x6C,0x65,0x6B,0x77,0x7A,0x7E,0x7E,0x7B,0x7B,0x7D,0x81, -0x84,0x89,0x8A,0x85,0x8A,0x90,0x86,0x82,0x89,0x83,0x7C,0x84,0x8B,0x89,0x8E,0x91, -0x8F,0x8E,0x8E,0x90,0x91,0x86,0x76,0x72,0x76,0x78,0x77,0x7F,0x87,0x89,0x80,0x75, -0x75,0x7A,0x7B,0x74,0x74,0x76,0x76,0x72,0x71,0x76,0x7B,0x7C,0x7B,0x7B,0x7D,0x78, -0x73,0x79,0x84,0x8A,0x87,0x85,0x82,0x80,0x86,0x8C,0x89,0x85,0x7F,0x7D,0x84,0x89, -0x86,0x85,0x83,0x7C,0x7B,0x80,0x7A,0x6D,0x67,0x6C,0x77,0x7D,0x7F,0x83,0x80,0x79, -0x7A,0x7A,0x7C,0x79,0x76,0x77,0x78,0x81,0x87,0x87,0x8A,0x92,0x94,0x8D,0x89,0x84, -0x7A,0x79,0x7C,0x7E,0x83,0x85,0x8A,0x91,0x8B,0x82,0x7F,0x82,0x82,0x7D,0x79,0x73, -0x72,0x77,0x7A,0x79,0x79,0x7E,0x80,0x7E,0x7A,0x71,0x76,0x83,0x85,0x80,0x7D,0x7F, -0x84,0x82,0x81,0x8C,0x98,0x98,0x89,0x7F,0x7D,0x85,0x8D,0x89,0x84,0x85,0x88,0x85, -0x7E,0x78,0x7C,0x83,0x7E,0x7A,0x88,0x93,0x8C,0x85,0x84,0x7E,0x81,0x82,0x7B,0x79, -0x75,0x72,0x78,0x7D,0x79,0x79,0x84,0x87,0x7C,0x79,0x84,0x85,0x85,0x82,0x7D,0x82, -0x85,0x86,0x8A,0x8D,0x8C,0x87,0x84,0x82,0x7A,0x7A,0x7C,0x80,0x83,0x88,0x8D,0x97, -0x97,0x8A,0x84,0x89,0x84,0x7A,0x75,0x73,0x77,0x75,0x6C,0x6D,0x78,0x7B,0x73,0x71, -0x7B,0x81,0x7D,0x75,0x6F,0x73,0x79,0x74,0x74,0x7C,0x7D,0x7E,0x8A,0x95,0x94,0x92, -0x8D,0x87,0x84,0x7C,0x78,0x7F,0x83,0x80,0x7A,0x7E,0x85,0x82,0x7C,0x7B,0x80,0x81, -0x7C,0x75,0x75,0x79,0x72,0x68,0x68,0x6C,0x6F,0x72,0x76,0x7F,0x84,0x85,0x83,0x7B, -0x79,0x78,0x78,0x7D,0x7F,0x7E,0x81,0x89,0x94,0x92,0x84,0x7F,0x80,0x7E,0x7A,0x7C, -0x81,0x84,0x81,0x79,0x79,0x88,0x93,0x90,0x8A,0x8F,0x95,0x8F,0x86,0x84,0x88,0x89, -0x85,0x80,0x7A,0x7A,0x7C,0x7D,0x7C,0x75,0x7A,0x85,0x85,0x7D,0x75,0x71,0x79,0x82, -0x82,0x85,0x8C,0x91,0x8C,0x88,0x89,0x8D,0x92,0x8F,0x89,0x84,0x7C,0x7B,0x86,0x8D, -0x8A,0x8A,0x8C,0x88,0x83,0x7E,0x7E,0x83,0x86,0x85,0x88,0x89,0x81,0x7B,0x7D,0x7D, -0x78,0x75,0x73,0x73,0x74,0x6E,0x6E,0x7C,0x86,0x86,0x82,0x7E,0x7F,0x80,0x7C,0x7D, -0x89,0x8C,0x88,0x89,0x8D,0x8A,0x86,0x89,0x8B,0x83,0x78,0x7C,0x81,0x7C,0x76,0x76, -0x7F,0x89,0x8A,0x88,0x85,0x83,0x7A,0x72,0x70,0x6F,0x6E,0x70,0x76,0x75,0x73,0x70, -0x6F,0x77,0x81,0x7D,0x78,0x7C,0x7F,0x7C,0x78,0x7A,0x82,0x87,0x8A,0x89,0x86,0x7D, -0x76,0x7D,0x86,0x85,0x7F,0x7B,0x76,0x76,0x75,0x75,0x7B,0x86,0x89,0x86,0x83,0x80, -0x7D,0x7B,0x7A,0x74,0x6D,0x6E,0x79,0x7E,0x7D,0x7C,0x82,0x86,0x8A,0x8A,0x88,0x87, -0x83,0x7D,0x7E,0x81,0x7F,0x77,0x70,0x77,0x82,0x88,0x85,0x81,0x84,0x8B,0x8D,0x87, -0x86,0x89,0x87,0x86,0x8A,0x8E,0x91,0x8F,0x8D,0x89,0x89,0x8B,0x86,0x81,0x75,0x68, -0x6A,0x72,0x77,0x7D,0x83,0x83,0x7B,0x76,0x79,0x82,0x89,0x88,0x89,0x8E,0x90,0x8B, -0x86,0x85,0x84,0x80,0x83,0x88,0x85,0x7E,0x7C,0x84,0x8B,0x8D,0x8B,0x8C,0x8E,0x8A, -0x80,0x7F,0x82,0x81,0x7E,0x7C,0x82,0x89,0x89,0x84,0x85,0x88,0x85,0x80,0x7C,0x74, -0x6D,0x6C,0x73,0x7D,0x81,0x7C,0x7A,0x7E,0x7D,0x76,0x77,0x79,0x77,0x78,0x79,0x81, -0x8A,0x8E,0x8F,0x8C,0x8C,0x8B,0x82,0x75,0x6E,0x6D,0x75,0x7B,0x7D,0x7E,0x80,0x83, -0x84,0x81,0x7C,0x7C,0x81,0x88,0x89,0x80,0x73,0x70,0x6E,0x6C,0x72,0x78,0x77,0x73, -0x74,0x74,0x71,0x6F,0x70,0x78,0x7F,0x85,0x85,0x82,0x80,0x7C,0x7E,0x86,0x88,0x86, -0x85,0x85,0x84,0x7F,0x7E,0x80,0x7E,0x7E,0x80,0x7C,0x78,0x7B,0x80,0x85,0x92,0x9C, -0x97,0x91,0x92,0x87,0x79,0x74,0x74,0x76,0x73,0x71,0x75,0x80,0x8A,0x8B,0x86,0x85, -0x84,0x7A,0x71,0x74,0x7A,0x7B,0x7D,0x83,0x8F,0x9B,0x9D,0x96,0x8D,0x83,0x7F,0x7D, -0x7D,0x84,0x88,0x87,0x86,0x86,0x8F,0x9D,0xA0,0x99,0x8D,0x7E,0x74,0x76,0x78,0x78, -0x7D,0x7F,0x7F,0x81,0x7F,0x76,0x76,0x7F,0x7D,0x78,0x7D,0x81,0x81,0x81,0x86,0x8B, -0x8A,0x86,0x82,0x79,0x72,0x73,0x76,0x7A,0x80,0x8A,0x91,0x92,0x8E,0x88,0x84,0x83, -0x82,0x81,0x85,0x87,0x81,0x77,0x76,0x7B,0x7F,0x7C,0x75,0x6E,0x68,0x6A,0x6C,0x6C, -0x6B,0x6C,0x72,0x78,0x7E,0x80,0x7F,0x83,0x83,0x7B,0x7A,0x7F,0x86,0x87,0x88,0x8E, -0x94,0x97,0x95,0x92,0x92,0x88,0x79,0x6F,0x6F,0x74,0x6E,0x71,0x7E,0x7D,0x7A,0x7E, -0x81,0x80,0x77,0x70,0x6B,0x6A,0x6E,0x6E,0x76,0x82,0x86,0x8A,0x8E,0x88,0x7F,0x7E, -0x83,0x81,0x7B,0x79,0x7F,0x82,0x7F,0x7A,0x77,0x7D,0x88,0x8A,0x8A,0x8D,0x8E,0x8B, -0x8B,0x8E,0x91,0x8A,0x7D,0x79,0x76,0x75,0x74,0x73,0x7D,0x86,0x86,0x83,0x7F,0x7B, -0x79,0x77,0x75,0x78,0x81,0x86,0x88,0x8D,0x8C,0x85,0x84,0x85,0x85,0x80,0x79,0x7A, -0x7B,0x7D,0x80,0x84,0x8B,0x8C,0x85,0x83,0x8D,0x94,0x90,0x8E,0x8C,0x85,0x82,0x82, -0x82,0x84,0x82,0x80,0x81,0x81,0x78,0x74,0x78,0x7F,0x84,0x85,0x82,0x80,0x7F,0x7F, -0x80,0x7E,0x7B,0x7B,0x7E,0x7E,0x7F,0x82,0x85,0x89,0x8B,0x88,0x85,0x86,0x89,0x8B, -0x85,0x80,0x7F,0x86,0x8F,0x95,0x96,0x93,0x87,0x80,0x7F,0x7D,0x76,0x72,0x6B,0x67, -0x69,0x6B,0x6E,0x72,0x75,0x76,0x7C,0x83,0x80,0x76,0x74,0x74,0x7A,0x82,0x81,0x7F, -0x82,0x82,0x7C,0x81,0x8F,0x8E,0x82,0x7B,0x75,0x71,0x74,0x7D,0x84,0x87,0x84,0x81, -0x81,0x7D,0x71,0x6F,0x74,0x77,0x77,0x73,0x75,0x82,0x83,0x7A,0x74,0x79,0x7E,0x7B, -0x7C,0x7E,0x84,0x8B,0x87,0x84,0x86,0x8B,0x87,0x7E,0x80,0x80,0x7B,0x7B,0x7B,0x80, -0x8A,0x8C,0x89,0x87,0x88,0x86,0x7D,0x7B,0x7F,0x84,0x83,0x85,0x8B,0x8B,0x8E,0x91, -0x88,0x77,0x6F,0x74,0x76,0x72,0x76,0x80,0x89,0x8F,0x89,0x7F,0x7C,0x7C,0x7E,0x7D, -0x7E,0x7E,0x79,0x77,0x78,0x7E,0x88,0x8C,0x8C,0x8C,0x8E,0x8D,0x83,0x7C,0x81,0x87, -0x89,0x82,0x80,0x7F,0x81,0x8C,0x91,0x8E,0x8A,0x8E,0x88,0x7C,0x74,0x73,0x75,0x76, -0x77,0x7C,0x80,0x7F,0x7D,0x80,0x82,0x7D,0x7A,0x83,0x85,0x7D,0x80,0x84,0x84,0x81, -0x83,0x85,0x88,0x83,0x78,0x78,0x7F,0x82,0x83,0x80,0x7D,0x83,0x83,0x7C,0x76,0x79, -0x81,0x8A,0x87,0x7C,0x7C,0x8A,0x8D,0x8A,0x86,0x7D,0x78,0x7A,0x74,0x6B,0x6A,0x70, -0x78,0x7A,0x7C,0x7C,0x88,0x8E,0x87,0x85,0x89,0x85,0x85,0x86,0x82,0x7D,0x80,0x7F, -0x7D,0x83,0x82,0x7B,0x7F,0x7C,0x74,0x75,0x76,0x75,0x70,0x74,0x79,0x79,0x7A,0x7B, -0x83,0x8F,0x8D,0x87,0x89,0x88,0x83,0x7C,0x77,0x76,0x7D,0x81,0x80,0x7C,0x7F,0x7F, -0x7E,0x7E,0x81,0x7F,0x7B,0x7C,0x7A,0x75,0x76,0x7D,0x83,0x85,0x82,0x87,0x8A,0x8A, -0x85,0x7F,0x7A,0x82,0x84,0x7F,0x7C,0x7E,0x85,0x82,0x82,0x7C,0x7B,0x7A,0x75,0x71, -0x7A,0x81,0x8B,0x8F,0x8D,0x83,0x7B,0x7D,0x7F,0x7D,0x81,0x88,0x8B,0x8A,0x88,0x8B, -0x88,0x89,0x80,0x83,0x8F,0x95,0x8D,0x85,0x80,0x82,0x87,0x8D,0x8F,0x87,0x7F,0x73, -0x72,0x73,0x76,0x81,0x8E,0x8B,0x82,0x75,0x75,0x78,0x7C,0x7F,0x7E,0x86,0x8B,0x85, -0x83,0x82,0x80,0x83,0x84,0x85,0x7F,0x82,0x7E,0x7D,0x84,0x84,0x80,0x87,0x8A,0x87, -0x84,0x8A,0x8E,0x82,0x7A,0x76,0x75,0x70,0x65,0x67,0x78,0x82,0x8A,0x88,0x85,0x80, -0x81,0x80,0x7A,0x7B,0x7D,0x7A,0x7C,0x78,0x72,0x78,0x7C,0x7C,0x78,0x7C,0x7A,0x75, -0x76,0x74,0x74,0x81,0x82,0x87,0x92,0x97,0x97,0x8D,0x82,0x78,0x7C,0x87,0x8B,0x88, -0x82,0x78,0x77,0x78,0x7C,0x7D,0x76,0x72,0x70,0x73,0x77,0x70,0x70,0x75,0x7A,0x85, -0x8A,0x8D,0x87,0x81,0x7C,0x78,0x73,0x74,0x75,0x78,0x79,0x7B,0x80,0x87,0x8F,0x8E, -0x88,0x8C,0x8E,0x85,0x80,0x7F,0x84,0x82,0x81,0x83,0x84,0x85,0x80,0x7A,0x7D,0x80, -0x7C,0x76,0x79,0x7E,0x7D,0x7D,0x7F,0x80,0x83,0x87,0x83,0x83,0x85,0x80,0x7B,0x7D, -0x84,0x8A,0x89,0x83,0x81,0x7F,0x7F,0x84,0x89,0x89,0x89,0x89,0x87,0x82,0x80,0x7D, -0x81,0x85,0x80,0x7B,0x7E,0x7E,0x81,0x87,0x86,0x83,0x81,0x81,0x82,0x80,0x7D,0x7E, -0x82,0x87,0x8A,0x89,0x87,0x85,0x81,0x84,0x89,0x8B,0x8B,0x8A,0x85,0x80,0x7E,0x7F, -0x81,0x7F,0x7B,0x76,0x7B,0x85,0x88,0x84,0x85,0x88,0x8D,0x8A,0x86,0x89,0x8A,0x81, -0x76,0x72,0x73,0x72,0x6B,0x6D,0x7A,0x82,0x81,0x7D,0x7C,0x7F,0x7D,0x74,0x70,0x71, -0x74,0x7D,0x88,0x8C,0x8A,0x86,0x87,0x8B,0x89,0x81,0x78,0x75,0x71,0x69,0x69,0x77, -0x82,0x85,0x87,0x88,0x86,0x86,0x7F,0x74,0x73,0x7A,0x7A,0x71,0x6F,0x70,0x72,0x7C, -0x83,0x81,0x7B,0x76,0x70,0x6D,0x71,0x73,0x78,0x80,0x84,0x87,0x8B,0x8F,0x8D,0x84, -0x7E,0x7F,0x82,0x80,0x7A,0x77,0x7E,0x87,0x89,0x88,0x87,0x81,0x79,0x79,0x7F,0x81, -0x7F,0x87,0x8F,0x90,0x8D,0x88,0x86,0x85,0x85,0x8A,0x8E,0x85,0x7C,0x79,0x7E,0x85, -0x84,0x7E,0x7F,0x85,0x85,0x82,0x7F,0x80,0x85,0x8B,0x8C,0x8D,0x8C,0x85,0x7F,0x7F, -0x80,0x7F,0x7B,0x7B,0x7E,0x7F,0x7E,0x7F,0x83,0x83,0x84,0x86,0x87,0x85,0x81,0x7E, -0x7B,0x7A,0x7D,0x84,0x8D,0x8F,0x8D,0x8F,0x90,0x8C,0x84,0x7E,0x7F,0x7F,0x7B,0x7A, -0x7F,0x81,0x81,0x82,0x84,0x81,0x78,0x71,0x70,0x6F,0x6A,0x6B,0x73,0x79,0x7B,0x7B, -0x7A,0x7B,0x7F,0x86,0x88,0x88,0x8D,0x8C,0x86,0x82,0x84,0x88,0x8C,0x8E,0x88,0x80, -0x77,0x76,0x7C,0x7C,0x79,0x78,0x7C,0x80,0x7C,0x7C,0x82,0x83,0x80,0x79,0x78,0x79, -0x77,0x79,0x7D,0x82,0x84,0x7F,0x79,0x75,0x70,0x6A,0x65,0x67,0x6E,0x73,0x7B,0x80, -0x80,0x7F,0x7E,0x82,0x87,0x8C,0x91,0x91,0x8C,0x84,0x85,0x88,0x87,0x86,0x86,0x86, -0x85,0x7E,0x7E,0x80,0x83,0x84,0x7E,0x77,0x73,0x70,0x70,0x73,0x75,0x79,0x7E,0x83, -0x89,0x89,0x88,0x82,0x76,0x70,0x74,0x79,0x7D,0x83,0x89,0x8D,0x93,0x94,0x8F,0x90, -0x8D,0x87,0x81,0x80,0x83,0x87,0x8D,0x8F,0x8A,0x88,0x87,0x89,0x87,0x81,0x7B,0x75, -0x71,0x6E,0x6F,0x76,0x79,0x7E,0x87,0x8A,0x87,0x86,0x86,0x83,0x7C,0x7A,0x7C,0x7F, -0x81,0x83,0x85,0x87,0x8B,0x91,0x94,0x97,0x96,0x91,0x88,0x7F,0x7E,0x87,0x91,0x92, -0x8D,0x8B,0x8A,0x83,0x7F,0x79,0x74,0x6F,0x67,0x63,0x6B,0x76,0x7C,0x81,0x84,0x81, -0x81,0x86,0x85,0x7E,0x75,0x71,0x73,0x77,0x78,0x7B,0x81,0x85,0x84,0x82,0x82,0x85, -0x84,0x7F,0x7D,0x7E,0x7F,0x7C,0x7D,0x86,0x8B,0x89,0x86,0x82,0x80,0x7C,0x7A,0x7B, -0x77,0x6E,0x68,0x6A,0x6F,0x6F,0x6D,0x6C,0x6E,0x71,0x73,0x78,0x7B,0x7E,0x7F,0x7D, -0x81,0x80,0x7A,0x77,0x78,0x78,0x76,0x7A,0x82,0x8C,0x90,0x89,0x80,0x81,0x80,0x83, -0x86,0x85,0x8C,0x92,0x8F,0x8A,0x8B,0x8E,0x8A,0x86,0x83,0x7D,0x79,0x76,0x71,0x71, -0x74,0x7A,0x81,0x80,0x7D,0x78,0x75,0x7A,0x7E,0x84,0x84,0x82,0x82,0x85,0x86,0x84, -0x83,0x86,0x88,0x90,0x90,0x8E,0x91,0x92,0x8D,0x8C,0x91,0x95,0x8E,0x88,0x83,0x84, -0x8A,0x88,0x7D,0x75,0x76,0x7C,0x7B,0x7A,0x7E,0x82,0x8C,0x8E,0x85,0x7B,0x76,0x7E, -0x83,0x7C,0x7A,0x7F,0x85,0x86,0x7E,0x7C,0x80,0x83,0x7F,0x7F,0x80,0x7C,0x77,0x7A, -0x7B,0x81,0x87,0x8B,0x89,0x82,0x81,0x82,0x85,0x85,0x7F,0x7D,0x81,0x89,0x89,0x7A, -0x73,0x76,0x76,0x75,0x73,0x77,0x81,0x80,0x7B,0x76,0x77,0x7C,0x80,0x84,0x81,0x7D, -0x81,0x84,0x87,0x86,0x83,0x83,0x7A,0x74,0x75,0x7A,0x7B,0x76,0x7A,0x82,0x86,0x80, -0x77,0x78,0x7E,0x7F,0x7A,0x71,0x73,0x7D,0x85,0x87,0x89,0x8F,0x90,0x8A,0x82,0x7E, -0x79,0x75,0x74,0x78,0x78,0x78,0x7C,0x82,0x83,0x7D,0x7B,0x81,0x85,0x7F,0x78,0x75, -0x77,0x7B,0x7D,0x7C,0x83,0x8D,0x8C,0x84,0x7D,0x7E,0x81,0x83,0x84,0x80,0x7C,0x7C, -0x7C,0x80,0x84,0x87,0x8A,0x8B,0x81,0x79,0x7E,0x85,0x88,0x84,0x7A,0x7B,0x87,0x8B, -0x85,0x80,0x81,0x82,0x82,0x7F,0x7E,0x7F,0x80,0x7E,0x7E,0x7F,0x7F,0x7E,0x7D,0x79, -0x73,0x73,0x79,0x7B,0x7F,0x86,0x8E,0x93,0x94,0x92,0x8F,0x8A,0x80,0x78,0x78,0x81, -0x89,0x8F,0x92,0x94,0x95,0x92,0x8E,0x89,0x84,0x7B,0x77,0x7A,0x7B,0x79,0x7B,0x87, -0x8E,0x85,0x7A,0x7A,0x81,0x82,0x78,0x6C,0x6A,0x73,0x79,0x7C,0x7A,0x7B,0x81,0x86, -0x88,0x85,0x81,0x81,0x89,0x88,0x82,0x82,0x83,0x82,0x7B,0x75,0x79,0x85,0x8D,0x84, -0x7E,0x85,0x87,0x81,0x7D,0x78,0x73,0x73,0x71,0x72,0x77,0x78,0x76,0x77,0x78,0x74, -0x7A,0x83,0x82,0x7A,0x77,0x78,0x79,0x7B,0x7C,0x7D,0x87,0x89,0x84,0x83,0x83,0x81, -0x7D,0x7B,0x7A,0x80,0x82,0x7D,0x78,0x7A,0x79,0x80,0x8C,0x90,0x8B,0x83,0x7F,0x7D, -0x7C,0x78,0x74,0x77,0x7B,0x77,0x7D,0x8C,0x92,0x90,0x88,0x7D,0x7A,0x7B,0x75,0x70, -0x78,0x7F,0x81,0x88,0x87,0x82,0x88,0x8C,0x86,0x88,0x87,0x7C,0x76,0x80,0x86,0x8E, -0x92,0x87,0x80,0x7F,0x79,0x77,0x85,0x87,0x7B,0x7F,0x86,0x86,0x89,0x8B,0x8C,0x8B, -0x83,0x7C,0x81,0x89,0x84,0x81,0x82,0x7E,0x7B,0x84,0x82,0x7B,0x7D,0x79,0x74,0x74, -0x7A,0x7C,0x80,0x84,0x84,0x8B,0x8A,0x86,0x84,0x83,0x80,0x82,0x8B,0x8E,0x83,0x83, -0x83,0x7D,0x7E,0x7F,0x77,0x7C,0x7A,0x79,0x80,0x80,0x7E,0x7D,0x81,0x7D,0x79,0x84, -0x8A,0x86,0x88,0x89,0x8B,0x82,0x79,0x70,0x74,0x79,0x6F,0x70,0x78,0x75,0x7E,0x85, -0x84,0x85,0x7E,0x7C,0x79,0x76,0x6B,0x6B,0x7C,0x87,0x84,0x89,0x89,0x8C,0x93,0x90, -0x8B,0x84,0x8E,0x87,0x7E,0x82,0x84,0x84,0x81,0x78,0x78,0x79,0x7B,0x7C,0x80,0x7C, -0x73,0x7B,0x7F,0x72,0x6A,0x6C,0x6E,0x73,0x74,0x7D,0x80,0x86,0x88,0x88,0x8C,0x8A, -0x85,0x88,0x7B,0x72,0x7B,0x82,0x85,0x82,0x82,0x81,0x82,0x87,0x89,0x81,0x80,0x84, -0x87,0x84,0x79,0x77,0x84,0x7C,0x7B,0x79,0x7B,0x79,0x73,0x73,0x74,0x7A,0x7A,0x71, -0x78,0x7F,0x7B,0x84,0x84,0x83,0x86,0x8D,0x8E,0x87,0x88,0x86,0x80,0x8D,0x86,0x7F, -0x85,0x86,0x8A,0x86,0x84,0x85,0x8B,0x8D,0x7B,0x76,0x82,0x82,0x84,0x88,0x8A,0x90, -0x90,0x8A,0x7F,0x7C,0x7D,0x72,0x75,0x7B,0x6C,0x72,0x7B,0x7F,0x80,0x84,0x87,0x8A, -0x87,0x7D,0x73,0x7C,0x83,0x7E,0x82,0x8A,0x96,0x9D,0x96,0x88,0x82,0x83,0x81,0x79, -0x7F,0x7F,0x7D,0x80,0x80,0x87,0x8D,0x89,0x88,0x80,0x77,0x72,0x75,0x79,0x76,0x7D, -0x80,0x79,0x7C,0x7D,0x7A,0x7C,0x7A,0x75,0x76,0x7A,0x7C,0x7C,0x82,0x7F,0x7A,0x7E, -0x7F,0x82,0x86,0x82,0x80,0x80,0x84,0x85,0x86,0x83,0x7E,0x83,0x88,0x82,0x81,0x83, -0x7F,0x7D,0x7D,0x80,0x80,0x7D,0x76,0x74,0x7B,0x7C,0x7A,0x7C,0x78,0x78,0x7A,0x7A, -0x78,0x7B,0x83,0x82,0x7B,0x7E,0x82,0x84,0x86,0x89,0x8D,0x8C,0x84,0x7E,0x7B,0x77, -0x72,0x79,0x82,0x81,0x7E,0x7B,0x79,0x76,0x77,0x7B,0x83,0x8C,0x8E,0x8E,0x8D,0x86, -0x7D,0x81,0x88,0x89,0x83,0x7D,0x7B,0x80,0x84,0x7E,0x77,0x7A,0x80,0x81,0x76,0x6B, -0x6C,0x75,0x7F,0x89,0x8B,0x8B,0x8A,0x88,0x87,0x87,0x87,0x81,0x7E,0x7E,0x7E,0x7D, -0x81,0x81,0x7B,0x77,0x7B,0x81,0x88,0x8E,0x8E,0x8B,0x8C,0x8D,0x89,0x85,0x84,0x7E, -0x7A,0x7A,0x7E,0x80,0x7E,0x7F,0x81,0x80,0x7F,0x81,0x81,0x7E,0x7C,0x79,0x7B,0x80, -0x7F,0x7C,0x80,0x8E,0x94,0x90,0x8B,0x8B,0x8A,0x81,0x7B,0x80,0x84,0x85,0x84,0x7F, -0x7C,0x82,0x86,0x8B,0x8E,0x88,0x7F,0x7F,0x80,0x7D,0x7A,0x75,0x72,0x73,0x74,0x76, -0x7E,0x85,0x83,0x7D,0x7A,0x79,0x75,0x73,0x76,0x82,0x87,0x7F,0x7B,0x78,0x78,0x7B, -0x80,0x87,0x8A,0x82,0x79,0x7B,0x7D,0x79,0x79,0x81,0x83,0x83,0x85,0x80,0x7E,0x80, -0x80,0x7D,0x82,0x87,0x83,0x7D,0x78,0x75,0x75,0x74,0x77,0x7D,0x7D,0x79,0x7A,0x7F, -0x82,0x7E,0x78,0x72,0x6A,0x6A,0x77,0x7F,0x7D,0x7C,0x7F,0x82,0x85,0x87,0x86,0x85, -0x85,0x81,0x7C,0x7A,0x80,0x8B,0x8F,0x93,0x94,0x90,0x8C,0x8B,0x8C,0x88,0x7F,0x7A, -0x7D,0x85,0x8A,0x86,0x84,0x84,0x81,0x7D,0x76,0x74,0x74,0x75,0x74,0x72,0x7A,0x7F, -0x80,0x86,0x8F,0x8E,0x8A,0x88,0x85,0x88,0x8B,0x8C,0x89,0x8A,0x89,0x88,0x8B,0x87, -0x7E,0x7D,0x7E,0x7B,0x7F,0x86,0x88,0x84,0x83,0x81,0x81,0x86,0x87,0x83,0x81,0x7E, -0x7E,0x7C,0x78,0x74,0x79,0x7A,0x76,0x7D,0x83,0x80,0x7D,0x7A,0x75,0x73,0x71,0x77, -0x7E,0x88,0x94,0x99,0x98,0x90,0x8B,0x8A,0x85,0x80,0x7E,0x7C,0x7B,0x7C,0x84,0x87, -0x81,0x80,0x86,0x8B,0x83,0x72,0x6B,0x6A,0x6C,0x6B,0x68,0x6F,0x78,0x7F,0x7F,0x7C, -0x7E,0x7D,0x78,0x7A,0x79,0x7A,0x7B,0x7F,0x82,0x83,0x88,0x8C,0x8B,0x8F,0x91,0x8D, -0x87,0x81,0x7A,0x72,0x70,0x74,0x77,0x7A,0x7C,0x7E,0x84,0x83,0x84,0x84,0x84,0x87, -0x86,0x7F,0x76,0x73,0x75,0x76,0x74,0x6D,0x6E,0x79,0x7A,0x7B,0x80,0x7E,0x7A,0x7C, -0x84,0x88,0x85,0x87,0x87,0x84,0x82,0x82,0x88,0x8C,0x8E,0x90,0x90,0x8D,0x85,0x7B, -0x78,0x73,0x72,0x77,0x79,0x7A,0x82,0x8D,0x8F,0x8A,0x87,0x86,0x86,0x81,0x79,0x79, -0x7E,0x80,0x7D,0x78,0x78,0x7E,0x8A,0x93,0x8B,0x83,0x83,0x83,0x7F,0x79,0x7C,0x83, -0x88,0x8C,0x89,0x87,0x8C,0x8E,0x8C,0x84,0x81,0x86,0x88,0x85,0x7C,0x7A,0x7E,0x79, -0x76,0x7C,0x84,0x84,0x7C,0x7F,0x88,0x88,0x81,0x7B,0x7C,0x82,0x83,0x83,0x85,0x86, -0x84,0x81,0x84,0x85,0x82,0x7E,0x78,0x7A,0x7F,0x80,0x80,0x7F,0x7E,0x7F,0x7F,0x83, -0x86,0x85,0x80,0x77,0x79,0x7E,0x81,0x84,0x87,0x86,0x81,0x7B,0x7B,0x7C,0x79,0x77, -0x78,0x78,0x77,0x77,0x78,0x77,0x78,0x77,0x78,0x7C,0x7A,0x7B,0x80,0x82,0x7E,0x79, -0x77,0x77,0x77,0x77,0x73,0x75,0x79,0x7D,0x7A,0x7A,0x81,0x89,0x89,0x84,0x7D,0x78, -0x7C,0x84,0x85,0x7F,0x78,0x7A,0x82,0x87,0x87,0x87,0x8C,0x8C,0x85,0x82,0x83,0x87, -0x8B,0x87,0x7E,0x79,0x7B,0x7F,0x7E,0x7E,0x7E,0x81,0x84,0x83,0x7E,0x76,0x72,0x6F, -0x70,0x74,0x77,0x7E,0x8A,0x8F,0x90,0x95,0x9B,0x97,0x8C,0x83,0x7F,0x7E,0x7E,0x7F, -0x80,0x86,0x90,0x90,0x8C,0x8B,0x89,0x85,0x81,0x7B,0x77,0x7A,0x82,0x88,0x89,0x8B, -0x8C,0x8B,0x87,0x7B,0x73,0x72,0x73,0x72,0x6F,0x74,0x7C,0x82,0x84,0x85,0x87,0x87, -0x83,0x7F,0x7E,0x83,0x89,0x8B,0x88,0x88,0x8A,0x88,0x83,0x85,0x84,0x81,0x7E,0x7C, -0x77,0x77,0x79,0x79,0x7A,0x7B,0x7C,0x7E,0x7B,0x77,0x75,0x75,0x73,0x72,0x74,0x75, -0x7B,0x82,0x85,0x8A,0x8B,0x84,0x81,0x83,0x82,0x7A,0x74,0x75,0x7B,0x82,0x88,0x87, -0x8A,0x91,0x90,0x8C,0x86,0x7E,0x75,0x70,0x70,0x74,0x7E,0x85,0x87,0x8B,0x89,0x82, -0x7D,0x7B,0x7D,0x7A,0x75,0x6B,0x6A,0x78,0x7F,0x82,0x86,0x84,0x7F,0x75,0x71,0x75, -0x7A,0x7E,0x7D,0x82,0x89,0x88,0x89,0x84,0x7D,0x7B,0x7E,0x85,0x85,0x83,0x88,0x8D, -0x89,0x85,0x87,0x89,0x84,0x7F,0x7E,0x7F,0x80,0x78,0x75,0x7A,0x83,0x88,0x82,0x7C, -0x7B,0x7E,0x7E,0x75,0x76,0x7C,0x7D,0x7E,0x7C,0x77,0x79,0x7F,0x84,0x85,0x83,0x81, -0x84,0x87,0x7E,0x78,0x81,0x8A,0x8D,0x8F,0x8D,0x8C,0x8A,0x89,0x8B,0x8A,0x85,0x81, -0x81,0x81,0x7E,0x82,0x8D,0x8F,0x86,0x7D,0x7D,0x7B,0x7A,0x7D,0x7C,0x78,0x7C,0x80, -0x81,0x81,0x88,0x8F,0x88,0x7F,0x78,0x79,0x7F,0x7C,0x7D,0x83,0x82,0x87,0x8F,0x91, -0x89,0x80,0x80,0x7A,0x76,0x79,0x79,0x7E,0x82,0x83,0x8A,0x87,0x80,0x76,0x75,0x78, -0x7B,0x7B,0x78,0x71,0x74,0x79,0x7D,0x83,0x86,0x87,0x85,0x81,0x7A,0x74,0x76,0x7B, -0x82,0x89,0x88,0x88,0x87,0x86,0x7D,0x75,0x79,0x7A,0x76,0x77,0x7D,0x7B,0x77,0x73, -0x7B,0x7E,0x82,0x82,0x81,0x82,0x7A,0x78,0x7E,0x7A,0x75,0x76,0x79,0x85,0x87,0x87, -0x84,0x88,0x80,0x72,0x71,0x71,0x71,0x78,0x7C,0x7E,0x8E,0x98,0x94,0x8C,0x8D,0x88, -0x84,0x82,0x7C,0x74,0x76,0x75,0x7F,0x85,0x84,0x8B,0x96,0x97,0x89,0x85,0x8B,0x8C, -0x83,0x7D,0x7C,0x81,0x81,0x7C,0x79,0x7C,0x7D,0x7E,0x78,0x75,0x77,0x7E,0x82,0x7E, -0x7F,0x7F,0x86,0x86,0x89,0x87,0x86,0x86,0x90,0x8F,0x86,0x7F,0x7F,0x7E,0x79,0x76, -0x7B,0x7C,0x78,0x78,0x7A,0x86,0x8D,0x8F,0x8B,0x8E,0x8A,0x7E,0x7A,0x83,0x86,0x82, -0x83,0x87,0x85,0x85,0x82,0x77,0x72,0x70,0x6F,0x77,0x80,0x7C,0x75,0x73,0x7C,0x80, -0x85,0x85,0x85,0x84,0x7F,0x7A,0x77,0x7D,0x7D,0x7E,0x7E,0x7C,0x7F,0x85,0x83,0x80, -0x7E,0x82,0x81,0x7E,0x7E,0x77,0x7E,0x86,0x87,0x8B,0x8B,0x88,0x84,0x7E,0x7D,0x7D, -0x81,0x7F,0x78,0x7D,0x81,0x80,0x80,0x7C,0x7C,0x7C,0x7C,0x7D,0x7E,0x80,0x7E,0x7F, -0x81,0x7F,0x82,0x81,0x7C,0x7A,0x77,0x75,0x73,0x77,0x7E,0x82,0x8B,0x90,0x8E,0x8C, -0x83,0x7D,0x7E,0x7E,0x81,0x82,0x85,0x89,0x88,0x81,0x7D,0x84,0x86,0x7C,0x73,0x70, -0x73,0x77,0x7A,0x77,0x75,0x7C,0x80,0x80,0x83,0x80,0x7C,0x82,0x84,0x80,0x7D,0x7D, -0x7E,0x7F,0x82,0x82,0x82,0x84,0x81,0x7B,0x7A,0x7D,0x81,0x82,0x84,0x8A,0x89,0x83, -0x7F,0x82,0x84,0x84,0x80,0x7B,0x7F,0x87,0x86,0x81,0x7E,0x7C,0x78,0x79,0x7E,0x80, -0x81,0x80,0x7F,0x82,0x84,0x89,0x8F,0x91,0x95,0x95,0x8E,0x84,0x7D,0x79,0x76,0x77, -0x7E,0x81,0x82,0x86,0x90,0x96,0x91,0x8A,0x82,0x7D,0x7A,0x75,0x72,0x78,0x82,0x85, -0x86,0x89,0x87,0x82,0x7E,0x7D,0x79,0x72,0x70,0x74,0x7C,0x7F,0x7F,0x85,0x8F,0x8F, -0x8D,0x88,0x80,0x80,0x80,0x7F,0x80,0x83,0x83,0x83,0x86,0x84,0x7D,0x79,0x76,0x72, -0x6A,0x67,0x6D,0x79,0x83,0x88,0x8A,0x88,0x85,0x82,0x81,0x7E,0x76,0x6B,0x6B,0x74, -0x7E,0x83,0x85,0x86,0x86,0x80,0x7B,0x78,0x7C,0x82,0x7F,0x7E,0x84,0x89,0x88,0x86, -0x8B,0x8F,0x87,0x80,0x7D,0x79,0x79,0x7C,0x7C,0x7C,0x7E,0x7E,0x7F,0x83,0x81,0x7D, -0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x82,0x80,0x7C,0x81,0x86,0x82,0x7C,0x7A,0x79,0x7C, -0x7E,0x80,0x87,0x8A,0x85,0x87,0x8E,0x8D,0x85,0x80,0x7C,0x77,0x74,0x72,0x73,0x7B, -0x80,0x82,0x84,0x84,0x84,0x84,0x85,0x87,0x8A,0x88,0x82,0x7F,0x81,0x80,0x83,0x8B, -0x8D,0x8B,0x85,0x7E,0x78,0x76,0x7A,0x80,0x87,0x88,0x82,0x7F,0x7E,0x7F,0x7F,0x7C, -0x78,0x77,0x7C,0x84,0x88,0x86,0x80,0x7E,0x81,0x7F,0x7B,0x76,0x76,0x7B,0x77,0x73, -0x78,0x83,0x87,0x82,0x80,0x81,0x83,0x86,0x82,0x7E,0x80,0x86,0x8A,0x8C,0x90,0x92, -0x8B,0x87,0x85,0x84,0x7F,0x7B,0x7C,0x7E,0x7A,0x7C,0x84,0x86,0x84,0x83,0x85,0x7F, -0x7C,0x7F,0x7C,0x7E,0x7C,0x74,0x70,0x6F,0x76,0x7E,0x82,0x80,0x79,0x77,0x77,0x77, -0x7D,0x81,0x85,0x86,0x81,0x81,0x83,0x8B,0x93,0x90,0x8F,0x89,0x84,0x7E,0x76,0x77, -0x76,0x71,0x71,0x71,0x75,0x7D,0x82,0x81,0x7A,0x76,0x78,0x7C,0x82,0x7C,0x78,0x7E, -0x81,0x81,0x7D,0x7C,0x81,0x7F,0x7C,0x7B,0x7E,0x7F,0x7A,0x78,0x7B,0x80,0x88,0x89, -0x86,0x82,0x82,0x83,0x7E,0x7D,0x7F,0x80,0x82,0x80,0x7D,0x7F,0x80,0x83,0x83,0x80, -0x7F,0x81,0x81,0x7C,0x7A,0x7F,0x84,0x86,0x80,0x7B,0x7E,0x84,0x88,0x85,0x7F,0x7E, -0x7F,0x83,0x80,0x80,0x8C,0x93,0x8F,0x89,0x88,0x8B,0x8A,0x87,0x82,0x7E,0x82,0x86, -0x86,0x85,0x7F,0x7D,0x7F,0x7F,0x7C,0x7C,0x7F,0x7E,0x7A,0x7A,0x7C,0x83,0x89,0x86, -0x83,0x81,0x7F,0x81,0x84,0x83,0x7E,0x7B,0x7C,0x7D,0x83,0x89,0x89,0x85,0x7F,0x82, -0x8A,0x8B,0x82,0x7A,0x7C,0x81,0x83,0x83,0x84,0x88,0x87,0x83,0x7D,0x7B,0x7A,0x7C, -0x7A,0x7A,0x7C,0x7A,0x71,0x6D,0x70,0x72,0x77,0x7F,0x87,0x8A,0x88,0x86,0x83,0x7D, -0x75,0x6E,0x70,0x77,0x7E,0x83,0x87,0x8A,0x8B,0x8A,0x87,0x84,0x80,0x7B,0x78,0x76, -0x73,0x71,0x77,0x7E,0x81,0x81,0x83,0x88,0x8D,0x89,0x7F,0x7A,0x7D,0x7C,0x75,0x74, -0x78,0x7D,0x7D,0x7B,0x7B,0x7E,0x80,0x82,0x83,0x83,0x83,0x82,0x82,0x83,0x7E,0x7B, -0x7E,0x82,0x85,0x88,0x8B,0x87,0x80,0x7D,0x80,0x87,0x88,0x7E,0x7A,0x7D,0x84,0x86, -0x83,0x82,0x81,0x80,0x7C,0x79,0x7B,0x80,0x82,0x82,0x80,0x7D,0x7A,0x7D,0x82,0x80, -0x80,0x82,0x83,0x83,0x7E,0x7C,0x84,0x89,0x86,0x7D,0x7F,0x85,0x87,0x89,0x8B,0x8B, -0x8E,0x8B,0x83,0x7A,0x76,0x78,0x7A,0x7C,0x7E,0x82,0x87,0x8B,0x89,0x83,0x7C,0x7A, -0x7B,0x7B,0x7A,0x79,0x79,0x7B,0x7D,0x7F,0x84,0x8C,0x92,0x90,0x87,0x80,0x80,0x83, -0x83,0x82,0x84,0x85,0x85,0x85,0x85,0x80,0x7A,0x76,0x74,0x76,0x79,0x7B,0x7C,0x7D, -0x7F,0x81,0x82,0x81,0x7F,0x83,0x84,0x7D,0x79,0x7B,0x80,0x86,0x8E,0x8D,0x82,0x7D, -0x7C,0x7B,0x7A,0x75,0x6F,0x73,0x76,0x76,0x7C,0x88,0x8C,0x86,0x84,0x80,0x7B,0x7C, -0x77,0x72,0x73,0x75,0x75,0x7A,0x85,0x85,0x82,0x83,0x7F,0x79,0x7D,0x7E,0x7D,0x7E, -0x7D,0x7D,0x82,0x87,0x83,0x7C,0x80,0x83,0x82,0x7D,0x75,0x79,0x82,0x81,0x7C,0x7F, -0x85,0x86,0x84,0x83,0x7C,0x7B,0x80,0x80,0x7F,0x7B,0x7A,0x7F,0x82,0x7C,0x7F,0x85, -0x83,0x7A,0x7A,0x7F,0x84,0x90,0x97,0x91,0x93,0x98,0x8F,0x83,0x7C,0x7B,0x80,0x88, -0x85,0x7F,0x83,0x88,0x84,0x83,0x7E,0x76,0x74,0x78,0x78,0x7C,0x7F,0x79,0x79,0x82, -0x86,0x8C,0x98,0x8F,0x81,0x7A,0x73,0x71,0x79,0x78,0x7D,0x87,0x8F,0x8A,0x88,0x8D, -0x8C,0x89,0x81,0x78,0x78,0x81,0x7A,0x7D,0x83,0x81,0x83,0x8E,0x8D,0x87,0x83,0x83, -0x7E,0x7D,0x77,0x75,0x85,0x85,0x7A,0x73,0x79,0x7B,0x7E,0x7B,0x74,0x71,0x79,0x7C, -0x7A,0x7F,0x7E,0x83,0x85,0x7E,0x7F,0x80,0x82,0x80,0x7A,0x80,0x83,0x8C,0x8D,0x83, -0x83,0x86,0x81,0x7E,0x79,0x75,0x7A,0x7D,0x7C,0x78,0x7F,0x84,0x83,0x8A,0x88,0x81, -0x7A,0x73,0x73,0x71,0x74,0x74,0x75,0x7B,0x7C,0x7E,0x86,0x84,0x83,0x86,0x8C,0x8B, -0x82,0x7D,0x79,0x7C,0x83,0x80,0x86,0x85,0x86,0x89,0x82,0x79,0x76,0x7C,0x85,0x7E, -0x7B,0x79,0x76,0x7D,0x7B,0x7D,0x83,0x85,0x89,0x85,0x81,0x82,0x83,0x87,0x7E,0x7C, -0x82,0x81,0x85,0x81,0x7F,0x86,0x84,0x84,0x85,0x84,0x88,0x7E,0x7D,0x80,0x81,0x86, -0x83,0x83,0x88,0x84,0x84,0x85,0x7F,0x7C,0x7B,0x81,0x83,0x7F,0x7B,0x73,0x77,0x7A, -0x78,0x7F,0x81,0x80,0x7F,0x85,0x85,0x81,0x84,0x87,0x86,0x86,0x82,0x7B,0x7B,0x7E, -0x85,0x8B,0x90,0x8E,0x84,0x80,0x85,0x87,0x89,0x82,0x7D,0x7D,0x7F,0x7D,0x7B,0x7F, -0x86,0x8A,0x89,0x83,0x7E,0x83,0x83,0x7F,0x7E,0x7B,0x7C,0x7E,0x7E,0x7C,0x7A,0x7D, -0x81,0x7E,0x79,0x75,0x79,0x7A,0x75,0x75,0x7A,0x79,0x7A,0x81,0x88,0x87,0x88,0x86, -0x83,0x7D,0x71,0x70,0x77,0x7E,0x83,0x83,0x7D,0x7D,0x81,0x85,0x82,0x82,0x82,0x79, -0x75,0x78,0x7C,0x81,0x7F,0x7D,0x7F,0x84,0x85,0x85,0x86,0x86,0x81,0x80,0x82,0x7E, -0x79,0x79,0x7E,0x7C,0x78,0x75,0x70,0x71,0x72,0x77,0x7C,0x82,0x83,0x82,0x83,0x7F, -0x78,0x79,0x7A,0x7F,0x84,0x85,0x86,0x8E,0x95,0x98,0x95,0x8F,0x88,0x81,0x7E,0x7B, -0x7A,0x7C,0x7D,0x7D,0x7D,0x7C,0x7D,0x81,0x86,0x89,0x86,0x81,0x7F,0x81,0x82,0x86, -0x88,0x87,0x81,0x7B,0x7A,0x7B,0x7E,0x83,0x85,0x86,0x82,0x7E,0x7E,0x7F,0x7F,0x82, -0x82,0x80,0x7F,0x84,0x8B,0x8B,0x86,0x7E,0x7C,0x81,0x86,0x84,0x7D,0x79,0x7E,0x82, -0x83,0x81,0x81,0x84,0x84,0x84,0x85,0x84,0x84,0x86,0x85,0x7D,0x75,0x76,0x7B,0x7C, -0x77,0x74,0x79,0x80,0x84,0x84,0x87,0x86,0x7F,0x7B,0x76,0x73,0x74,0x76,0x79,0x7F, -0x87,0x8B,0x8F,0x92,0x8F,0x88,0x81,0x7A,0x74,0x76,0x79,0x7F,0x83,0x84,0x84,0x84, -0x85,0x82,0x7D,0x7C,0x7E,0x7D,0x79,0x76,0x78,0x7C,0x7A,0x7A,0x7B,0x7D,0x83,0x86, -0x86,0x85,0x82,0x7F,0x80,0x83,0x84,0x84,0x86,0x86,0x85,0x84,0x86,0x88,0x86,0x82, -0x7D,0x79,0x7B,0x7B,0x77,0x75,0x76,0x80,0x88,0x85,0x83,0x86,0x85,0x81,0x79,0x7A, -0x77,0x74,0x75,0x76,0x7B,0x7E,0x81,0x87,0x87,0x83,0x7F,0x7B,0x75,0x73,0x7F,0x88, -0x89,0x89,0x85,0x81,0x7F,0x7F,0x82,0x82,0x83,0x80,0x76,0x72,0x71,0x77,0x7A,0x79, -0x79,0x7B,0x7B,0x7A,0x80,0x87,0x88,0x87,0x88,0x8A,0x8B,0x87,0x87,0x88,0x81,0x7B, -0x7D,0x85,0x8B,0x8A,0x8B,0x8A,0x89,0x89,0x83,0x7F,0x7D,0x7B,0x7E,0x7C,0x7C,0x7E, -0x7F,0x83,0x80,0x80,0x7E,0x7C,0x7F,0x80,0x7D,0x7E,0x7D,0x83,0x85,0x82,0x7F,0x7C, -0x7E,0x81,0x7D,0x85,0x8B,0x87,0x82,0x7D,0x78,0x75,0x7B,0x85,0x88,0x89,0x85,0x83, -0x81,0x7E,0x80,0x82,0x80,0x7D,0x7B,0x81,0x84,0x83,0x86,0x85,0x80,0x7E,0x7A,0x7B, -0x7A,0x78,0x78,0x75,0x71,0x75,0x7B,0x7C,0x79,0x79,0x7D,0x80,0x80,0x81,0x7F,0x7D, -0x7E,0x7E,0x80,0x7F,0x7E,0x80,0x80,0x7F,0x7F,0x80,0x80,0x7C,0x7C,0x80,0x83,0x82, -0x7D,0x7D,0x80,0x7F,0x7B,0x7F,0x85,0x85,0x84,0x85,0x80,0x7C,0x7A,0x7B,0x81,0x81, -0x7C,0x7A,0x7C,0x7C,0x78,0x76,0x77,0x78,0x7D,0x7F,0x7E,0x82,0x8A,0x8C,0x90,0x95, -0x98,0x95,0x8E,0x88,0x7F,0x77,0x74,0x73,0x77,0x7D,0x7D,0x7B,0x7B,0x7B,0x7C,0x81, -0x84,0x82,0x7D,0x7C,0x80,0x7E,0x7A,0x7E,0x87,0x8C,0x8A,0x87,0x87,0x83,0x7D,0x7A, -0x7C,0x82,0x86,0x86,0x87,0x84,0x81,0x7F,0x80,0x84,0x88,0x8B,0x8B,0x8C,0x8E,0x8C, -0x85,0x7D,0x79,0x78,0x77,0x7B,0x7D,0x7D,0x79,0x78,0x7B,0x7E,0x84,0x88,0x83,0x7D, -0x7C,0x7D,0x7F,0x81,0x82,0x80,0x7B,0x7A,0x7D,0x82,0x86,0x87,0x85,0x81,0x81,0x80, -0x7A,0x79,0x7C,0x80,0x81,0x7F,0x81,0x87,0x8C,0x8C,0x89,0x8A,0x8D,0x8A,0x83,0x7C, -0x7A,0x7D,0x81,0x84,0x86,0x88,0x85,0x7F,0x7D,0x7C,0x79,0x77,0x75,0x71,0x70,0x72, -0x73,0x74,0x75,0x77,0x7A,0x7C,0x7D,0x81,0x88,0x8B,0x86,0x83,0x87,0x8C,0x8E,0x8B, -0x85,0x80,0x82,0x82,0x7D,0x7B,0x7F,0x81,0x81,0x7C,0x74,0x6F,0x71,0x75,0x7B,0x80, -0x81,0x82,0x88,0x88,0x86,0x88,0x88,0x85,0x81,0x7A,0x74,0x77,0x77,0x72,0x70,0x74, -0x78,0x7A,0x7A,0x79,0x77,0x7A,0x80,0x80,0x83,0x86,0x8C,0x90,0x8C,0x89,0x8D,0x8C, -0x87,0x81,0x80,0x82,0x84,0x82,0x7B,0x7A,0x7F,0x7E,0x7A,0x7C,0x80,0x83,0x83,0x86, -0x88,0x85,0x81,0x7D,0x81,0x83,0x7F,0x81,0x86,0x87,0x83,0x82,0x87,0x89,0x85,0x81, -0x7E,0x85,0x88,0x7C,0x76,0x79,0x82,0x8C,0x91,0x90,0x8B,0x8B,0x89,0x86,0x8B,0x87, -0x7F,0x87,0x84,0x7B,0x78,0x7E,0x83,0x81,0x7F,0x78,0x79,0x7F,0x77,0x70,0x72,0x71, -0x70,0x72,0x77,0x7F,0x8D,0x92,0x89,0x8A,0x8D,0x89,0x8B,0x85,0x73,0x71,0x77,0x7E, -0x7E,0x80,0x82,0x86,0x8C,0x8D,0x89,0x8B,0x88,0x7A,0x6E,0x69,0x6D,0x7A,0x7D,0x7A, -0x7D,0x7F,0x75,0x71,0x73,0x76,0x79,0x7E,0x7C,0x78,0x75,0x76,0x7D,0x7F,0x7B,0x79, -0x7E,0x82,0x7F,0x84,0x82,0x7D,0x7E,0x81,0x81,0x84,0x8D,0x8C,0x80,0x7C,0x7E,0x85, -0x88,0x85,0x87,0x85,0x81,0x7F,0x7B,0x77,0x72,0x75,0x7D,0x73,0x72,0x75,0x76,0x7C, -0x7F,0x84,0x87,0x87,0x8F,0x87,0x86,0x83,0x82,0x86,0x7E,0x78,0x7A,0x79,0x7B,0x7E, -0x7C,0x80,0x81,0x86,0x85,0x82,0x8B,0x8D,0x8C,0x87,0x83,0x84,0x85,0x87,0x82,0x7F, -0x82,0x7E,0x7E,0x76,0x75,0x78,0x75,0x74,0x78,0x7B,0x81,0x81,0x82,0x81,0x7E,0x89, -0x91,0x89,0x87,0x88,0x8B,0x89,0x83,0x80,0x7D,0x7D,0x7D,0x81,0x86,0x8B,0x89,0x87, -0x81,0x7E,0x85,0x88,0x83,0x7D,0x7C,0x7D,0x7F,0x80,0x7D,0x7F,0x87,0x8B,0x8A,0x7F, -0x77,0x7D,0x7D,0x77,0x76,0x7C,0x80,0x82,0x81,0x80,0x7E,0x84,0x89,0x85,0x83,0x82, -0x7C,0x7F,0x80,0x82,0x83,0x87,0x8B,0x85,0x84,0x86,0x86,0x82,0x7C,0x7B,0x7A,0x77, -0x79,0x7C,0x7D,0x7F,0x7F,0x7D,0x77,0x76,0x7A,0x7A,0x79,0x77,0x7B,0x81,0x7F,0x7F, -0x83,0x8B,0x8D,0x85,0x7F,0x77,0x72,0x7A,0x7D,0x7D,0x7A,0x7A,0x7D,0x7B,0x7D,0x7D, -0x7A,0x7D,0x80,0x7B,0x76,0x78,0x81,0x85,0x85,0x85,0x82,0x80,0x7F,0x82,0x85,0x86, -0x88,0x83,0x7B,0x79,0x7D,0x84,0x87,0x84,0x82,0x80,0x7F,0x7A,0x75,0x78,0x7D,0x80, -0x81,0x82,0x85,0x86,0x84,0x81,0x82,0x86,0x84,0x7F,0x7E,0x82,0x84,0x84,0x86,0x86, -0x83,0x85,0x86,0x87,0x85,0x81,0x80,0x7F,0x80,0x81,0x82,0x88,0x8B,0x8B,0x85,0x7C, -0x7C,0x80,0x7E,0x7C,0x7F,0x80,0x7F,0x7F,0x83,0x87,0x86,0x85,0x84,0x85,0x83,0x80, -0x7F,0x7C,0x79,0x78,0x7A,0x80,0x85,0x84,0x7E,0x76,0x78,0x7B,0x7E,0x7E,0x7E,0x80, -0x80,0x81,0x84,0x84,0x83,0x81,0x82,0x86,0x89,0x8A,0x8A,0x84,0x7D,0x7C,0x7F,0x82, -0x7F,0x7C,0x77,0x75,0x77,0x79,0x7F,0x82,0x84,0x85,0x83,0x80,0x7B,0x77,0x76,0x76, -0x75,0x73,0x73,0x77,0x7C,0x7F,0x81,0x7F,0x80,0x80,0x7F,0x7D,0x7B,0x7F,0x80,0x82, -0x83,0x81,0x81,0x83,0x82,0x86,0x87,0x85,0x86,0x87,0x89,0x85,0x82,0x80,0x7D,0x7B, -0x79,0x76,0x78,0x7B,0x80,0x85,0x85,0x85,0x87,0x8A,0x85,0x7C,0x79,0x77,0x74,0x72, -0x71,0x79,0x7F,0x85,0x8B,0x8B,0x89,0x83,0x7F,0x7E,0x7D,0x80,0x7C,0x73,0x76,0x7D, -0x83,0x85,0x87,0x8C,0x8E,0x8E,0x8B,0x84,0x81,0x80,0x87,0x8D,0x87,0x82,0x7E,0x7B, -0x7A,0x7D,0x84,0x82,0x7C,0x79,0x77,0x7C,0x7D,0x7D,0x83,0x82,0x7E,0x79,0x79,0x79, -0x75,0x7A,0x7F,0x83,0x89,0x89,0x89,0x88,0x83,0x81,0x7D,0x7B,0x78,0x7C,0x86,0x87, -0x86,0x8D,0x90,0x8C,0x85,0x86,0x87,0x88,0x87,0x80,0x79,0x75,0x75,0x79,0x7B,0x7A, -0x81,0x85,0x84,0x80,0x7C,0x7A,0x79,0x7D,0x82,0x84,0x87,0x89,0x8F,0x90,0x8A,0x86, -0x86,0x82,0x79,0x79,0x7B,0x79,0x7B,0x80,0x83,0x82,0x80,0x7E,0x7D,0x7B,0x7C,0x78, -0x71,0x6B,0x6C,0x7D,0x8A,0x89,0x88,0x86,0x82,0x7B,0x79,0x7C,0x79,0x75,0x76,0x7C, -0x82,0x83,0x86,0x88,0x83,0x7B,0x7D,0x83,0x80,0x7A,0x79,0x78,0x7C,0x80,0x80,0x81, -0x87,0x8C,0x87,0x80,0x7C,0x78,0x77,0x77,0x77,0x7F,0x83,0x83,0x7E,0x79,0x76,0x73, -0x75,0x7A,0x7C,0x7B,0x7C,0x84,0x89,0x88,0x8C,0x90,0x8E,0x83,0x79,0x78,0x7C,0x7E, -0x7F,0x7F,0x81,0x83,0x85,0x8A,0x8C,0x88,0x82,0x80,0x80,0x7D,0x7D,0x82,0x86,0x8C, -0x91,0x90,0x8A,0x83,0x7D,0x7F,0x84,0x84,0x80,0x79,0x77,0x78,0x7D,0x80,0x80,0x81, -0x81,0x7C,0x7B,0x7B,0x7D,0x80,0x84,0x85,0x82,0x80,0x7F,0x81,0x86,0x89,0x8C,0x8E, -0x8A,0x85,0x86,0x86,0x84,0x82,0x81,0x7E,0x7B,0x7A,0x78,0x76,0x7B,0x81,0x81,0x7E, -0x7B,0x7E,0x82,0x80,0x7C,0x7D,0x7E,0x7C,0x7A,0x7E,0x7E,0x7F,0x7E,0x7F,0x7F,0x82, -0x85,0x82,0x7C,0x7A,0x79,0x7B,0x7D,0x7E,0x7E,0x7F,0x81,0x85,0x85,0x83,0x80,0x7E, -0x7B,0x76,0x74,0x75,0x76,0x78,0x7B,0x7E,0x81,0x85,0x88,0x86,0x81,0x80,0x82,0x85, -0x84,0x84,0x85,0x87,0x89,0x89,0x88,0x86,0x84,0x7F,0x7E,0x7B,0x78,0x75,0x76,0x77, -0x78,0x76,0x77,0x7B,0x80,0x79,0x75,0x7B,0x80,0x81,0x84,0x86,0x87,0x87,0x87,0x84, -0x80,0x80,0x7F,0x80,0x82,0x7E,0x7D,0x80,0x82,0x84,0x87,0x84,0x83,0x84,0x85,0x7E, -0x7C,0x7D,0x7F,0x7F,0x7E,0x7E,0x80,0x82,0x81,0x7F,0x81,0x84,0x86,0x89,0x87,0x80, -0x7D,0x79,0x76,0x77,0x77,0x7A,0x7C,0x7E,0x7B,0x7C,0x82,0x83,0x81,0x7F,0x7D,0x80, -0x83,0x7F,0x7E,0x86,0x89,0x86,0x86,0x8A,0x8B,0x87,0x87,0x84,0x85,0x85,0x80,0x7E, -0x7B,0x77,0x7B,0x81,0x81,0x80,0x86,0x86,0x84,0x87,0x89,0x84,0x83,0x85,0x82,0x80, -0x7D,0x79,0x7A,0x7B,0x79,0x78,0x7E,0x80,0x7D,0x80,0x7C,0x7E,0x81,0x82,0x85,0x88, -0x8C,0x8E,0x8F,0x8F,0x87,0x86,0x8C,0x87,0x85,0x85,0x83,0x80,0x7E,0x79,0x74,0x75, -0x76,0x72,0x76,0x75,0x72,0x7A,0x7E,0x79,0x78,0x7D,0x7D,0x7A,0x7D,0x7F,0x7E,0x82, -0x86,0x84,0x84,0x82,0x7F,0x7C,0x7B,0x78,0x80,0x82,0x7D,0x7F,0x83,0x87,0x82,0x83, -0x84,0x81,0x7E,0x7C,0x7C,0x7D,0x7B,0x7A,0x7A,0x7E,0x79,0x7E,0x84,0x79,0x74,0x7B, -0x76,0x74,0x7A,0x7A,0x7C,0x7D,0x85,0x87,0x83,0x87,0x81,0x82,0x84,0x81,0x86,0x88, -0x89,0x89,0x85,0x84,0x84,0x89,0x86,0x82,0x84,0x86,0x87,0x8A,0x81,0x7F,0x81,0x76, -0x75,0x78,0x81,0x83,0x83,0x85,0x83,0x7F,0x7C,0x77,0x7C,0x77,0x77,0x7F,0x85,0x87, -0x82,0x85,0x87,0x83,0x7E,0x7D,0x7A,0x80,0x7D,0x82,0x86,0x87,0x8D,0x90,0x8A,0x8D, -0x8B,0x8A,0x82,0x7A,0x7E,0x7E,0x83,0x89,0x8B,0x82,0x7D,0x7E,0x7A,0x7A,0x7E,0x79, -0x79,0x7A,0x78,0x7A,0x7F,0x83,0x83,0x82,0x86,0x81,0x77,0x7A,0x72,0x76,0x7B,0x7B, -0x7B,0x7E,0x83,0x86,0x82,0x7E,0x7B,0x7D,0x83,0x83,0x7C,0x7B,0x7F,0x83,0x87,0x89, -0x90,0x91,0x93,0x8F,0x85,0x81,0x81,0x7C,0x78,0x79,0x7C,0x78,0x74,0x74,0x76,0x78, -0x78,0x7A,0x7A,0x7B,0x7A,0x79,0x79,0x78,0x79,0x7E,0x86,0x8A,0x84,0x7F,0x82,0x84, -0x84,0x85,0x85,0x83,0x7D,0x77,0x78,0x82,0x8D,0x91,0x89,0x80,0x7F,0x80,0x7F,0x81, -0x82,0x84,0x86,0x89,0x86,0x7F,0x7B,0x78,0x71,0x6B,0x6A,0x6F,0x7A,0x7F,0x79,0x76, -0x7D,0x81,0x7F,0x7B,0x7B,0x7B,0x79,0x76,0x78,0x7C,0x83,0x84,0x85,0x89,0x8B,0x8A, -0x87,0x86,0x86,0x87,0x89,0x8C,0x8D,0x8C,0x8A,0x85,0x80,0x7F,0x80,0x83,0x83,0x7F, -0x79,0x78,0x7B,0x7B,0x7A,0x7C,0x7E,0x7F,0x7D,0x79,0x7B,0x81,0x86,0x8C,0x8A,0x82, -0x7C,0x7C,0x82,0x84,0x83,0x80,0x7E,0x7F,0x7E,0x7D,0x7E,0x83,0x8B,0x8F,0x8C,0x8A, -0x89,0x8B,0x8C,0x8C,0x8B,0x8A,0x8A,0x86,0x7F,0x7C,0x7C,0x7E,0x81,0x81,0x81,0x7B, -0x74,0x70,0x6F,0x73,0x76,0x7B,0x80,0x80,0x81,0x80,0x7C,0x78,0x75,0x72,0x74,0x7A, -0x81,0x85,0x83,0x84,0x86,0x88,0x86,0x86,0x89,0x8C,0x88,0x82,0x80,0x7E,0x7D,0x81, -0x84,0x83,0x81,0x7D,0x7B,0x7A,0x75,0x72,0x74,0x77,0x7A,0x7A,0x79,0x76,0x78,0x7F, -0x7F,0x7B,0x76,0x74,0x78,0x7C,0x7F,0x85,0x8A,0x8B,0x87,0x88,0x85,0x7F,0x81,0x81, -0x84,0x82,0x80,0x80,0x7D,0x7D,0x80,0x83,0x85,0x82,0x81,0x80,0x7B,0x79,0x79,0x7A, -0x81,0x80,0x7E,0x80,0x81,0x82,0x80,0x80,0x7F,0x7D,0x80,0x80,0x80,0x80,0x7F,0x80, -0x84,0x86,0x86,0x86,0x88,0x88,0x84,0x82,0x81,0x83,0x85,0x83,0x85,0x89,0x86,0x83, -0x7F,0x7C,0x76,0x76,0x7B,0x80,0x83,0x7E,0x7E,0x86,0x88,0x84,0x86,0x8A,0x88,0x80, -0x7F,0x81,0x81,0x83,0x84,0x82,0x80,0x7B,0x7E,0x7E,0x77,0x72,0x73,0x7E,0x86,0x88, -0x85,0x7E,0x7E,0x7E,0x7D,0x7C,0x7B,0x7D,0x81,0x82,0x84,0x88,0x8C,0x89,0x84,0x86, -0x85,0x81,0x84,0x84,0x82,0x83,0x86,0x8A,0x88,0x85,0x82,0x7C,0x79,0x75,0x74,0x76, -0x7A,0x7C,0x7B,0x7C,0x7D,0x80,0x7E,0x7C,0x7F,0x84,0x81,0x7A,0x77,0x78,0x7C,0x7C, -0x81,0x85,0x80,0x7E,0x7F,0x85,0x89,0x85,0x85,0x84,0x87,0x87,0x85,0x85,0x81,0x7D, -0x79,0x7B,0x81,0x80,0x7C,0x7D,0x81,0x80,0x79,0x75,0x75,0x75,0x75,0x75,0x77,0x7E, -0x84,0x85,0x82,0x7D,0x7A,0x79,0x7D,0x7E,0x7A,0x78,0x77,0x7C,0x82,0x82,0x7D,0x7A, -0x7B,0x7F,0x84,0x8D,0x91,0x8D,0x8A,0x8B,0x8B,0x87,0x81,0x83,0x83,0x81,0x7C,0x78, -0x78,0x79,0x7D,0x7B,0x78,0x79,0x79,0x78,0x77,0x76,0x79,0x80,0x88,0x8A,0x84,0x7F, -0x7F,0x82,0x83,0x7E,0x7E,0x84,0x89,0x8A,0x86,0x85,0x84,0x82,0x83,0x83,0x84,0x85, -0x88,0x8C,0x8C,0x8D,0x8F,0x90,0x8E,0x88,0x84,0x81,0x80,0x81,0x83,0x83,0x84,0x84, -0x80,0x7C,0x7B,0x78,0x73,0x70,0x6F,0x71,0x77,0x7A,0x7B,0x7E,0x81,0x83,0x84,0x86, -0x83,0x83,0x83,0x82,0x81,0x82,0x85,0x8B,0x8E,0x91,0x8E,0x89,0x85,0x80,0x7A,0x78, -0x79,0x79,0x77,0x75,0x78,0x7D,0x86,0x89,0x84,0x7E,0x7D,0x7E,0x7B,0x77,0x70,0x6F, -0x72,0x73,0x71,0x75,0x7B,0x80,0x7D,0x80,0x81,0x80,0x82,0x83,0x7F,0x7D,0x80,0x82, -0x81,0x83,0x85,0x85,0x88,0x8B,0x86,0x81,0x7E,0x7C,0x7E,0x7A,0x76,0x76,0x7A,0x81, -0x82,0x83,0x83,0x84,0x82,0x81,0x81,0x80,0x7C,0x7B,0x7E,0x7E,0x7A,0x7B,0x7E,0x7C, -0x80,0x84,0x81,0x83,0x85,0x81,0x7D,0x77,0x75,0x76,0x80,0x8A,0x89,0x87,0x85,0x83, -0x85,0x86,0x86,0x88,0x88,0x84,0x7E,0x7F,0x81,0x84,0x81,0x7D,0x7E,0x83,0x84,0x86, -0x87,0x80,0x7B,0x7B,0x81,0x7E,0x83,0x84,0x81,0x82,0x80,0x7F,0x81,0x80,0x82,0x7E, -0x86,0x8A,0x7C,0x7D,0x7D,0x79,0x77,0x7A,0x81,0x81,0x80,0x83,0x7D,0x80,0x80,0x80, -0x83,0x7E,0x83,0x82,0x7F,0x81,0x84,0x85,0x87,0x88,0x8C,0x83,0x86,0x85,0x7F,0x80, -0x79,0x75,0x7C,0x80,0x82,0x82,0x87,0x8B,0x83,0x87,0x7F,0x7A,0x80,0x7F,0x80,0x81, -0x7E,0x81,0x7B,0x7C,0x82,0x82,0x85,0x80,0x7E,0x78,0x77,0x78,0x79,0x79,0x7F,0x7C, -0x80,0x86,0x89,0x89,0x86,0x86,0x82,0x80,0x82,0x7F,0x7E,0x81,0x7E,0x7F,0x78,0x7B, -0x7F,0x81,0x7F,0x7D,0x79,0x76,0x74,0x75,0x74,0x78,0x81,0x80,0x7E,0x79,0x7A,0x79, -0x79,0x7C,0x7F,0x84,0x8E,0x89,0x84,0x84,0x7D,0x7A,0x7B,0x7F,0x7C,0x77,0x7D,0x7D, -0x80,0x85,0x88,0x87,0x82,0x7E,0x7B,0x7D,0x80,0x7D,0x7D,0x7D,0x7F,0x80,0x83,0x81, -0x82,0x7F,0x77,0x71,0x6F,0x74,0x7B,0x83,0x86,0x81,0x84,0x87,0x8B,0x8E,0x86,0x81, -0x82,0x84,0x82,0x82,0x82,0x81,0x82,0x88,0x86,0x87,0x8A,0x86,0x85,0x86,0x85,0x87, -0x8C,0x88,0x81,0x85,0x8B,0x8A,0x86,0x7E,0x75,0x76,0x78,0x78,0x79,0x7B,0x7A,0x79, -0x79,0x77,0x7A,0x82,0x83,0x85,0x89,0x86,0x84,0x87,0x84,0x7F,0x83,0x8A,0x8B,0x89, -0x86,0x83,0x83,0x88,0x89,0x8C,0x8E,0x89,0x87,0x87,0x80,0x76,0x73,0x74,0x71,0x73, -0x78,0x7A,0x7B,0x7A,0x78,0x79,0x7C,0x7B,0x7C,0x7B,0x7C,0x7A,0x79,0x7B,0x82,0x8B, -0x8B,0x86,0x83,0x81,0x80,0x7B,0x76,0x73,0x73,0x78,0x7C,0x81,0x80,0x7E,0x80,0x85, -0x89,0x8C,0x8A,0x84,0x80,0x7D,0x7B,0x76,0x78,0x7E,0x81,0x82,0x81,0x7E,0x7D,0x7B, -0x7C,0x78,0x75,0x75,0x78,0x7A,0x7B,0x7F,0x86,0x8A,0x8C,0x8A,0x85,0x87,0x8A,0x8C, -0x86,0x80,0x7A,0x78,0x7A,0x7C,0x7C,0x7B,0x7A,0x7C,0x7E,0x7E,0x80,0x81,0x83,0x84, -0x82,0x82,0x84,0x88,0x84,0x7F,0x80,0x84,0x8B,0x8E,0x8A,0x86,0x81,0x7C,0x78,0x75, -0x74,0x73,0x75,0x7B,0x81,0x85,0x86,0x86,0x87,0x85,0x84,0x87,0x8A,0x88,0x81,0x7B, -0x76,0x74,0x7A,0x81,0x86,0x83,0x7E,0x7E,0x7F,0x7F,0x7D,0x7D,0x7F,0x82,0x84,0x85, -0x83,0x84,0x84,0x84,0x86,0x87,0x85,0x83,0x83,0x83,0x80,0x80,0x80,0x7F,0x81,0x7E, -0x7D,0x80,0x87,0x89,0x85,0x82,0x80,0x82,0x85,0x83,0x7A,0x76,0x78,0x7B,0x7E,0x83, -0x89,0x8B,0x88,0x85,0x7F,0x7C,0x7E,0x7B,0x78,0x76,0x79,0x7D,0x83,0x85,0x86,0x87, -0x88,0x86,0x81,0x7C,0x7A,0x7A,0x78,0x76,0x79,0x7E,0x84,0x85,0x84,0x83,0x80,0x7C, -0x79,0x79,0x78,0x76,0x78,0x7C,0x7D,0x81,0x84,0x87,0x83,0x7F,0x7E,0x81,0x81,0x7E, -0x7D,0x7E,0x7E,0x7F,0x7E,0x7D,0x7F,0x83,0x81,0x7F,0x7E,0x7D,0x7B,0x7B,0x78,0x75, -0x74,0x79,0x7D,0x7F,0x81,0x82,0x7D,0x7B,0x7A,0x7D,0x83,0x86,0x83,0x82,0x83,0x85, -0x82,0x80,0x7F,0x7D,0x7D,0x7C,0x7B,0x7E,0x81,0x83,0x86,0x8B,0x8D,0x8D,0x8E,0x8B, -0x85,0x80,0x80,0x87,0x8C,0x8C,0x8B,0x87,0x7F,0x77,0x73,0x73,0x75,0x75,0x77,0x79, -0x7B,0x7F,0x81,0x86,0x8B,0x8B,0x88,0x83,0x81,0x82,0x82,0x83,0x82,0x81,0x83,0x88, -0x8A,0x86,0x7F,0x7E,0x7F,0x81,0x82,0x83,0x87,0x89,0x87,0x84,0x80,0x81,0x84,0x87, -0x86,0x82,0x81,0x81,0x82,0x80,0x7D,0x79,0x76,0x76,0x77,0x74,0x75,0x76,0x78,0x78, -0x78,0x7B,0x7F,0x82,0x87,0x86,0x84,0x83,0x81,0x7E,0x7C,0x7D,0x7D,0x7E,0x80,0x82, -0x85,0x89,0x8A,0x89,0x86,0x85,0x83,0x81,0x7F,0x80,0x7F,0x7E,0x7D,0x79,0x76,0x77, -0x7B,0x7E,0x80,0x7F,0x7D,0x79,0x74,0x71,0x75,0x7B,0x80,0x82,0x82,0x7F,0x7D,0x7E, -0x81,0x85,0x86,0x87,0x86,0x81,0x7C,0x7D,0x82,0x81,0x7D,0x7A,0x78,0x7C,0x84,0x86, -0x85,0x87,0x89,0x89,0x84,0x7D,0x7B,0x7B,0x7E,0x7E,0x7F,0x7E,0x80,0x83,0x85,0x81, -0x7D,0x7C,0x7D,0x7A,0x78,0x78,0x7D,0x81,0x83,0x83,0x7F,0x79,0x7A,0x7D,0x7E,0x7D, -0x79,0x77,0x7B,0x80,0x82,0x84,0x87,0x8A,0x88,0x83,0x80,0x82,0x87,0x8E,0x8F,0x8B, -0x89,0x86,0x84,0x82,0x7F,0x7E,0x7B,0x79,0x79,0x77,0x76,0x79,0x7F,0x89,0x8A,0x84, -0x7E,0x7C,0x7D,0x7E,0x7F,0x84,0x83,0x84,0x87,0x8C,0x8B,0x89,0x89,0x83,0x7F,0x7E, -0x7B,0x7B,0x7C,0x81,0x85,0x85,0x88,0x88,0x87,0x88,0x88,0x85,0x80,0x7F,0x80,0x84, -0x82,0x83,0x7F,0x7E,0x82,0x7C,0x7B,0x7D,0x7C,0x7A,0x75,0x74,0x76,0x77,0x7A,0x7B, -0x7D,0x83,0x85,0x81,0x84,0x84,0x85,0x86,0x88,0x83,0x7E,0x7E,0x7C,0x7C,0x7D,0x80, -0x83,0x82,0x81,0x7A,0x72,0x78,0x82,0x8A,0x88,0x89,0x8B,0x83,0x7B,0x79,0x74,0x77, -0x7C,0x7B,0x78,0x78,0x7D,0x82,0x7F,0x79,0x74,0x70,0x71,0x6F,0x73,0x79,0x7A,0x7F, -0x82,0x87,0x86,0x85,0x83,0x80,0x7F,0x7C,0x7C,0x7E,0x80,0x86,0x91,0x92,0x8D,0x8A, -0x85,0x82,0x81,0x82,0x7D,0x7A,0x83,0x81,0x80,0x87,0x85,0x83,0x84,0x7F,0x74,0x70, -0x79,0x78,0x79,0x7B,0x7B,0x7F,0x81,0x85,0x84,0x83,0x86,0x85,0x84,0x83,0x82,0x85, -0x80,0x78,0x86,0x8B,0x8C,0x8A,0x82,0x89,0x87,0x89,0x8C,0x8C,0x8E,0x86,0x84,0x81, -0x7B,0x7E,0x7D,0x7C,0x78,0x78,0x7A,0x76,0x79,0x79,0x74,0x78,0x80,0x81,0x85,0x85, -0x88,0x85,0x82,0x83,0x80,0x85,0x86,0x83,0x87,0x82,0x81,0x7E,0x78,0x79,0x7A,0x7F, -0x7A,0x7E,0x83,0x81,0x86,0x8A,0x88,0x8A,0x8A,0x8A,0x85,0x7F,0x79,0x70,0x73,0x72, -0x6F,0x7A,0x7C,0x78,0x7A,0x77,0x7A,0x77,0x7D,0x85,0x7F,0x84,0x87,0x84,0x88,0x88, -0x89,0x84,0x7E,0x81,0x7F,0x83,0x8B,0x8C,0x8B,0x86,0x85,0x82,0x7E,0x7F,0x79,0x78, -0x78,0x76,0x7B,0x83,0x89,0x87,0x83,0x86,0x83,0x7C,0x75,0x6E,0x6E,0x71,0x76,0x7B, -0x79,0x7D,0x82,0x80,0x80,0x7E,0x7A,0x76,0x77,0x79,0x78,0x7B,0x81,0x83,0x81,0x7F, -0x80,0x82,0x88,0x8A,0x87,0x88,0x89,0x88,0x86,0x86,0x83,0x7D,0x7D,0x81,0x81,0x80, -0x7F,0x7F,0x81,0x83,0x82,0x7F,0x7B,0x79,0x77,0x75,0x76,0x7C,0x80,0x80,0x81,0x7C, -0x78,0x79,0x7D,0x7D,0x7C,0x7E,0x82,0x84,0x88,0x86,0x83,0x86,0x87,0x89,0x8B,0x8E, -0x8F,0x88,0x83,0x80,0x7F,0x82,0x84,0x85,0x85,0x83,0x87,0x87,0x86,0x82,0x7F,0x81, -0x82,0x7F,0x7C,0x7B,0x7D,0x80,0x84,0x88,0x86,0x82,0x81,0x82,0x82,0x80,0x7F,0x7D, -0x7B,0x7F,0x83,0x85,0x88,0x87,0x86,0x80,0x7B,0x79,0x76,0x7A,0x7F,0x81,0x82,0x82, -0x86,0x86,0x86,0x86,0x82,0x7F,0x7E,0x7A,0x77,0x79,0x7F,0x83,0x85,0x8A,0x83,0x7C, -0x7B,0x79,0x74,0x71,0x70,0x6F,0x73,0x7C,0x83,0x89,0x8D,0x89,0x84,0x7E,0x79,0x7C, -0x7F,0x81,0x80,0x7D,0x7C,0x79,0x76,0x74,0x73,0x76,0x76,0x7B,0x83,0x82,0x7E,0x7F, -0x84,0x89,0x8E,0x8C,0x82,0x7B,0x7A,0x7A,0x7D,0x7E,0x7F,0x80,0x80,0x7F,0x7F,0x81, -0x81,0x7D,0x7B,0x7A,0x7A,0x7D,0x7E,0x80,0x81,0x80,0x83,0x86,0x83,0x85,0x88,0x88, -0x84,0x82,0x81,0x7E,0x7D,0x7E,0x7F,0x81,0x89,0x8A,0x84,0x80,0x7E,0x80,0x83,0x82, -0x82,0x82,0x81,0x81,0x82,0x87,0x87,0x80,0x7B,0x7D,0x83,0x83,0x7F,0x7D,0x7E,0x80, -0x86,0x88,0x83,0x81,0x7F,0x7B,0x78,0x78,0x78,0x77,0x7B,0x81,0x87,0x89,0x8A,0x8A, -0x86,0x84,0x80,0x80,0x86,0x86,0x84,0x82,0x85,0x88,0x84,0x80,0x7E,0x7D,0x7A,0x78, -0x76,0x78,0x7C,0x7F,0x81,0x80,0x80,0x80,0x81,0x80,0x7E,0x7D,0x7F,0x83,0x86,0x86, -0x87,0x83,0x81,0x80,0x7D,0x79,0x76,0x78,0x7A,0x7C,0x7F,0x82,0x83,0x84,0x84,0x86, -0x87,0x87,0x84,0x80,0x7E,0x7F,0x82,0x83,0x81,0x7E,0x80,0x81,0x81,0x82,0x82,0x7D, -0x79,0x78,0x77,0x75,0x75,0x74,0x77,0x7B,0x80,0x81,0x82,0x83,0x84,0x85,0x83,0x80, -0x80,0x7F,0x7C,0x7C,0x7C,0x7D,0x80,0x87,0x8A,0x86,0x82,0x82,0x84,0x83,0x7C,0x78, -0x79,0x79,0x79,0x7C,0x81,0x82,0x83,0x83,0x7F,0x7C,0x7A,0x76,0x72,0x71,0x74,0x77, -0x78,0x7A,0x7B,0x7A,0x7D,0x82,0x89,0x8E,0x8D,0x8B,0x89,0x88,0x89,0x8A,0x89,0x85, -0x81,0x7E,0x80,0x81,0x7F,0x7F,0x82,0x82,0x80,0x7C,0x76,0x78,0x7D,0x7D,0x7B,0x79, -0x7D,0x82,0x89,0x8C,0x8B,0x8B,0x8B,0x89,0x85,0x83,0x82,0x81,0x81,0x82,0x7E,0x80, -0x84,0x84,0x83,0x81,0x84,0x89,0x8C,0x8C,0x84,0x81,0x7D,0x78,0x76,0x77,0x79,0x7E, -0x85,0x89,0x88,0x8B,0x8A,0x86,0x82,0x7F,0x7E,0x7E,0x7E,0x80,0x7D,0x7C,0x7E,0x82, -0x83,0x83,0x84,0x81,0x79,0x76,0x77,0x7B,0x82,0x85,0x87,0x87,0x88,0x86,0x81,0x83, -0x82,0x7D,0x7D,0x79,0x76,0x76,0x79,0x75,0x74,0x75,0x74,0x7B,0x79,0x77,0x77,0x74, -0x7B,0x83,0x7F,0x7A,0x7D,0x85,0x84,0x80,0x81,0x7D,0x80,0x85,0x81,0x7E,0x7E,0x80, -0x80,0x7F,0x83,0x84,0x85,0x87,0x86,0x84,0x85,0x88,0x82,0x7F,0x7E,0x7E,0x7C,0x7D, -0x7D,0x79,0x7A,0x7F,0x80,0x7E,0x7A,0x7A,0x7B,0x7C,0x79,0x76,0x79,0x7B,0x7B,0x78, -0x7E,0x82,0x81,0x85,0x89,0x8B,0x88,0x85,0x81,0x7D,0x80,0x84,0x83,0x84,0x89,0x8A, -0x89,0x89,0x86,0x83,0x83,0x85,0x80,0x80,0x7E,0x7A,0x84,0x89,0x86,0x81,0x7F,0x80, -0x7E,0x7E,0x7C,0x79,0x7E,0x78,0x78,0x80,0x7F,0x87,0x84,0x80,0x7A,0x79,0x82,0x7D, -0x83,0x82,0x74,0x81,0x82,0x87,0x8B,0x8C,0x8E,0x8A,0x8B,0x84,0x7A,0x80,0x82,0x81, -0x87,0x82,0x82,0x80,0x7C,0x7B,0x77,0x7A,0x7B,0x7D,0x81,0x77,0x7C,0x80,0x7B,0x85, -0x86,0x89,0x8B,0x89,0x8A,0x81,0x84,0x83,0x78,0x83,0x7B,0x7A,0x83,0x7D,0x7B,0x79, -0x7F,0x85,0x83,0x8A,0x84,0x7D,0x87,0x7F,0x7C,0x79,0x75,0x79,0x7A,0x82,0x81,0x7F, -0x85,0x7B,0x7C,0x7E,0x7D,0x80,0x7A,0x79,0x79,0x7C,0x84,0x82,0x86,0x84,0x7F,0x80, -0x81,0x85,0x87,0x80,0x7B,0x75,0x74,0x76,0x76,0x7A,0x7A,0x7D,0x84,0x86,0x88,0x84, -0x7E,0x7A,0x7A,0x7C,0x7A,0x7D,0x7F,0x7D,0x7E,0x7F,0x83,0x87,0x87,0x82,0x7E,0x7E, -0x7D,0x7B,0x7D,0x7C,0x7C,0x7D,0x7C,0x7B,0x7A,0x7D,0x7D,0x7F,0x83,0x84,0x84,0x85, -0x83,0x82,0x7E,0x7D,0x7F,0x83,0x84,0x83,0x83,0x81,0x80,0x84,0x88,0x89,0x86,0x84, -0x82,0x7E,0x7B,0x7A,0x7C,0x80,0x85,0x89,0x88,0x86,0x87,0x87,0x84,0x82,0x7F,0x82, -0x83,0x82,0x83,0x82,0x82,0x82,0x82,0x82,0x80,0x81,0x82,0x81,0x7F,0x7E,0x7F,0x7F, -0x81,0x82,0x80,0x80,0x81,0x82,0x83,0x82,0x7F,0x80,0x84,0x88,0x87,0x84,0x84,0x81, -0x80,0x7E,0x7A,0x7B,0x7C,0x7E,0x80,0x82,0x83,0x7F,0x80,0x80,0x7C,0x79,0x77,0x76, -0x76,0x79,0x7F,0x7F,0x81,0x83,0x80,0x82,0x81,0x7E,0x7E,0x7B,0x7C,0x7D,0x80,0x84, -0x85,0x89,0x8A,0x86,0x84,0x81,0x7F,0x7B,0x79,0x7B,0x79,0x78,0x7A,0x7D,0x81,0x83, -0x83,0x80,0x7E,0x7F,0x7D,0x78,0x76,0x73,0x75,0x79,0x83,0x88,0x83,0x7E,0x7A,0x7C, -0x7F,0x7D,0x7D,0x7C,0x7E,0x7F,0x7F,0x86,0x87,0x84,0x7F,0x7E,0x86,0x89,0x88,0x87, -0x85,0x85,0x80,0x81,0x84,0x85,0x87,0x86,0x81,0x7F,0x7D,0x7B,0x7A,0x7A,0x7A,0x7A, -0x7B,0x7C,0x7A,0x79,0x79,0x7B,0x7F,0x82,0x81,0x84,0x89,0x87,0x83,0x81,0x81,0x80, -0x7C,0x7B,0x7C,0x7E,0x7F,0x83,0x84,0x84,0x88,0x8C,0x8A,0x87,0x88,0x87,0x84,0x80, -0x7A,0x7B,0x80,0x80,0x7E,0x7F,0x82,0x84,0x83,0x80,0x7A,0x7A,0x7E,0x7E,0x7D,0x7A, -0x7D,0x82,0x87,0x89,0x88,0x87,0x85,0x82,0x80,0x7F,0x80,0x80,0x7D,0x7B,0x7D,0x82, -0x86,0x87,0x88,0x87,0x85,0x83,0x83,0x84,0x85,0x87,0x86,0x81,0x7E,0x7B,0x7A,0x7B, -0x7B,0x7B,0x7E,0x7F,0x7B,0x74,0x74,0x7B,0x80,0x80,0x7D,0x7A,0x7C,0x81,0x82,0x7F, -0x80,0x80,0x80,0x81,0x83,0x84,0x83,0x80,0x7E,0x7C,0x7C,0x7E,0x81,0x83,0x85,0x87, -0x88,0x83,0x7D,0x77,0x76,0x7A,0x7D,0x7D,0x7C,0x7F,0x82,0x7F,0x7B,0x77,0x79,0x7A, -0x79,0x79,0x7A,0x7B,0x7A,0x7A,0x7C,0x7D,0x7C,0x7B,0x7B,0x7C,0x7C,0x7C,0x7D,0x7E, -0x82,0x87,0x8A,0x89,0x85,0x82,0x81,0x82,0x82,0x7F,0x7E,0x85,0x8A,0x88,0x85,0x87, -0x87,0x84,0x80,0x80,0x82,0x86,0x85,0x7E,0x78,0x77,0x7B,0x80,0x80,0x7D,0x7F,0x84, -0x86,0x88,0x84,0x7E,0x80,0x82,0x81,0x7F,0x81,0x83,0x82,0x81,0x81,0x81,0x88,0x86, -0x7E,0x79,0x7A,0x7D,0x7E,0x85,0x88,0x86,0x86,0x83,0x7F,0x83,0x82,0x89,0x86,0x83, -0x87,0x83,0x86,0x83,0x82,0x80,0x7C,0x81,0x7E,0x7A,0x82,0x82,0x7F,0x7B,0x78,0x79, -0x7F,0x7F,0x80,0x7C,0x83,0x87,0x84,0x86,0x7E,0x80,0x81,0x7B,0x7D,0x79,0x7F,0x83, -0x80,0x7E,0x76,0x7F,0x7C,0x7A,0x7F,0x79,0x7E,0x83,0x84,0x84,0x82,0x86,0x84,0x83, -0x85,0x83,0x83,0x88,0x82,0x78,0x7A,0x78,0x7F,0x7A,0x7E,0x7F,0x7D,0x83,0x7E,0x84, -0x80,0x80,0x7E,0x72,0x72,0x78,0x7A,0x7D,0x7F,0x83,0x84,0x89,0x89,0x86,0x83,0x84, -0x80,0x80,0x7F,0x79,0x79,0x7F,0x81,0x7F,0x80,0x87,0x82,0x82,0x7F,0x7D,0x7B,0x7B, -0x78,0x74,0x7A,0x81,0x81,0x83,0x7F,0x7F,0x7E,0x7E,0x7B,0x78,0x7B,0x7C,0x7C,0x78, -0x77,0x7C,0x81,0x8B,0x89,0x8E,0x8A,0x8A,0x8C,0x83,0x81,0x81,0x87,0x87,0x84,0x85, -0x82,0x81,0x80,0x7D,0x78,0x7A,0x78,0x74,0x7B,0x7D,0x81,0x84,0x82,0x80,0x7A,0x7E, -0x80,0x83,0x83,0x82,0x82,0x80,0x7E,0x7C,0x7C,0x7B,0x7C,0x80,0x81,0x86,0x8B,0x84, -0x83,0x86,0x85,0x83,0x84,0x84,0x87,0x8A,0x8A,0x86,0x88,0x8E,0x8D,0x8D,0x8D,0x83, -0x7E,0x7D,0x7A,0x78,0x73,0x72,0x77,0x7B,0x7C,0x7A,0x7C,0x7E,0x7F,0x83,0x84,0x83, -0x83,0x82,0x81,0x82,0x81,0x7E,0x7E,0x82,0x84,0x88,0x89,0x89,0x8A,0x87,0x82,0x7C, -0x78,0x78,0x76,0x75,0x75,0x76,0x7A,0x7D,0x80,0x83,0x85,0x85,0x82,0x7B,0x78,0x77, -0x78,0x7A,0x7C,0x7F,0x7D,0x7A,0x7A,0x78,0x79,0x7C,0x7E,0x7F,0x81,0x84,0x86,0x87, -0x86,0x81,0x80,0x7E,0x7D,0x80,0x82,0x83,0x80,0x7D,0x7A,0x77,0x79,0x79,0x78,0x7C, -0x7E,0x7E,0x7D,0x7B,0x7D,0x7F,0x83,0x85,0x82,0x83,0x82,0x81,0x7F,0x7C,0x82,0x89, -0x8A,0x85,0x82,0x82,0x85,0x8A,0x88,0x81,0x7B,0x7A,0x7A,0x7B,0x78,0x7A,0x7F,0x84, -0x86,0x85,0x85,0x84,0x83,0x82,0x7F,0x7D,0x7F,0x80,0x81,0x84,0x83,0x81,0x7F,0x80, -0x88,0x89,0x87,0x84,0x85,0x86,0x88,0x88,0x84,0x80,0x81,0x83,0x88,0x82,0x7F,0x81, -0x81,0x7E,0x76,0x76,0x78,0x7B,0x81,0x7F,0x80,0x83,0x85,0x82,0x81,0x80,0x7D,0x7D, -0x79,0x7C,0x81,0x83,0x82,0x7C,0x7D,0x7D,0x7E,0x83,0x82,0x7E,0x7D,0x7A,0x7F,0x82, -0x86,0x89,0x8A,0x88,0x82,0x83,0x83,0x81,0x80,0x7F,0x82,0x80,0x7D,0x7E,0x78,0x7B, -0x7B,0x7A,0x80,0x81,0x84,0x84,0x80,0x7F,0x7B,0x7D,0x7F,0x7D,0x7B,0x7D,0x7F,0x83, -0x81,0x7E,0x81,0x82,0x83,0x80,0x7C,0x7B,0x7D,0x82,0x7F,0x7C,0x7E,0x81,0x86,0x85, -0x86,0x85,0x82,0x82,0x7E,0x7C,0x7C,0x7D,0x7F,0x7B,0x75,0x76,0x7A,0x7D,0x7F,0x7F, -0x80,0x7E,0x7B,0x7C,0x7D,0x81,0x81,0x81,0x82,0x80,0x81,0x81,0x84,0x83,0x82,0x81, -0x7E,0x7F,0x81,0x82,0x82,0x80,0x7E,0x7D,0x7E,0x80,0x80,0x7F,0x7E,0x7C,0x7B,0x7B, -0x7B,0x7B,0x79,0x7C,0x80,0x80,0x82,0x81,0x7E,0x79,0x79,0x7D,0x7D,0x7F,0x7F,0x81, -0x87,0x8B,0x8A,0x86,0x83,0x84,0x8A,0x8E,0x8D,0x89,0x89,0x89,0x88,0x87,0x86,0x83, -0x83,0x84,0x86,0x84,0x80,0x80,0x81,0x80,0x81,0x82,0x7F,0x78,0x73,0x72,0x6E,0x72, -0x79,0x7F,0x84,0x86,0x85,0x83,0x83,0x88,0x88,0x89,0x85,0x7E,0x7D,0x7E,0x81,0x81, -0x84,0x88,0x87,0x85,0x84,0x84,0x84,0x81,0x7B,0x7A,0x7D,0x85,0x88,0x85,0x85,0x82, -0x84,0x84,0x82,0x83,0x80,0x7F,0x7F,0x7B,0x75,0x70,0x70,0x72,0x78,0x7E,0x7E,0x80, -0x82,0x7F,0x7C,0x7B,0x7C,0x7B,0x7D,0x7B,0x79,0x79,0x7A,0x79,0x7D,0x81,0x82,0x83, -0x83,0x85,0x83,0x80,0x7F,0x7F,0x85,0x83,0x80,0x7E,0x7A,0x80,0x83,0x85,0x84,0x7D, -0x7B,0x7A,0x80,0x7F,0x7E,0x7D,0x7B,0x7D,0x79,0x80,0x85,0x86,0x83,0x7C,0x7C,0x76, -0x78,0x7B,0x7C,0x7D,0x7B,0x84,0x83,0x88,0x8C,0x8B,0x88,0x85,0x83,0x80,0x7E,0x7E, -0x7C,0x7C,0x7F,0x83,0x83,0x8A,0x8A,0x8B,0x8C,0x88,0x84,0x79,0x77,0x74,0x74,0x7A, -0x7B,0x7D,0x80,0x81,0x81,0x80,0x7E,0x7F,0x83,0x82,0x81,0x81,0x80,0x82,0x83,0x85, -0x84,0x89,0x85,0x89,0x87,0x82,0x81,0x7E,0x83,0x82,0x81,0x82,0x7B,0x7F,0x82,0x81, -0x87,0x85,0x85,0x88,0x8B,0x89,0x86,0x7F,0x78,0x78,0x7A,0x7B,0x7A,0x7C,0x7D,0x7C, -0x7B,0x77,0x7B,0x80,0x80,0x7C,0x7A,0x7A,0x7A,0x81,0x85,0x80,0x81,0x82,0x86,0x8A, -0x88,0x88,0x85,0x80,0x80,0x7E,0x7E,0x7D,0x7C,0x7F,0x83,0x88,0x8C,0x8E,0x8B,0x84, -0x7E,0x7B,0x7C,0x7C,0x7C,0x7B,0x78,0x78,0x79,0x79,0x79,0x7A,0x7A,0x77,0x74,0x74, -0x76,0x78,0x7D,0x81,0x81,0x82,0x82,0x82,0x83,0x81,0x80,0x81,0x84,0x86,0x87,0x89, -0x88,0x83,0x7D,0x76,0x7A,0x7F,0x80,0x7F,0x7E,0x7E,0x80,0x83,0x84,0x81,0x82,0x80, -0x7A,0x77,0x76,0x73,0x72,0x74,0x78,0x7D,0x81,0x83,0x84,0x85,0x81,0x7E,0x7C,0x7D, -0x7F,0x7E,0x7E,0x80,0x82,0x86,0x8B,0x8F,0x8E,0x89,0x84,0x81,0x80,0x80,0x7B,0x7A, -0x7E,0x82,0x84,0x84,0x88,0x89,0x87,0x82,0x7A,0x75,0x75,0x78,0x7C,0x7D,0x7B,0x7D, -0x81,0x86,0x85,0x83,0x84,0x81,0x82,0x83,0x84,0x8A,0x8E,0x91,0x90,0x90,0x8C,0x87, -0x85,0x82,0x7D,0x7C,0x78,0x78,0x7B,0x80,0x86,0x87,0x86,0x82,0x82,0x82,0x7F,0x7F, -0x7A,0x79,0x7A,0x7C,0x7C,0x7B,0x80,0x7D,0x7B,0x7B,0x77,0x7A,0x7B,0x7E,0x83,0x85, -0x87,0x88,0x87,0x83,0x7E,0x7E,0x82,0x81,0x80,0x7E,0x7F,0x81,0x80,0x7D,0x7C,0x7E, -0x81,0x7F,0x7B,0x78,0x7A,0x7E,0x7D,0x7F,0x81,0x83,0x86,0x83,0x82,0x7E,0x7D,0x7D, -0x79,0x75,0x75,0x78,0x7D,0x7E,0x7F,0x80,0x81,0x82,0x80,0x7A,0x7C,0x7D,0x82,0x81, -0x80,0x80,0x7F,0x83,0x84,0x84,0x83,0x7F,0x7E,0x7D,0x7F,0x7E,0x7B,0x7C,0x7B,0x7C, -0x7E,0x7F,0x80,0x80,0x80,0x82,0x83,0x83,0x84,0x85,0x88,0x89,0x87,0x85,0x81,0x7F, -0x7D,0x7A,0x7B,0x7B,0x7A,0x7A,0x7C,0x80,0x81,0x83,0x84,0x85,0x83,0x83,0x84,0x83, -0x7F,0x7E,0x80,0x81,0x82,0x81,0x82,0x82,0x7F,0x7B,0x79,0x7A,0x7C,0x7D,0x80,0x82, -0x85,0x87,0x88,0x89,0x89,0x87,0x83,0x80,0x83,0x85,0x84,0x81,0x7E,0x7D,0x7D,0x7F, -0x81,0x80,0x81,0x81,0x82,0x82,0x82,0x82,0x81,0x7F,0x7F,0x7C,0x7C,0x80,0x80,0x7E, -0x7F,0x81,0x81,0x85,0x85,0x81,0x81,0x7E,0x7E,0x80,0x83,0x84,0x82,0x85,0x89,0x86, -0x88,0x88,0x85,0x83,0x80,0x7F,0x82,0x82,0x83,0x80,0x7A,0x78,0x79,0x7F,0x7D,0x7B, -0x7D,0x79,0x79,0x75,0x73,0x73,0x78,0x7F,0x7F,0x83,0x84,0x81,0x82,0x80,0x7F,0x80, -0x7F,0x82,0x84,0x83,0x85,0x83,0x82,0x82,0x7F,0x7E,0x7D,0x80,0x81,0x81,0x7F,0x7F, -0x81,0x83,0x83,0x7F,0x7A,0x78,0x76,0x74,0x74,0x73,0x75,0x76,0x79,0x7C,0x7C,0x7B, -0x7D,0x80,0x82,0x81,0x7E,0x7F,0x81,0x82,0x83,0x82,0x86,0x85,0x86,0x86,0x82,0x82, -0x7F,0x82,0x85,0x87,0x87,0x85,0x89,0x87,0x84,0x7E,0x7D,0x7F,0x7C,0x7C,0x7A,0x7C, -0x7E,0x7D,0x7F,0x7F,0x81,0x84,0x85,0x86,0x84,0x84,0x7F,0x7E,0x81,0x84,0x88,0x87, -0x86,0x83,0x82,0x81,0x80,0x7F,0x7B,0x7D,0x7F,0x80,0x82,0x84,0x86,0x87,0x89,0x8A, -0x86,0x86,0x84,0x85,0x83,0x84,0x83,0x81,0x80,0x7B,0x79,0x7B,0x7A,0x79,0x76,0x77, -0x7C,0x7D,0x80,0x80,0x82,0x87,0x87,0x85,0x81,0x7F,0x83,0x82,0x81,0x82,0x80,0x80, -0x80,0x7D,0x7B,0x7D,0x80,0x84,0x83,0x81,0x80,0x82,0x85,0x83,0x80,0x81,0x80,0x7E, -0x7B,0x77,0x77,0x76,0x76,0x76,0x76,0x75,0x77,0x7C,0x7E,0x7F,0x7D,0x7E,0x80,0x81, -0x81,0x82,0x84,0x86,0x84,0x84,0x85,0x86,0x86,0x84,0x82,0x80,0x7E,0x7C,0x7B,0x7E, -0x7F,0x7E,0x7E,0x7F,0x81,0x83,0x84,0x82,0x7F,0x7C,0x7B,0x7E,0x82,0x83,0x83,0x82, -0x7F,0x7A,0x77,0x79,0x7E,0x81,0x80,0x7E,0x7F,0x7F,0x7D,0x7B,0x7B,0x7F,0x82,0x82, -0x81,0x80,0x7F,0x7B,0x7B,0x7F,0x82,0x85,0x87,0x89,0x8A,0x89,0x87,0x86,0x86,0x81, -0x7C,0x7D,0x7D,0x7D,0x7C,0x79,0x79,0x7A,0x80,0x87,0x88,0x87,0x85,0x84,0x80,0x7D, -0x7A,0x79,0x7D,0x82,0x84,0x81,0x7F,0x82,0x85,0x89,0x87,0x81,0x7D,0x78,0x77,0x78, -0x7B,0x7F,0x82,0x87,0x86,0x86,0x88,0x88,0x85,0x7E,0x7C,0x7E,0x84,0x85,0x85,0x87, -0x85,0x84,0x81,0x7F,0x7C,0x7D,0x82,0x82,0x82,0x82,0x82,0x83,0x85,0x82,0x80,0x7F, -0x7E,0x80,0x81,0x80,0x7D,0x7A,0x7A,0x7D,0x84,0x88,0x87,0x84,0x81,0x80,0x80,0x7F, -0x7B,0x7A,0x7B,0x7B,0x7D,0x7E,0x7E,0x7F,0x80,0x81,0x84,0x82,0x7F,0x7F,0x7F,0x7D, -0x7D,0x7F,0x82,0x84,0x85,0x86,0x83,0x7E,0x78,0x74,0x73,0x72,0x73,0x76,0x79,0x7C, -0x80,0x81,0x7E,0x7D,0x7E,0x81,0x83,0x83,0x80,0x7C,0x7A,0x7B,0x7E,0x83,0x85,0x86, -0x85,0x83,0x7E,0x7A,0x78,0x7A,0x7F,0x82,0x83,0x7F,0x7D,0x7B,0x7A,0x7A,0x7B,0x7E, -0x7F,0x7F,0x81,0x80,0x7F,0x80,0x82,0x85,0x87,0x87,0x85,0x82,0x80,0x7F,0x80,0x82, -0x84,0x85,0x88,0x88,0x85,0x86,0x86,0x84,0x80,0x7C,0x7D,0x80,0x81,0x80,0x7E,0x7E, -0x7F,0x80,0x81,0x81,0x7F,0x80,0x80,0x7D,0x7D,0x7E,0x83,0x86,0x83,0x81,0x7E,0x81, -0x85,0x84,0x84,0x88,0x88,0x8C,0x8B,0x89,0x87,0x86,0x86,0x83,0x7F,0x7C,0x7A,0x78, -0x78,0x79,0x7C,0x7E,0x81,0x80,0x7E,0x7B,0x7E,0x81,0x7F,0x7F,0x80,0x81,0x82,0x82, -0x80,0x80,0x7D,0x80,0x80,0x7E,0x7B,0x7A,0x7A,0x7C,0x7C,0x81,0x85,0x87,0x88,0x8A, -0x89,0x88,0x82,0x7F,0x81,0x81,0x82,0x7E,0x7B,0x7B,0x7A,0x79,0x79,0x78,0x7A,0x7B, -0x7D,0x7D,0x79,0x78,0x7D,0x83,0x86,0x85,0x83,0x84,0x85,0x85,0x84,0x83,0x83,0x81, -0x7E,0x7B,0x7A,0x7A,0x7A,0x7B,0x7E,0x81,0x82,0x82,0x80,0x7D,0x7A,0x7A,0x7B,0x7D, -0x7E,0x7E,0x80,0x82,0x85,0x85,0x82,0x81,0x7D,0x7A,0x78,0x79,0x7D,0x81,0x84,0x85, -0x85,0x85,0x85,0x85,0x83,0x7F,0x7C,0x7C,0x81,0x86,0x87,0x85,0x82,0x82,0x80,0x7F, -0x7D,0x7A,0x7B,0x7E,0x80,0x7D,0x7B,0x7C,0x7C,0x7D,0x7B,0x7A,0x7C,0x7E,0x7E,0x7B, -0x7B,0x7E,0x82,0x84,0x82,0x80,0x81,0x83,0x84,0x84,0x83,0x82,0x83,0x84,0x84,0x83, -0x85,0x8A,0x8E,0x8E,0x89,0x85,0x84,0x83,0x83,0x82,0x81,0x80,0x80,0x7F,0x80,0x82, -0x82,0x7F,0x7D,0x7C,0x7D,0x7E,0x7D,0x7B,0x7B,0x7C,0x7F,0x80,0x81,0x82,0x84,0x83, -0x81,0x7E,0x7D,0x81,0x86,0x87,0x86,0x87,0x86,0x86,0x84,0x84,0x84,0x85,0x85,0x83, -0x81,0x7F,0x7A,0x77,0x78,0x7D,0x84,0x87,0x85,0x82,0x80,0x80,0x7F,0x7B,0x77,0x76, -0x7A,0x7C,0x7B,0x77,0x76,0x79,0x7B,0x7C,0x7B,0x7B,0x7E,0x7E,0x7E,0x7E,0x7E,0x7F, -0x7F,0x7F,0x7E,0x7E,0x82,0x86,0x86,0x86,0x85,0x83,0x80,0x7F,0x7F,0x7C,0x77,0x73, -0x75,0x7B,0x82,0x86,0x87,0x84,0x80,0x7D,0x7C,0x7C,0x7A,0x78,0x76,0x78,0x7A,0x7B, -0x7E,0x81,0x81,0x7F,0x7E,0x7F,0x81,0x82,0x82,0x83,0x86,0x87,0x87,0x86,0x84,0x82, -0x83,0x85,0x84,0x81,0x80,0x82,0x83,0x84,0x84,0x83,0x84,0x83,0x81,0x7E,0x7D,0x7E, -0x7F,0x80,0x80,0x7F,0x7F,0x7E,0x7F,0x7F,0x7F,0x81,0x81,0x80,0x7F,0x80,0x82,0x83, -0x83,0x82,0x81,0x81,0x82,0x82,0x81,0x82,0x82,0x82,0x81,0x81,0x83,0x86,0x89,0x89, -0x87,0x84,0x81,0x80,0x81,0x83,0x83,0x80,0x7F,0x80,0x81,0x81,0x7F,0x7E,0x7D,0x7F, -0x81,0x81,0x7E,0x7B,0x79,0x79,0x7B,0x7C,0x7E,0x7E,0x7C,0x7A,0x79,0x7A,0x7C,0x7E, -0x7E,0x7E,0x82,0x86,0x89,0x88,0x88,0x87,0x87,0x89,0x89,0x8A,0x89,0x85,0x84,0x83, -0x82,0x7F,0x7C,0x7A,0x79,0x78,0x77,0x76,0x77,0x79,0x7B,0x7C,0x7D,0x7F,0x7F,0x79, -0x74,0x73,0x75,0x79,0x7E,0x82,0x85,0x86,0x87,0x87,0x88,0x86,0x84,0x82,0x81,0x80, -0x7E,0x7E,0x81,0x84,0x85,0x84,0x83,0x83,0x84,0x81,0x7C,0x78,0x77,0x77,0x76,0x77, -0x78,0x77,0x77,0x79,0x7D,0x7E,0x7D,0x7D,0x7E,0x81,0x83,0x81,0x7F,0x80,0x80,0x7F, -0x7E,0x7E,0x80,0x83,0x85,0x85,0x84,0x81,0x7F,0x7E,0x7F,0x82,0x86,0x89,0x89,0x85, -0x80,0x7E,0x7E,0x7E,0x7D,0x7F,0x84,0x88,0x88,0x87,0x84,0x81,0x81,0x83,0x84,0x82, -0x7E,0x7B,0x7A,0x7B,0x7D,0x81,0x83,0x82,0x82,0x81,0x7F,0x7D,0x7D,0x7F,0x82,0x85, -0x86,0x86,0x86,0x83,0x81,0x82,0x85,0x89,0x8A,0x8B,0x8A,0x8A,0x87,0x81,0x7F,0x7F, -0x80,0x80,0x7F,0x80,0x82,0x82,0x83,0x84,0x83,0x80,0x7E,0x80,0x80,0x7E,0x7A,0x79, -0x7A,0x7B,0x7B,0x78,0x76,0x76,0x76,0x77,0x78,0x7A,0x7D,0x81,0x85,0x89,0x8B,0x8B, -0x89,0x87,0x84,0x81,0x7E,0x7B,0x79,0x7A,0x7D,0x80,0x82,0x82,0x81,0x80,0x7F,0x7D, -0x7A,0x7A,0x78,0x76,0x75,0x77,0x7B,0x7E,0x7E,0x7E,0x7F,0x80,0x7F,0x7B,0x78,0x77, -0x78,0x7D,0x81,0x81,0x80,0x81,0x82,0x82,0x83,0x87,0x8A,0x8B,0x8A,0x86,0x81,0x7F, -0x7F,0x7E,0x7B,0x78,0x78,0x7B,0x7F,0x80,0x7F,0x7F,0x7E,0x7F,0x82,0x83,0x82,0x83, -0x83,0x80,0x80,0x82,0x84,0x80,0x7B,0x7B,0x7F,0x83,0x83,0x82,0x82,0x82,0x81,0x81, -0x81,0x80,0x7F,0x7C,0x78,0x79,0x7D,0x81,0x85,0x88,0x88,0x86,0x85,0x84,0x86,0x87, -0x86,0x85,0x83,0x83,0x85,0x85,0x85,0x85,0x84,0x84,0x83,0x7F,0x7A,0x78,0x79,0x7A, -0x7B,0x7D,0x81,0x85,0x89,0x89,0x85,0x80,0x7D,0x79,0x78,0x77,0x76,0x77,0x79,0x7B, -0x7D,0x80,0x82,0x85,0x87,0x88,0x88,0x88,0x87,0x86,0x85,0x84,0x83,0x85,0x87,0x85, -0x81,0x81,0x81,0x81,0x81,0x7F,0x7D,0x7C,0x7E,0x7F,0x80,0x81,0x81,0x7F,0x7D,0x7D, -0x80,0x80,0x80,0x7F,0x7E,0x7A,0x76,0x75,0x79,0x7B,0x79,0x79,0x7C,0x81,0x85,0x86, -0x84,0x81,0x80,0x81,0x82,0x81,0x7F,0x7D,0x7D,0x7F,0x80,0x7F,0x80,0x80,0x81,0x80, -0x7F,0x7F,0x80,0x7F,0x7C,0x7C,0x7D,0x7E,0x7E,0x7E,0x7F,0x7F,0x7F,0x7C,0x7A,0x79, -0x78,0x77,0x76,0x77,0x77,0x7A,0x7D,0x81,0x85,0x84,0x84,0x83,0x82,0x85,0x86,0x84, -0x80,0x7F,0x82,0x86,0x89,0x89,0x86,0x83,0x80,0x7C,0x79,0x78,0x7A,0x7F,0x80,0x7F, -0x7E,0x7E,0x7E,0x7D,0x7C,0x7B,0x7B,0x7C,0x7E,0x7F,0x7F,0x80,0x83,0x85,0x84,0x84, -0x86,0x86,0x84,0x84,0x86,0x8A,0x8B,0x8A,0x8A,0x8A,0x8A,0x8C,0x8C,0x8A,0x87,0x83, -0x80,0x80,0x82,0x84,0x84,0x84,0x83,0x81,0x80,0x7D,0x7B,0x79,0x78,0x76,0x78,0x78, -0x77,0x78,0x7C,0x7F,0x80,0x82,0x81,0x80,0x7C,0x7A,0x7C,0x7F,0x82,0x83,0x85,0x88, -0x8B,0x8D,0x8C,0x8B,0x88,0x85,0x84,0x82,0x81,0x7E,0x7D,0x7C,0x7C,0x7E,0x7E,0x7E, -0x7E,0x7F,0x7F,0x7E,0x7A,0x76,0x75,0x76,0x77,0x78,0x7A,0x7C,0x7B,0x78,0x76,0x78, -0x7B,0x7E,0x7D,0x7D,0x7E,0x7F,0x80,0x83,0x85,0x85,0x83,0x82,0x82,0x84,0x85,0x86, -0x86,0x83,0x7E,0x79,0x77,0x79,0x79,0x79,0x7A,0x7D,0x80,0x80,0x80,0x82,0x82,0x83, -0x83,0x82,0x81,0x81,0x81,0x81,0x82,0x85,0x87,0x85,0x82,0x7E,0x7B,0x7A,0x7C,0x7D, -0x7A,0x78,0x79,0x7D,0x7F,0x7E,0x7F,0x81,0x83,0x83,0x82,0x82,0x83,0x84,0x85,0x84, -0x83,0x83,0x84,0x85,0x86,0x86,0x83,0x7F,0x7E,0x80,0x81,0x81,0x80,0x7E,0x7D,0x7E, -0x82,0x85,0x86,0x88,0x88,0x86,0x81,0x7C,0x7B,0x7C,0x7D,0x7B,0x7A,0x7C,0x7E,0x7E, -0x7C,0x79,0x78,0x7A,0x80,0x84,0x85,0x84,0x85,0x87,0x8A,0x8D,0x8E,0x8B,0x87,0x83, -0x80,0x7F,0x80,0x7E,0x7C,0x7B,0x7C,0x7E,0x80,0x81,0x82,0x81,0x7F,0x7D,0x7D,0x7E, -0x7F,0x7F,0x7F,0x7F,0x7F,0x7E,0x7D,0x7E,0x81,0x83,0x84,0x85,0x85,0x85,0x85,0x83, -0x82,0x81,0x80,0x80,0x80,0x80,0x81,0x82,0x82,0x81,0x7F,0x7F,0x7F,0x7F,0x7F,0x7B, -0x79,0x79,0x7C,0x7E,0x7D,0x7C,0x7C,0x7B,0x79,0x77,0x77,0x77,0x78,0x7A,0x7D,0x80, -0x83,0x86,0x86,0x85,0x81,0x80,0x81,0x85,0x87,0x84,0x7F,0x7D,0x7D,0x7E,0x7E,0x7E, -0x80,0x81,0x81,0x80,0x80,0x7F,0x7E,0x7C,0x7B,0x7A,0x79,0x7B,0x7B,0x7B,0x79,0x78, -0x7A,0x7E,0x82,0x82,0x81,0x7F,0x7C,0x7A,0x79,0x7B,0x7D,0x80,0x83,0x85,0x87,0x88, -0x88,0x87,0x88,0x87,0x86,0x86,0x85,0x85,0x85,0x84,0x83,0x83,0x83,0x81,0x80,0x81, -0x83,0x83,0x85,0x85,0x84,0x80,0x7D,0x7A,0x77,0x74,0x76,0x7A,0x7F,0x83,0x84,0x84, -0x84,0x85,0x84,0x80,0x7C,0x7A,0x7B,0x7E,0x82,0x87,0x8B,0x8D,0x8E,0x8D,0x8A,0x85, -0x81,0x7F,0x7D,0x7D,0x80,0x85,0x88,0x89,0x88,0x87,0x85,0x83,0x82,0x80,0x7A,0x76, -0x74,0x73,0x74,0x76,0x78,0x7B,0x7E,0x7F,0x7F,0x7E,0x7F,0x7E,0x7C,0x7C,0x80,0x84, -0x85,0x82,0x80,0x80,0x84,0x88,0x8C,0x8C,0x88,0x84,0x82,0x82,0x80,0x7C,0x7B,0x7B, -0x7B,0x77,0x74,0x74,0x74,0x75,0x79,0x7D,0x81,0x82,0x80,0x7E,0x7E,0x80,0x80,0x7F, -0x7E,0x7C,0x7B,0x7E,0x83,0x87,0x87,0x84,0x82,0x81,0x82,0x83,0x82,0x7F,0x7C,0x7A, -0x7A,0x7E,0x82,0x84,0x84,0x84,0x83,0x81,0x7F,0x7E,0x7D,0x7C,0x7D,0x7C,0x7D,0x7E, -0x7E,0x7E,0x7E,0x7F,0x7F,0x7D,0x7B,0x79,0x79,0x7C,0x81,0x83,0x84,0x87,0x88,0x86, -0x84,0x83,0x81,0x80,0x7F,0x7F,0x80,0x82,0x82,0x81,0x80,0x7F,0x7E,0x7E,0x7E,0x82, -0x86,0x88,0x88,0x86,0x84,0x7F,0x7B,0x7A,0x79,0x78,0x78,0x7A,0x7C,0x7E,0x82,0x85, -0x87,0x85,0x81,0x7F,0x7C,0x7B,0x7C,0x7E,0x80,0x82,0x85,0x89,0x8E,0x91,0x8F,0x88, -0x84,0x81,0x81,0x81,0x7F,0x7F,0x80,0x82,0x84,0x85,0x85,0x82,0x80,0x7E,0x7D,0x7E, -0x7D,0x7C,0x7A,0x79,0x78,0x7A,0x7E,0x83,0x86,0x89,0x88,0x84,0x82,0x80,0x7F,0x7F, -0x80,0x83,0x86,0x87,0x86,0x85,0x84,0x82,0x80,0x7C,0x7A,0x79,0x7C,0x7F,0x81,0x80, -0x80,0x83,0x86,0x83,0x7F,0x7C,0x7A,0x78,0x77,0x77,0x79,0x7B,0x7E,0x7E,0x7A,0x76, -0x74,0x76,0x7C,0x82,0x85,0x86,0x88,0x89,0x89,0x88,0x85,0x80,0x7C,0x79,0x77,0x77, -0x79,0x7A,0x7B,0x7C,0x7F,0x81,0x82,0x81,0x7E,0x7B,0x79,0x7B,0x7D,0x7D,0x7C,0x7B, -0x7D,0x7F,0x80,0x82,0x82,0x80,0x7D,0x7C,0x7C,0x7E,0x80,0x82,0x82,0x81,0x80,0x80, -0x80,0x7F,0x7E,0x7F,0x81,0x82,0x82,0x83,0x86,0x89,0x8A,0x87,0x83,0x80,0x7D,0x7A, -0x79,0x7B,0x7E,0x80,0x83,0x87,0x8B,0x8A,0x85,0x7F,0x7E,0x7E,0x7F,0x81,0x82,0x84, -0x86,0x87,0x87,0x86,0x84,0x83,0x82,0x7F,0x7E,0x7F,0x81,0x81,0x7F,0x7E,0x7D,0x7F, -0x83,0x85,0x84,0x81,0x80,0x80,0x80,0x81,0x7F,0x7E,0x7F,0x82,0x82,0x80,0x81,0x84, -0x85,0x83,0x7F,0x7C,0x7C,0x7E,0x80,0x81,0x83,0x86,0x88,0x89,0x87,0x85,0x83,0x81, -0x7F,0x7D,0x7D,0x7D,0x7C,0x7C,0x7D,0x7B,0x7A,0x79,0x7B,0x7B,0x7C,0x7D,0x7C,0x79, -0x79,0x7B,0x80,0x82,0x83,0x83,0x84,0x86,0x85,0x82,0x80,0x81,0x81,0x80,0x80,0x81, -0x81,0x80,0x7F,0x7F,0x81,0x81,0x80,0x80,0x80,0x80,0x7F,0x80,0x7F,0x7E,0x7E,0x7D, -0x7C,0x79,0x78,0x79,0x7A,0x79,0x77,0x78,0x7C,0x80,0x7F,0x7D,0x7D,0x80,0x82,0x83, -0x83,0x82,0x81,0x81,0x81,0x81,0x81,0x81,0x82,0x83,0x84,0x85,0x86,0x85,0x84,0x80, -0x7B,0x78,0x78,0x79,0x7A,0x7B,0x7C,0x7C,0x7D,0x7D,0x7B,0x7A,0x79,0x7A,0x7D,0x80, -0x81,0x81,0x82,0x85,0x88,0x89,0x88,0x86,0x85,0x83,0x82,0x81,0x7F,0x7D,0x7F,0x81, -0x82,0x84,0x85,0x86,0x86,0x84,0x82,0x84,0x86,0x86,0x84,0x81,0x7F,0x7F,0x7E,0x7D, -0x7D,0x7F,0x7F,0x80,0x80,0x7F,0x80,0x82,0x84,0x86,0x86,0x86,0x86,0x84,0x82,0x81, -0x81,0x83,0x84,0x84,0x84,0x83,0x83,0x85,0x85,0x83,0x81,0x80,0x81,0x82,0x82,0x82, -0x82,0x82,0x82,0x82,0x82,0x81,0x7F,0x7D,0x7C,0x7B,0x7A,0x7A,0x7B,0x7C,0x7D,0x7E, -0x7F,0x7F,0x7E,0x7B,0x79,0x79,0x7B,0x7C,0x7E,0x80,0x82,0x83,0x85,0x85,0x84,0x81, -0x7E,0x7F,0x80,0x7E,0x7A,0x79,0x7B,0x7D,0x7E,0x80,0x82,0x83,0x80,0x7E,0x7C,0x7A, -0x78,0x77,0x76,0x76,0x77,0x79,0x7C,0x7E,0x7E,0x7E,0x7F,0x80,0x81,0x81,0x7F,0x7D, -0x7C,0x7C,0x7C,0x7C,0x7D,0x7F,0x81,0x80,0x7F,0x81,0x84,0x89,0x8A,0x88,0x85,0x83, -0x82,0x80,0x7E,0x7C,0x7A,0x7A,0x7E,0x83,0x85,0x84,0x84,0x85,0x86,0x85,0x83,0x83, -0x83,0x82,0x7E,0x7C,0x7A,0x7A,0x7B,0x7D,0x7F,0x81,0x82,0x83,0x84,0x84,0x83,0x81, -0x80,0x80,0x80,0x82,0x86,0x89,0x88,0x83,0x80,0x7D,0x7D,0x7E,0x7E,0x7E,0x7F,0x80, -0x82,0x85,0x89,0x8B,0x8B,0x89,0x86,0x83,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x80, -0x7E,0x7C,0x7C,0x7D,0x7E,0x80,0x81,0x80,0x7E,0x7D,0x7B,0x7A,0x7C,0x7E,0x7F,0x80, -0x81,0x83,0x83,0x81,0x7F,0x7E,0x7F,0x80,0x81,0x83,0x83,0x84,0x84,0x83,0x82,0x7F, -0x7D,0x7B,0x7C,0x7E,0x81,0x83,0x83,0x81,0x82,0x85,0x84,0x81,0x7C,0x79,0x79,0x7A, -0x7D,0x7F,0x82,0x85,0x83,0x80,0x7E,0x7E,0x7D,0x7B,0x79,0x77,0x77,0x7B,0x80,0x83, -0x81,0x7F,0x80,0x82,0x84,0x83,0x81,0x81,0x81,0x7F,0x7C,0x7A,0x7A,0x7C,0x7E,0x7F, -0x7F,0x7F,0x7D,0x7A,0x78,0x76,0x74,0x76,0x7A,0x7D,0x80,0x83,0x85,0x84,0x81,0x80, -0x7F,0x7F,0x7F,0x7F,0x81,0x83,0x83,0x82,0x81,0x82,0x82,0x81,0x7F,0x81,0x84,0x83, -0x80,0x7F,0x82,0x85,0x86,0x86,0x85,0x80,0x7B,0x79,0x79,0x7B,0x7D,0x7E,0x7F,0x7D, -0x7B,0x7A,0x7D,0x82,0x84,0x84,0x85,0x85,0x86,0x85,0x83,0x83,0x85,0x86,0x87,0x88, -0x88,0x86,0x84,0x84,0x84,0x84,0x83,0x84,0x85,0x83,0x81,0x83,0x85,0x86,0x85,0x84, -0x82,0x80,0x7F,0x7F,0x7F,0x7E,0x7F,0x81,0x83,0x84,0x84,0x81,0x7E,0x7C,0x7B,0x7A, -0x7B,0x7F,0x82,0x83,0x81,0x7F,0x7F,0x81,0x82,0x81,0x7F,0x7F,0x80,0x81,0x82,0x81, -0x81,0x83,0x82,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7E,0x7E,0x7D,0x7C,0x7B,0x79,0x79, -0x7B,0x7D,0x7D,0x7B,0x7A,0x7C,0x7E,0x7F,0x7F,0x7D,0x7A,0x78,0x76,0x75,0x76,0x79, -0x7D,0x80,0x82,0x83,0x83,0x83,0x82,0x80,0x80,0x7F,0x7F,0x80,0x81,0x81,0x80,0x80, -0x83,0x85,0x87,0x86,0x83,0x80,0x7C,0x79,0x75,0x75,0x78,0x7D,0x7F,0x7F,0x7F,0x82, -0x86,0x87,0x86,0x84,0x81,0x7E,0x7A,0x77,0x74,0x76,0x7C,0x80,0x83,0x86,0x89,0x8C, -0x8C,0x8A,0x87,0x86,0x85,0x82,0x80,0x7E,0x7C,0x7D,0x7F,0x81,0x83,0x84,0x83,0x82, -0x81,0x81,0x80,0x7E,0x7D,0x7D,0x7E,0x80,0x81,0x82,0x84,0x86,0x85,0x84,0x83,0x81, -0x7F,0x7D,0x7D,0x7E,0x80,0x82,0x83,0x84,0x85,0x85,0x85,0x85,0x82,0x7F,0x7D,0x7C, -0x7B,0x7A,0x79,0x79,0x7B,0x7F,0x82,0x86,0x88,0x88,0x85,0x81,0x81,0x81,0x82,0x82, -0x81,0x81,0x81,0x83,0x84,0x82,0x81,0x80,0x81,0x81,0x81,0x80,0x80,0x81,0x83,0x85, -0x85,0x82,0x80,0x80,0x80,0x7E,0x7B,0x7A,0x7D,0x7F,0x80,0x7D,0x7C,0x7B,0x7A,0x78, -0x78,0x7A,0x7E,0x81,0x83,0x85,0x87,0x88,0x86,0x84,0x83,0x80,0x7D,0x7B,0x7A,0x79, -0x78,0x79,0x7C,0x7E,0x81,0x81,0x81,0x80,0x80,0x81,0x82,0x83,0x82,0x81,0x80,0x7F, -0x7E,0x7C,0x7C,0x80,0x82,0x82,0x80,0x7E,0x7C,0x7B,0x7C,0x7D,0x7E,0x7D,0x7C,0x7C, -0x7B,0x7A,0x79,0x7A,0x7B,0x7B,0x7A,0x7C,0x7F,0x81,0x80,0x7F,0x81,0x83,0x82,0x80, -0x7F,0x80,0x80,0x7F,0x7F,0x83,0x87,0x8A,0x89,0x86,0x83,0x82,0x83,0x84,0x83,0x83, -0x84,0x85,0x83,0x80,0x7E,0x7E,0x7D,0x7C,0x7B,0x7A,0x7D,0x81,0x84,0x86,0x86,0x84, -0x83,0x82,0x81,0x80,0x80,0x81,0x83,0x85,0x85,0x87,0x88,0x88,0x86,0x84,0x84,0x83, -0x81,0x7F,0x7E,0x7E,0x7E,0x7F,0x82,0x85,0x86,0x85,0x82,0x80,0x81,0x82,0x81,0x7F, -0x7D,0x7C,0x7E,0x7F,0x7F,0x7F,0x80,0x81,0x83,0x83,0x82,0x82,0x82,0x7F,0x7D,0x7E, -0x7F,0x7F,0x7E,0x7F,0x82,0x83,0x82,0x82,0x83,0x83,0x82,0x81,0x80,0x7D,0x7A,0x7A, -0x7B,0x7C,0x7D,0x7B,0x7A,0x7C,0x7F,0x81,0x81,0x7F,0x7B,0x78,0x79,0x7B,0x7A,0x7A, -0x7C,0x7E,0x7F,0x7F,0x80,0x80,0x80,0x7F,0x7E,0x7E,0x80,0x83,0x85,0x85,0x82,0x80, -0x7F,0x80,0x81,0x81,0x81,0x83,0x85,0x84,0x81,0x7F,0x7D,0x7C,0x7A,0x78,0x7A,0x7C, -0x7E,0x7E,0x7D,0x7D,0x7E,0x81,0x82,0x81,0x7F,0x7E,0x7F,0x7E,0x7B,0x7A,0x7B,0x7C, -0x7D,0x7E,0x81,0x84,0x86,0x86,0x85,0x84,0x82,0x80,0x7F,0x80,0x81,0x81,0x83,0x86, -0x89,0x8B,0x8C,0x8C,0x8A,0x86,0x80,0x7B,0x78,0x79,0x7A,0x7C,0x7D,0x7D,0x7C,0x7E, -0x81,0x82,0x81,0x7F,0x7B,0x79,0x79,0x7C,0x7F,0x83,0x86,0x87,0x87,0x86,0x84,0x83, -0x81,0x81,0x81,0x81,0x81,0x80,0x7F,0x7E,0x80,0x80,0x80,0x7F,0x7F,0x80,0x83,0x87, -0x8A,0x8C,0x8C,0x8A,0x86,0x80,0x7C,0x7A,0x79,0x7B,0x7E,0x81,0x81,0x81,0x81,0x80, -0x7E,0x7E,0x7E,0x80,0x81,0x81,0x81,0x80,0x80,0x82,0x83,0x84,0x83,0x82,0x81,0x80, -0x7E,0x7E,0x7D,0x7C,0x7E,0x81,0x83,0x83,0x81,0x7F,0x7E,0x80,0x83,0x85,0x84,0x81, -0x7D,0x7B,0x7C,0x7D,0x7E,0x7E,0x7E,0x7E,0x7F,0x80,0x7E,0x7A,0x77,0x76,0x77,0x77, -0x77,0x78,0x7B,0x7D,0x7E,0x7E,0x7F,0x81,0x81,0x7F,0x7E,0x7E,0x7F,0x7F,0x7F,0x7E, -0x7F,0x81,0x81,0x82,0x82,0x83,0x84,0x85,0x85,0x83,0x81,0x81,0x82,0x80,0x7D,0x7B, -0x7C,0x7C,0x7C,0x79,0x78,0x79,0x7A,0x7A,0x7A,0x7A,0x7B,0x7C,0x7C,0x7B,0x7C,0x7E, -0x81,0x83,0x85,0x86,0x85,0x83,0x83,0x84,0x85,0x84,0x85,0x86,0x89,0x8B,0x8B,0x89, -0x86,0x85,0x85,0x85,0x84,0x84,0x84,0x85,0x86,0x85,0x83,0x7F,0x7A,0x77,0x78,0x7C, -0x80,0x82,0x82,0x81,0x80,0x7F,0x7F,0x7F,0x7F,0x7D,0x7C,0x7B,0x7D,0x7F,0x81,0x84, -0x85,0x84,0x84,0x84,0x86,0x85,0x84,0x83,0x83,0x84,0x86,0x8B,0x8D,0x8C,0x88,0x85, -0x82,0x7E,0x7B,0x7A,0x7C,0x7E,0x7F,0x7E,0x7C,0x79,0x78,0x78,0x79,0x79,0x79,0x78, -0x78,0x77,0x77,0x7A,0x7D,0x7F,0x80,0x81,0x83,0x84,0x85,0x85,0x85,0x83,0x83,0x85, -0x87,0x86,0x83,0x81,0x83,0x84,0x83,0x80,0x7F,0x80,0x82,0x81,0x7F,0x7D,0x7B,0x78, -0x76,0x76,0x77,0x77,0x78,0x79,0x79,0x79,0x7B,0x7E,0x81,0x81,0x80,0x7E,0x7C,0x7B, -0x7A,0x79,0x79,0x7B,0x80,0x85,0x89,0x8A,0x89,0x89,0x89,0x87,0x84,0x81,0x7F,0x80, -0x81,0x80,0x7F,0x7F,0x82,0x84,0x85,0x82,0x7D,0x7A,0x78,0x77,0x76,0x75,0x77,0x7B, -0x7E,0x7F,0x7E,0x7E,0x7E,0x7E,0x7D,0x7C,0x7D,0x80,0x82,0x82,0x83,0x85,0x85,0x84, -0x83,0x84,0x86,0x86,0x83,0x81,0x82,0x85,0x86,0x86,0x85,0x84,0x84,0x85,0x85,0x84, -0x82,0x81,0x81,0x82,0x83,0x81,0x7D,0x7B,0x7B,0x7C,0x7E,0x7F,0x7F,0x7F,0x7F,0x80, -0x81,0x84,0x85,0x84,0x83,0x83,0x86,0x88,0x88,0x86,0x85,0x86,0x85,0x85,0x86,0x85, -0x83,0x81,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x85,0x83,0x7E,0x7C,0x7C,0x7C,0x7D, -0x7F,0x80,0x81,0x81,0x81,0x7F,0x7E,0x7E,0x7E,0x7D,0x7A,0x77,0x76,0x78,0x7A,0x7D, -0x7F,0x80,0x82,0x85,0x89,0x8A,0x89,0x86,0x81,0x7E,0x7D,0x7D,0x7D,0x7B,0x79,0x76, -0x76,0x78,0x7B,0x7E,0x7F,0x80,0x80,0x7F,0x7B,0x79,0x7B,0x7E,0x7F,0x81,0x81,0x82, -0x81,0x7D,0x7B,0x79,0x79,0x78,0x77,0x78,0x79,0x7B,0x7C,0x7C,0x7E,0x80,0x82,0x83, -0x83,0x83,0x83,0x83,0x82,0x7F,0x7D,0x7C,0x7D,0x7E,0x80,0x84,0x86,0x86,0x85,0x85, -0x86,0x85,0x83,0x81,0x7E,0x7D,0x7D,0x7F,0x81,0x84,0x87,0x89,0x8A,0x8A,0x86,0x81, -0x7F,0x7F,0x7E,0x7D,0x7E,0x80,0x82,0x81,0x80,0x7D,0x7B,0x7A,0x7A,0x7B,0x7C,0x7E, -0x00 -}; diff --git a/boop/trunk/syscalls.c b/boop/trunk/syscalls.c deleted file mode 100644 index eea9557..0000000 --- a/boop/trunk/syscalls.c +++ /dev/null @@ -1,22 +0,0 @@ -/* based on a example-code from Keil for CS G++ */ - -/* for caddr_t (typedef char * caddr_t;) */ -#include - -extern int _bss_end; - -caddr_t _sbrk ( int incr ) -{ - static unsigned char *heap = NULL; - unsigned char *prev_heap; - - if (heap == NULL) { - heap = (unsigned char *)&_bss_end; - } - prev_heap = heap; - /* check removed to show basic approach */ - - heap += incr; - - return (caddr_t) prev_heap; -} diff --git a/boop/trunk/timer/Make.conf b/boop/trunk/timer/Make.conf deleted file mode 100644 index 6a23f8a..0000000 --- a/boop/trunk/timer/Make.conf +++ /dev/null @@ -1,2 +0,0 @@ -THUMBSRCS := timerfuncs.c -SRCS := timerirq.c diff --git a/boop/trunk/timer/timerfuncs.c b/boop/trunk/timer/timerfuncs.c deleted file mode 100644 index f7749c1..0000000 --- a/boop/trunk/timer/timerfuncs.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - timerfuncs.c - timer control functions - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "timerfuncs.h" -#include "irq.h" -#include "keyboard.h" - -extern struct CB callbacks[MAX_CB]; -extern unsigned long* timeouts[MAX_TO]; - -void startTimerIRQ(void) -{ - int i; - struct CB *cur_cb; - - for(i=0; istate = SLOT_FREE; - cur_cb->exec = 0; - } - - for(i=0; i PR = 15 - 1 = 0x0e - T0MR0 = 5000; // 1.000.000 Hz / 5000 = 200 Hz = 5 msec intervall time - T0MCR = 0x03; // reset and issue IRQ on TC == MR0 - T0TCR = 0x01; // enable timer - - T0overflow = 0; - - VICVectAddr15 = (unsigned long)&(timerIRQ); - VICVectCntl15 = VIC_SLOT_EN | INT_SRC_TIMER0; - VICIntEnable = INT_TIMER0; -} - -void wait5ms(void) { - - unsigned long x; - - x=T0TC; - while(x==T0TC); - while(x!=T0TC); -} - -void waitus(unsigned long d) { - - unsigned long x,y; - - x=(T0TC+d)%5000; - y= T0overflow; - - if(xT0TC); -} - -unsigned int addTimerCB(cb_fn cb, unsigned short intervall) -{ - int i; - struct CB *cur_cb; - - for(i=0; istate == SLOT_FREE) - { - cur_cb->exec = cb; - cur_cb->intervall = intervall; - cur_cb->cur_intervall = 0; - cur_cb->state = SLOT_HALT | SLOT_USED; - return i; - } - i++; - } - return 0xFF; -} - -unsigned int removeTimerCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state = SLOT_FREE; - return MAX_CB; - } - return 0xFF; -} - -void startCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state &= ~SLOT_HALT; - } -} - -void stopCB(unsigned int cb) -{ - if(cb < MAX_CB) - { - callbacks[cb].state |= SLOT_HALT; - } -} - -void setCBIntervall(unsigned int cb, unsigned short intervall) -{ - if(cb < MAX_CB) - { - callbacks[cb].intervall = intervall; - callbacks[cb].cur_intervall = 0; - } -} - -unsigned char addTimeout(volatile unsigned long* counter, unsigned long value) { - - int i; - - for(i=0; i - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef TIMERFUNCS_H -#define TIMERFUNCS_H - -//////////////////////////////////////////////// -///@Attention: Timer are using 5msec intervall! -//////////////////////////////////////////////// -#define TIME_MSEC2TICKS(t) (t/5) - -#include "timerirq.h" - -volatile unsigned long T0overflow; - -void startTimerIRQ(void); - -/** -@brief Alocate a timer, set the time but do *NOT* start. - - Use @see startCB to start the timer - -@Param Timer expiry callback, time intervall - -@return index of the allocated timer on success - 0xFF is no timer left -*/ -unsigned int addTimerCB(cb_fn cb, unsigned short intervall); -unsigned int removeTimerCB(unsigned int cb); -void startCB(unsigned int cb); -void stopCB(unsigned int cb); -void setCBIntervall(unsigned int cb, unsigned short intervall); -void wait5ms(void); -void waitus(unsigned long d); -unsigned char addTimeout(volatile unsigned long* counter, unsigned long value); -unsigned char removeTimeout(volatile unsigned long* counter); - -#endif diff --git a/boop/trunk/timer/timerirq.c b/boop/trunk/timer/timerirq.c deleted file mode 100644 index a19cfae..0000000 --- a/boop/trunk/timer/timerirq.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - timerirq.c - timekeeping and calllbacks - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "lpc2220.h" -#include "timerirq.h" -#include "timerfuncs.h" -#include "lcd.h" - -struct CB callbacks[MAX_CB]; -unsigned long* timeouts[MAX_TO]; - - -// wird alle 5 ms aufgerufen (s. startTimerIRQ() in timerfuncs) -// bearbeitet eingetragene "timer" -void __attribute__ ((section(".text.fastcode"))) timerIRQ(void) -{ - unsigned int cnt; - struct CB *cur_cb; - - for(cnt=0; cntstate & SLOT_USED) - { - if(!(cur_cb->state & SLOT_HALT)) - { - cur_cb->cur_intervall++; - if(cur_cb->cur_intervall >= cur_cb->intervall) - { - if(cur_cb->exec) - (cur_cb->exec)(cnt); // run callback function - cur_cb->cur_intervall = 0; - } - } - } - } - - for(cnt = 0; cnt < MAX_TO; cnt++) { - if(timeouts[cnt]) { - if(*timeouts[cnt]) - (*timeouts[cnt])--; - else - timeouts[cnt] = 0; - } - } - - if(oldsymbols != symbols) { - volatile cb_fn x; - x=refresh_symbols; - x(0xff); - } - - T0overflow++; - T0IR = 1; -} diff --git a/boop/trunk/timer/timerirq.h b/boop/trunk/timer/timerirq.h deleted file mode 100644 index c39a6ae..0000000 --- a/boop/trunk/timer/timerirq.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - timerirq.h - timekeeping and calllbacks - Copyright (C) 2007 Ch. Klippel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef TIMERIRQ_H -#define TIMERIRQ_H - -#define MAX_CB 32 -#define MAX_TO 10 - -#define SLOT_FREE 0x00 -#define SLOT_USED 0x01 -#define SLOT_HALT 0x02 - -typedef void(*cb_fn)(unsigned int cb); - -typedef struct CB -{ - unsigned int state; - unsigned short cur_intervall; - unsigned short intervall; - cb_fn exec; -} CB; - -void __attribute__ ((section(".text.fastcode"))) timerIRQ (void); - -#endif diff --git a/boop/trunk/tools/Make.conf b/boop/trunk/tools/Make.conf deleted file mode 100644 index 1ed1f58..0000000 --- a/boop/trunk/tools/Make.conf +++ /dev/null @@ -1 +0,0 @@ -THUMBSRCS := toolsmenu.c scart_icp.c diff --git a/boop/trunk/tools/scart_icp.c b/boop/trunk/tools/scart_icp.c deleted file mode 100644 index 3bc6cb2..0000000 --- a/boop/trunk/tools/scart_icp.c +++ /dev/null @@ -1,715 +0,0 @@ -/* - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -#ifndef DEBUGMODE - #define USE_SCART_ICP 1 -#endif - -#include "lpc2220.h" -#include "lcd.h" -#include "fonty.h" -#include "keyboard.h" - -#if USE_SCART_ICP - -#include "scart_icp.h" -#include "scart_image.h" - - - -/* The portpins (P0.x) to use to connect to scart */ -#define PIN_RST (1<<14) /* Portpin P0.14 to RST/P1.5 on Scart */ -#define PIN_PDA (1<<1) /* Portpin P0.1 to PDA/P0.4 on Scart */ -#define PIN_PCL (1<<0) /* Portpin P0.0 to PCL/P0.5 on Scart */ - -/* bit mask for port value and direction register */ -#define PORT_MASK (PIN_RST | PIN_PDA | PIN_PCL) -/* bit mask for pin function select register */ -#define PINSEL_MASK (((PIN_RST*PIN_RST) | (PIN_PDA*PIN_PDA) | (PIN_PCL*PIN_PCL)) * 3) - - -/* Definitions of the ICP commands/opcodes */ -/* see http://www.zlgmcu.com/philips/yingrong/lpc900/LPC900_ICP_Spec_en.pdf */ -#define OP_NOP 0x00 /* NOP */ -#define OP_WR_FMADRL 0x08 /* Write address low command */ -#define OP_RD_FMADRL 0x09 /* Read address low command */ -#define OP_WR_FMADRH 0x0A /* Write address high command */ -#define OP_RD_FMADRH 0x0B /* Read address high command */ -#define OP_WR_FMCON 0x0E /* Write a command to FMCON */ -#define OP_RD_FMCON 0x0F /* Read a command from FMCON */ -#define OP_WR_FMDATA_PG 0x14 /* Write a command to FMDATA and increment address */ -#define OP_RD_FMDATA_PG 0x15 /* Read a command from FMDATA and increment address */ -#define OP_WR_FMDATA 0x0C /* Write a command to FMDATA */ -#define OP_RD_FMDATA 0x0D /* Read a command from FMDATA */ -#define OP_WR_FMDATA_I 0x04 /* Write a command to FMDATA and increment address */ -#define OP_RD_FMDATA_I 0x05 /* Read a command from FMDATA and increment address */ - -#define CMD_LOAD 0x00 /* Clear and then load the page register */ -#define CMD_PROG 0x48 /* Program page with page register command */ -#define CMD_ERS_G 0x72 /* Erase global command */ -#define CMD_ERS_S 0x71 /* Erase sector command */ -#define CMD_ERS_P 0x70 /* Erase page command */ -#define CMD_CONF 0x6C /* Accesses user configuration information addressed by FMADRL */ -#define CMD_CRC_G 0x1A /* Calculate CRC on the entire user code command */ -#define CMD_CRC_S 0x19 /* Calculate CRC on a sector command */ -#define CMD_CCP 0x67 /* Clear configuration protection */ - -#define ADR_UCFG1 0x00 /* User Configuration Reg. #1 */ -#define ADR_UCFG2 0x01 /* User Configuration Reg. #2 */ -#define ADR_BootVector 0x02 /* Bootvector */ -#define ADR_StatusByte 0x03 /* Status Byte */ -#define ADR_SEC0 0x08 /* Security byte, sector 0 */ -#define ADR_SEC1 0x09 /* Security byte, sector 1 */ -#define ADR_SEC2 0x0A /* Security byte, sector 2 */ -#define ADR_SEC3 0x0B /* Security byte, sector 3 */ -#define ADR_SEC4 0x0C /* Security byte, sector 4 */ -#define ADR_SEC5 0x0D /* Security byte, sector 5 */ -#define ADR_SEC6 0x0E /* Security byte, sector 6 */ -#define ADR_SEC7 0x0F /* Security byte, sector 7 */ -#define ADR_MFGID 0x10 /* Manufacturer ID */ -#define ADR_ID1 0x11 /* Device ID 1 */ -#define ADR_ID2 0x12 /* Device ID 2 */ - - -/* Scart's flash memory attributes */ -#define PAGE_SIZE 64 /* flash page size of LPC931 */ -#define SECTOR_SIZE 1024 /* flash sector size of LPC931 */ - - -/* saved pin configuration for later restore */ -static unsigned int savedPinsel0, savedPindir0, savedPin0; - - -/**************************************************************************/ -/* icp_init() */ -/* Purpose: Initialize the portpins for use as ICP */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_init() -{ - /* save the current pin configuration */ - savedPinsel0 = PINSEL0; - savedPindir0 = FIODIR0; - savedPin0 = FIOPIN0; - - /* setup all used pins as GPIO, output, low */ - PINSEL0 &= ~PINSEL_MASK; - FIODIR0 |= (PIN_RST | PIN_PDA | PIN_PCL); - FIOCLR0 = (PIN_RST | PIN_PDA | PIN_PCL); -} - -/**************************************************************************/ -/* icp_close() */ -/* Purpose: Configure the portpins as they was before used for ICP */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_close() -{ - /* restore the saved pin configuration */ - PINSEL0 = (PINSEL0 & ~PINSEL_MASK) | (savedPinsel0 & PINSEL_MASK); - FIODIR0 = (FIODIR0 & ~PORT_MASK) | (savedPindir0 & PORT_MASK); - FIOPIN0 = (FIOPIN0 & ~PORT_MASK) | (savedPin0 & PORT_MASK); -} - -/**************************************************************************/ -/* icp_wait_us() */ -/* Purpose: Wait some us */ -/* Input: time: the time to wait in us */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_wait_us(int time) -{ - int start; - - /* use Timer0, which increments every 1us and rollover at T0MR0 */ - start = T0TC; - if ((start + time) < T0MR0) - { - while (T0TC < (start + time)); - } - else - { - while ((T0TC < (start + time - T0MR0)) || (T0TC >= start)); - } -} - -/**************************************************************************/ -/* icp_wait_ns() */ -/* Purpose: Wait some ns */ -/* Input: time: the time to wait in ns */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_wait_ns(int time) -{ - int i; - - /* inaccurate, but okay */ - for (i=0; i<(time>>4); i++); -} - -/**************************************************************************/ -/* icp_mode_entry() */ -/* Purpose: Bring the scart's CPU into ICP mode */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_mode_entry() -{ - int i; - - /* see ICP spec */ - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_RST; - icp_wait_us(10); - FIOSET0 = PIN_RST; - icp_wait_us(10); - } - icp_wait_us(50); -} - -/**************************************************************************/ -/* icp_mode_exit() */ -/* Purpose: Bring the scart's CPU out of ICP mode, reset CPU */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_mode_exit() -{ - FIOCLR0 = (PIN_RST | PIN_PDA | PIN_PCL); -} - -/**************************************************************************/ -/* icp_shift_out() */ -/* Purpose: Shift out one byte to scart */ -/* Input: val: byte to shift out */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_shift_out(unsigned char val) -{ - int i; - - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_PCL; - icp_wait_ns(50); - if (val & 1) - { - FIOSET0 = PIN_PDA; - } - else - { - FIOCLR0 = PIN_PDA; - } - val >>= 1; - icp_wait_ns(50); - FIOSET0 = PIN_PCL; - icp_wait_ns(100); - } - icp_wait_ns(100); -} - -/**************************************************************************/ -/* icp_shift_in() */ -/* Purpose: Shift in one byte from scart */ -/* Input: - */ -/* Output: - */ -/* Return: byte shifted in */ -/**************************************************************************/ -static unsigned char icp_shift_in() -{ - int i; - unsigned char val; - - /* configure pin as input */ - FIODIR0 &= ~PIN_PDA; - val = 0; - for (i=0; i<8; i++) - { - FIOCLR0 = PIN_PCL; - icp_wait_ns(100); - val >>= 1; - val |= ((FIOPIN0 & PIN_PDA) ? 0x80 : 0); - FIOSET0 = PIN_PCL; - icp_wait_ns(100); - } - /* configure pin as output */ - FIODIR0 |= PIN_PDA; - icp_wait_ns(100); - return val; -} - -/**************************************************************************/ -/* icp_read_config_byte() */ -/* Purpose: Read a configuration byte from scart */ -/* Input: adr: address of the config byte */ -/* Output: - */ -/* Return: value of the config byte */ -/**************************************************************************/ -static unsigned char icp_read_config_byte(unsigned char adr) -{ - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CONF); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr); - icp_shift_out(OP_RD_FMDATA); - return icp_shift_in(); -} - -/**************************************************************************/ -/* icp_write_config_byte() */ -/* Purpose: Write a configuration byte to scart */ -/* Input: adr: address of the config byte */ -/* val: value of the config byte */ -/* Output: - */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_write_config_byte(unsigned char adr, unsigned char val) -{ - unsigned char status; - - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CONF); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr); - icp_shift_out(OP_WR_FMDATA); - icp_shift_out(val); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -/**************************************************************************/ -/* icp_calc_sector_crc() */ -/* Purpose: Calculate the CRC of one sector */ -/* Input: adr: start address of the sector */ -/* Output: crc: value of the CRC */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_calc_sector_crc(unsigned short adr, unsigned int *pcrc) -{ - int i; - unsigned char status; - - icp_shift_out(OP_WR_FMADRH); - icp_shift_out(adr>>8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_CRC_S); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - if (status & 0x8F) return (status & 0x8F); - - *pcrc = 0; - for (i=0; i<4; i++) - { - icp_shift_out(OP_RD_FMDATA_I); - *pcrc >>= 8; - *pcrc |= (unsigned int)icp_shift_in() << 24; - } - return 0; -} - -/**************************************************************************/ -/* icp_load_page_register() */ -/* Purpose: Load the page registers with bytes */ -/* Input: adr: start address of the bytes in the flash */ -/* pval: pointer to the bytes to load */ -/* nbytes: number of bytes to load */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -static void icp_load_page_register(unsigned short adr, const unsigned char *pval, unsigned char nbytes) -{ - int i; - - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_LOAD); - icp_shift_out(OP_WR_FMADRL); - icp_shift_out(adr & 0xFF); - icp_shift_out(OP_WR_FMDATA_PG); - for (i=0; i> 8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_PROG); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -/**************************************************************************/ -/* icp_erase_sector() */ -/* Purpose: Erase one flash sector */ -/* Input: adr: start address of the sector in the flash */ -/* Output: - */ -/* Return: 0 on success, else error code */ -/**************************************************************************/ -static unsigned char icp_erase_sector(unsigned short adr) -{ - unsigned char status; - - icp_shift_out(OP_WR_FMADRH); - icp_shift_out(adr >> 8); - icp_shift_out(OP_WR_FMCON); - icp_shift_out(CMD_ERS_S); - - do - { - icp_shift_out(OP_RD_FMCON); - status = icp_shift_in(); - } while ((status & 0x8F) == 0x80); - - return (status & 0x8F); -} - -void scart_icp_header(void) { - set_font(BOLDFONT); - draw_string(0, 0, "Scart ICP", 3, DRAW_PUT); - draw_block(0,10,128,2,3,DRAW_PUT); - draw_block(0,149,128,2,3,DRAW_PUT); - set_font(SMALLFONT); -} - -/**************************************************************************/ -/* scart_icp() */ -/* Purpose: Use ICP to program an image into scart's flash */ -/* and read some infos from scart */ -/* Input: - */ -/* Output: - */ -/* Return: - */ -/**************************************************************************/ -void scart_icp(void) -{ - int i; - unsigned short offs, addr, blklen; - unsigned int err, crc_sc, crc_im, tap, poly, crcf; - unsigned char data; - - - set_font(SMALLFONT); - - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Um Schaeden an der Betty", 3, DRAW_PUT); - draw_string(0, 29, "und am Scart-Adapter zu", 3, DRAW_PUT); - draw_string(0, 38, "vermeiden, folgen Sie", 3, DRAW_PUT); - draw_string(0, 47, "bitte den Anweisungen!", 3, DRAW_PUT); - draw_string(0, 56, "Entfernen Sie alle", 3, DRAW_PUT); - draw_string(0, 65, "Kabel von der Betty!", 3, DRAW_PUT); - draw_string(0, 74, "Druecken Sie dann OK.", 3, DRAW_PUT); - draw_string(0, 83, "Oder druecken Sie EXIT", 3, DRAW_PUT); - draw_string(0, 92, "um jetzt abzubrechen.", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_OK && !KEY_Exit); - - if (KEY_Exit) return; - - /* init port pins */ - icp_init(); - - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Trennen Sie zuerst die", 3, DRAW_PUT); - draw_string(0, 29, "Stromversorgung des", 3, DRAW_PUT); - draw_string(0, 38, "SCART-Adapters.", 3, DRAW_PUT); - draw_string(0, 47, "Verbinden Sie danach die", 3, DRAW_PUT); - draw_string(0, 56, "Betty mit dem SCART-", 3, DRAW_PUT); - draw_string(0, 65, "Adapter. Schliessen Sie", 3, DRAW_PUT); - draw_string(0, 74, "dann die Stromversorgung", 3, DRAW_PUT); - draw_string(0, 83, "des SCART-Adapters", 3, DRAW_PUT); - draw_string(0, 92, "wieder an.", 3, DRAW_PUT); - draw_string(0, 101, "Druecken Sie dann OK.", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_OK); - - /* bring scart into ICP mode */ - icp_mode_entry(); - - while (1) - { - lcd_fill(0); - scart_icp_header(); - draw_string(0, 20, "Druecken Sie eine Taste", 3, DRAW_PUT); - draw_string(0, 40, "1 Lese Config-Bytes", 3, DRAW_PUT); - draw_string(0, 49, "2 Programmiere Image", 3, DRAW_PUT); - draw_string(0, 58, "3 Vergleiche CRCs", 3, DRAW_PUT); - draw_string(0, 67, "4 Schreibe Config-Bytes", 3, DRAW_PUT); - draw_string(0, 84, "Exit Beenden", 3, DRAW_PUT); - - do - { - waitKeyUpDown(); - } while(!KEY_Exit && !KEY_1 && !KEY_2 && !KEY_3 && !KEY_4); - - lcd_fill(0); - scart_icp_header(); - if (KEY_Exit) break; - - if (KEY_1) - { /* show all config bytes */ - draw_string(0, 14, "UCFG1 & 2", 3, DRAW_PUT); - draw_hexC (60, 14, icp_read_config_byte(ADR_UCFG1), 3, DRAW_PUT); - draw_hexC (80, 14, icp_read_config_byte(ADR_UCFG2), 3, DRAW_PUT); - draw_string(0, 23, "BootVector", 3, DRAW_PUT); - draw_hexC (60, 23, icp_read_config_byte(ADR_BootVector), 3, DRAW_PUT); - draw_string(0, 32, "StatusByte", 3, DRAW_PUT); - draw_hexC (60, 32, icp_read_config_byte(ADR_StatusByte), 3, DRAW_PUT); - draw_string(0, 41, "SEC0", 3, DRAW_PUT); - draw_hexC (60, 41, icp_read_config_byte(ADR_SEC0), 3, DRAW_PUT); - draw_string(0, 50, "SEC1", 3, DRAW_PUT); - draw_hexC (60, 50, icp_read_config_byte(ADR_SEC1), 3, DRAW_PUT); - draw_string(0, 59, "SEC2", 3, DRAW_PUT); - draw_hexC (60, 59, icp_read_config_byte(ADR_SEC2), 3, DRAW_PUT); - draw_string(0, 68, "SEC3", 3, DRAW_PUT); - draw_hexC (60, 68, icp_read_config_byte(ADR_SEC3), 3, DRAW_PUT); - draw_string(0, 77, "SEC4", 3, DRAW_PUT); - draw_hexC (60, 77, icp_read_config_byte(ADR_SEC4), 3, DRAW_PUT); - draw_string(0, 86, "SEC5", 3, DRAW_PUT); - draw_hexC (60, 86, icp_read_config_byte(ADR_SEC5), 3, DRAW_PUT); - draw_string(0, 95, "SEC6", 3, DRAW_PUT); - draw_hexC (60, 95, icp_read_config_byte(ADR_SEC6), 3, DRAW_PUT); - draw_string(0, 104, "SEC7", 3, DRAW_PUT); - draw_hexC (60, 104, icp_read_config_byte(ADR_SEC7), 3, DRAW_PUT); - draw_string(0, 113, "MFGID", 3, DRAW_PUT); - draw_hexC (60, 113, icp_read_config_byte(ADR_MFGID), 3, DRAW_PUT); - draw_string(0, 122, "ID1", 3, DRAW_PUT); - draw_hexC (60, 122, icp_read_config_byte(ADR_ID1), 3, DRAW_PUT); - draw_string(0, 131, "ID2", 3, DRAW_PUT); - draw_hexC (60, 131, icp_read_config_byte(ADR_ID2), 3, DRAW_PUT); - } - - if (KEY_2) - { /* erase sectors and program image */ - draw_string(0, 20, "Loesche", 3, DRAW_PUT); - - /* only erase first 7 sectors, not all! */ - for (i=0; i<7; i++) - { - draw_block (0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "Sektor", 3, DRAW_PUT); - draw_numU (40, 29, i, 0, 3, DRAW_PUT); - err = icp_erase_sector(i*SECTOR_SIZE); - if (err) break; - } - - if (!err) - { - lcd_fill(0); - draw_string(0, 20, "Programmiere", 3, DRAW_PUT); - } - - offs = 0; - addr = scart_image_startaddr; - while (!err && (offs < sizeof(scart_image))) - { - blklen = (addr | (PAGE_SIZE-1)) + 1 - addr; - if ((sizeof(scart_image) - offs) < blklen) - { - blklen = sizeof(scart_image) - offs; - } - - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_hexS (0, 29, addr, 3, DRAW_PUT); - - icp_load_page_register(addr, &scart_image[offs], blklen); - err = icp_prog_page_register(addr); - - addr += blklen; - offs += blklen; - } - - if (!err) - { - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "BootVector", 3, DRAW_PUT); - err = icp_write_config_byte(ADR_BootVector, scart_bootvec); - } - if (!err) - { - draw_block(0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "StatusByte", 3, DRAW_PUT); - err = icp_write_config_byte(ADR_StatusByte, scart_bootstat); - } - if (err) - { - draw_string(0, 40, "Fehler", 3, DRAW_PUT); - draw_hexC (40, 40, err, 3, DRAW_PUT); - } - else - { - draw_string(0, 40, "OK", 3, DRAW_PUT); - } - } - - if (KEY_3) - { /* compare CRC of all programmed sectors */ - draw_string(0, 20, "Vergleiche", 3, DRAW_PUT); - err = 0; - crc_sc = 0; - offs = 0; - addr = scart_image_startaddr; - while (!err && (offs < sizeof(scart_image))) - { - blklen = (addr | (SECTOR_SIZE-1)) + 1 - addr; - if ((sizeof(scart_image) - offs) < blklen) - { - blklen = sizeof(scart_image) - offs; - } - - draw_block (0, 29, 128, 9, 3, DRAW_ERASE); - draw_string(0, 29, "Sektor @", 3, DRAW_PUT); - draw_hexS (44, 29, addr, 3, DRAW_PUT); - - /* calculate CRC from scart */ - err = icp_calc_sector_crc(addr, &crc_sc); - - /* calculate CRC from image */ - poly = 0x00400007; - crc_im = tap = 0; - for (i=0; i. -*/ - - -#ifndef SCART_ICP -#define SCART_ICP - -extern void scart_icp(void); - -#endif diff --git a/boop/trunk/tools/scart_image.h b/boop/trunk/tools/scart_image.h deleted file mode 100644 index 52887f1..0000000 --- a/boop/trunk/tools/scart_image.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/* bootstat register */ -const unsigned char scart_bootstat = 0x01; - -/* bootvec register, high byte of the reset vector */ -const unsigned char scart_bootvec = 0x00; - -/* address of the first byte of scart_image to program to */ -const unsigned short scart_image_startaddr = 0x0000; - -/* from betty_scart.bin SVN #14 */ -/* truncated to a size of 0x1C00 = 7168 to preserve the content of the last flash sector */ -#include "scart_image_data.h" diff --git a/boop/trunk/tools/scart_image_data.h b/boop/trunk/tools/scart_image_data.h deleted file mode 100644 index 514f01c..0000000 --- a/boop/trunk/tools/scart_image_data.h +++ /dev/null @@ -1,484 +0,0 @@ -// Array representation of binary file betty_scart.bin - - -const unsigned char scart_image[] = -{ - 0x02,0x00,0x73,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0x02,0x03,0xf7,0xff,0xff,0xff,0xff,0xff,0x32,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x02, - 0x09,0x90,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0x32,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x32,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0x02,0x04,0x46,0x12,0x00,0xdb,0x80,0xfe,0x75,0x81,0xac,0x12,0x0d, - 0x0e,0xe5,0x82,0x60,0x03,0x02,0x00,0x6e,0x79,0x00,0xe9,0x44,0x00,0x60,0x1b, - 0x7a,0x00,0x90,0x0d,0xd3,0x78,0x00,0x75,0xa0,0x00,0xe4,0x93,0xf2,0xa3,0x08, - 0xb8,0x00,0x02,0x05,0xa0,0xd9,0xf4,0xda,0xf2,0x75,0xa0,0xff,0xe4,0x78,0xff, - 0xf6,0xd8,0xfd,0x78,0x00,0xe8,0x44,0x00,0x60,0x0a,0x79,0x00,0x75,0xa0,0x00, - 0xe4,0xf3,0x09,0xd8,0xfc,0x78,0x00,0xe8,0x44,0x00,0x60,0x0c,0x79,0x00,0x90, - 0x00,0x00,0xe4,0xf0,0xa3,0xd8,0xfc,0xd9,0xfa,0x75,0x08,0x00,0x75,0x09,0x00, - 0x75,0x22,0x00,0x75,0x23,0x05,0x02,0x00,0x6e,0x53,0x84,0x6c,0x43,0x85,0x92, - 0x75,0x80,0x83,0x53,0x91,0x3e,0x43,0x92,0xcd,0x75,0x90,0xcd,0x53,0xb1,0xfe, - 0x43,0xb2,0x01,0x75,0xb0,0x00,0x12,0x0c,0xd3,0x12,0x03,0x12,0x12,0x09,0x77, - 0x12,0x09,0x84,0xd2,0xaf,0x90,0x0d,0x12,0x75,0xf0,0x80,0x12,0x03,0x2c,0x90, - 0x0d,0x15,0x75,0xf0,0x80,0x12,0x03,0x2c,0x90,0x0d,0x12,0x75,0xf0,0x80,0x12, - 0x03,0x2c,0xd2,0x00,0x7a,0x00,0x30,0x01,0x2b,0x74,0xc6,0x25,0x09,0x50,0x0f, - 0x85,0x22,0x28,0x75,0x82,0x3a,0xc0,0x02,0x12,0x07,0x2e,0xd0,0x02,0x80,0xe8, - 0xe5,0x09,0x60,0xe4,0x30,0x8d,0xe1,0x85,0x22,0x28,0x85,0x09,0x82,0xc0,0x02, - 0x12,0x07,0x2e,0xd0,0x02,0x80,0xd2,0x20,0x00,0x03,0x02,0x02,0x63,0xc3,0xea, - 0x95,0x09,0x50,0xc6,0x8a,0x82,0x0a,0xc0,0x02,0x12,0x04,0xe1,0xab,0x82,0xd0, - 0x02,0xbb,0x0d,0x02,0x80,0x03,0x02,0x02,0x57,0x90,0x0d,0x12,0x75,0xf0,0x80, - 0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0xea,0x25,0x08,0x14,0x54,0x3f,0x24,0x2d, - 0xf8,0x76,0x00,0xc0,0x02,0x12,0x04,0x92,0xab,0x82,0xd0,0x02,0xda,0x03,0x02, - 0x02,0x36,0xbb,0x62,0x02,0x80,0x62,0xbb,0x63,0x02,0x80,0x54,0xbb,0x72,0x02, - 0x80,0x29,0xbb,0x73,0x02,0x80,0x41,0xbb,0x74,0x02,0x80,0x05,0xbb,0x77,0x65, - 0x80,0x57,0xe5,0x09,0x60,0x6c,0x8a,0x82,0x12,0x06,0xb8,0x7a,0x00,0x90,0x0d, - 0x12,0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x56,0xe5,0x09, - 0x60,0x52,0x75,0x28,0x00,0x8a,0x82,0x12,0x07,0x2e,0x7a,0x00,0x90,0x0d,0x1b, - 0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x39,0xc0,0x02,0x12, - 0x08,0x9d,0xd0,0x02,0x80,0x30,0xc0,0x02,0x12,0x07,0xd1,0xd0,0x02,0x80,0x27, - 0xc2,0x00,0x75,0x82,0x01,0xc0,0x02,0x12,0x03,0xad,0xd0,0x02,0x80,0x19,0x75, - 0x82,0x00,0xc0,0x02,0x12,0x0c,0x55,0xd0,0x02,0x80,0x0d,0x90,0x0d,0x23,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x8a,0x04,0xec,0x60,0x1b,0xc0, - 0x04,0x12,0x04,0x92,0xd0,0x04,0x1c,0x8c,0x02,0x80,0xf1,0x90,0x0d,0x15,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x02,0x8c,0x02,0x90,0x0d, - 0x12,0x75,0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x02,0x01,0x23,0x8b, - 0x82,0xc0,0x02,0x12,0x03,0xad,0xd0,0x02,0x02,0x01,0x23,0xe5,0x09,0x70,0x03, - 0x02,0x01,0x23,0xc0,0x02,0x12,0x04,0x92,0xab,0x82,0xd0,0x02,0xeb,0x24,0xf8, - 0x40,0x60,0xeb,0x2b,0x2b,0x90,0x02,0x7f,0x73,0x02,0x02,0x97,0x02,0x02,0x99, - 0x02,0x02,0xa2,0x02,0x02,0xab,0x02,0x02,0xb4,0x02,0x02,0xbd,0x02,0x02,0xc6, - 0x02,0x02,0xcf,0x80,0x49,0xc0,0x02,0x12,0x07,0x7d,0xd0,0x02,0x80,0x40,0xc0, - 0x02,0x12,0x09,0x68,0xd0,0x02,0x80,0x37,0xc0,0x02,0x12,0x08,0xc1,0xd0,0x02, - 0x80,0x2e,0xc0,0x02,0x12,0x08,0xdb,0xd0,0x02,0x80,0x25,0xc0,0x02,0x12,0x08, - 0xf5,0xd0,0x02,0x80,0x1c,0xc0,0x02,0x12,0x09,0x2d,0xd0,0x02,0x80,0x13,0xc0, - 0x02,0x12,0x09,0x71,0xd0,0x02,0x80,0x0a,0x75,0x82,0x00,0xc0,0x02,0x12,0x03, - 0xad,0xd0,0x02,0x30,0x00,0x03,0x02,0x01,0x23,0x75,0x82,0x01,0xc0,0x02,0x12, - 0x03,0xad,0xd0,0x02,0x02,0x01,0x23,0xe5,0x82,0x25,0x82,0x24,0x33,0xfa,0xe4, - 0x34,0x0d,0xfb,0x8a,0x82,0x8b,0x83,0xa3,0xe4,0x93,0xf5,0xbe,0x8a,0x82,0x8b, - 0x83,0xe4,0x93,0xf5,0xbf,0x22,0x75,0x98,0x52,0x43,0xba,0xa0,0x75,0x82,0x07, - 0x12,0x02,0xf5,0x75,0xbd,0x03,0xc2,0x98,0xd2,0xac,0xd2,0x99,0xd2,0xbc,0xd2, - 0xfe,0x22,0xaa,0x82,0xab,0x83,0xac,0xf0,0x7d,0x00,0xed,0x2a,0xfe,0xe4,0x3b, - 0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88,0xf0,0x12,0x0c,0xf2,0x60,0x2b,0x8d, - 0x06,0x0d,0xee,0x2a,0xfe,0xe4,0x3b,0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88, - 0xf0,0x12,0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0x12, - 0x03,0xad,0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0x80,0xc2,0x22,0xaa,0x82, - 0xab,0x83,0xac,0xf0,0x7d,0x00,0xc3,0xed,0x95,0x0c,0x50,0x2b,0x8d,0x06,0x0d, - 0xee,0x2a,0xfe,0xe4,0x3b,0xff,0x8c,0x00,0x8e,0x82,0x8f,0x83,0x88,0xf0,0x12, - 0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0x12,0x03,0xad, - 0xd0,0x05,0xd0,0x04,0xd0,0x03,0xd0,0x02,0x80,0xcf,0x22,0xaa,0x82,0x8a,0x82, - 0xc0,0x02,0x12,0x05,0x06,0xe5,0x82,0xd0,0x02,0x70,0x04,0xd2,0xee,0x80,0xef, - 0xd2,0xee,0x22,0xe5,0x82,0xfa,0xc4,0x54,0x0f,0xfb,0x53,0x03,0x0f,0x74,0x30, - 0x2b,0xfb,0x24,0xc6,0x50,0x04,0x74,0x07,0x2b,0xfb,0x8b,0x82,0xc0,0x02,0x12, - 0x03,0xad,0xd0,0x02,0x74,0x0f,0x5a,0xfb,0x74,0x30,0x2b,0xfb,0x24,0xc6,0x50, - 0x04,0x74,0x07,0x2b,0xfb,0x8b,0x82,0x02,0x03,0xad,0xc0,0x21,0xc0,0xe0,0xc0, - 0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06, - 0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0,0xd0,0x75,0xd0,0x00,0x74,0xc0,0x25,0x09, - 0x40,0x06,0x85,0x99,0x82,0x12,0x04,0xef,0xc2,0x98,0xc2,0x8d,0x75,0x8c,0x00, - 0xd0,0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0, - 0x03,0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32,0xc0, - 0x21,0xc0,0xe0,0xc0,0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02,0xc0,0x03,0xc0,0x04, - 0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0,0xd0,0x75,0xd0,0x00, - 0xe5,0x0b,0x60,0x0a,0x12,0x04,0xad,0x85,0x82,0x99,0xc2,0x99,0x80,0x02,0xc2, - 0xee,0xd0,0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04, - 0xd0,0x03,0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32, - 0x7a,0x00,0xc2,0xaf,0xe5,0x09,0x60,0x0e,0x15,0x09,0xab,0x08,0x05,0x08,0x74, - 0x3f,0x5b,0x24,0x2d,0xf8,0x86,0x02,0xd2,0xaf,0x8a,0x82,0x22,0x7a,0x00,0xc2, - 0xaf,0xe5,0x0b,0x60,0x0e,0x15,0x0b,0xab,0x0a,0x05,0x0a,0x74,0x3f,0x5b,0x24, - 0x6d,0xf8,0x86,0x02,0xd2,0xaf,0x8a,0x82,0x22,0xe5,0x09,0x60,0xfc,0xc2,0xaf, - 0x15,0x09,0xaa,0x08,0x05,0x08,0x74,0x3f,0x5a,0x24,0x2d,0xf8,0x86,0x02,0xd2, - 0xaf,0x8a,0x82,0x22,0xe5,0x82,0x25,0x08,0x54,0x3f,0x24,0x2d,0xf8,0x86,0x02, - 0x8a,0x82,0x22,0xaa,0x82,0x74,0xc0,0x25,0x09,0x40,0x0e,0xab,0x09,0x05,0x09, - 0xeb,0x25,0x08,0x54,0x3f,0x24,0x2d,0xf8,0xa6,0x02,0x22,0xaa,0x82,0xc2,0xaf, - 0x74,0xc0,0x25,0x0b,0x40,0x14,0xab,0x0b,0x05,0x0b,0xeb,0x25,0x0a,0x54,0x3f, - 0x24,0x6d,0xf8,0xa6,0x02,0xd2,0xaf,0x75,0x82,0x01,0x22,0xd2,0xaf,0x75,0x82, - 0x00,0x22,0xaa,0x82,0x7b,0x08,0xeb,0x60,0x10,0xc2,0x97,0xea,0x33,0x92,0x96, - 0xd2,0x97,0xea,0xa2,0x95,0x3a,0xfa,0x1b,0x80,0xed,0xc2,0x97,0x8a,0x82,0x22, - 0x7a,0x00,0xc2,0x96,0xc2,0x97,0x7b,0x08,0xeb,0x60,0x0c,0xd2,0x97,0xea,0xa2, - 0x95,0x3a,0xfa,0xc2,0x97,0x1b,0x80,0xf1,0x8a,0x82,0x22,0xd2,0x97,0xc2,0x96, - 0xc2,0x81,0x7a,0xff,0xea,0x60,0x03,0x1a,0x80,0xfa,0xd2,0x81,0x7a,0xff,0xea, - 0x60,0x03,0x1a,0x80,0xfa,0xc2,0x81,0xc2,0x97,0x20,0x95,0xfd,0x75,0x82,0x30, - 0x12,0x05,0x2a,0x20,0x95,0xfd,0x75,0x82,0x40,0x12,0x05,0x2a,0x7a,0x00,0xba, - 0x2f,0x00,0x50,0x11,0xea,0x90,0x0d,0x47,0x93,0xf5,0x82,0xc0,0x02,0x12,0x05, - 0x2a,0xd0,0x02,0x0a,0x80,0xea,0xd2,0x81,0x75,0x11,0xc0,0x75,0x82,0x3e,0x12, - 0x06,0x07,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0x33,0x12,0x06,0x90,0x75, - 0x82,0x3a,0x12,0x06,0x90,0x75,0x82,0x34,0x02,0x06,0x90,0xaa,0x82,0xc2,0x81, - 0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xaa,0x82,0x7b,0x00,0xc3,0xeb,0x95, - 0x10,0x50,0x23,0xeb,0x25,0x0d,0xfc,0xe4,0x35,0x0e,0xfd,0xae,0x0f,0x8c,0x82, - 0x8d,0x83,0x8e,0xf0,0x12,0x0c,0xf2,0xf5,0x82,0xc0,0x02,0xc0,0x03,0x12,0x05, - 0x2a,0xd0,0x03,0xd0,0x02,0x0b,0x80,0xd7,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82, - 0xc2,0x81,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xaa,0x82,0x85,0x11,0x82, - 0xc0,0x02,0x12,0x05,0x2a,0xd0,0x02,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0xc2, - 0x81,0x20,0x95,0xfd,0x74,0x80,0x4a,0xf5,0x82,0x12,0x05,0x2a,0xaa,0x82,0x7b, - 0x00,0xac,0x15,0xec,0x60,0x37,0x8b,0x05,0x0b,0xed,0x25,0x12,0xfd,0xe4,0x35, - 0x13,0xfe,0xaf,0x14,0xc0,0x02,0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0, - 0x07,0x12,0x05,0x46,0xa8,0x82,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0, - 0x03,0xd0,0x02,0x8d,0x82,0x8e,0x83,0x8f,0xf0,0xe8,0x12,0x0c,0xd9,0x1c,0x80, - 0xc6,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0xc2,0x81,0x20,0x95,0xfd,0x74,0x80, - 0x4a,0xf5,0x82,0x12,0x05,0x2a,0x75,0x82,0x00,0x12,0x05,0x2a,0xd2,0x81,0x22, - 0xaa,0x82,0xc2,0x81,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a,0xd2,0x81,0x22, - 0xaa,0x82,0x10,0x81,0x02,0x80,0x03,0x20,0x95,0xfd,0x8a,0x82,0x12,0x05,0x2a, - 0xaa,0x82,0x30,0x02,0x02,0xd2,0x81,0x8a,0x82,0x22,0xaa,0x82,0x75,0x82,0x00, - 0xc0,0x02,0x12,0x0c,0x55,0xc2,0xe9,0x75,0x82,0x36,0x12,0x06,0x90,0xd0,0x02, - 0x75,0x82,0xf5,0xc0,0x02,0x12,0x06,0x78,0xab,0x82,0xd0,0x02,0xbb,0x01,0xf1, - 0x74,0x03,0x2a,0xf5,0x24,0x75,0x25,0x00,0x85,0x16,0x26,0x75,0x27,0x01,0x75, - 0x0d,0x24,0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0xc0, - 0x02,0x12,0x05,0xc9,0xc2,0x02,0x75,0x82,0x7f,0x12,0x06,0x9f,0xd0,0x02,0x8a, - 0x03,0x1a,0xeb,0x60,0x0e,0xc0,0x02,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f, - 0xd0,0x02,0x80,0xec,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0xd2,0xe9,0x90, - 0x0d,0x79,0x75,0xf0,0x80,0x02,0x03,0x2c,0xaa,0x82,0x74,0x03,0x2a,0xf5,0x29, - 0x85,0x28,0x2a,0x85,0x16,0x2b,0x75,0x2c,0x05,0xc2,0xe9,0x75,0x0d,0x29,0x75, - 0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0xc0,0x02,0x12,0x05, - 0xc9,0xc2,0x02,0x75,0x82,0x7f,0x12,0x06,0x9f,0xd0,0x02,0x8a,0x03,0x1a,0xeb, - 0x60,0x0e,0xc0,0x02,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f,0xd0,0x02,0x80, - 0xec,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0xd2,0xe9,0x22,0xe5,0x09,0x60, - 0xfc,0x12,0x04,0x92,0xaa,0x82,0xba,0x3e,0x00,0x50,0x40,0xc2,0x02,0x75,0x82, - 0x7f,0xc0,0x02,0x12,0x06,0x9f,0xd0,0x02,0xc2,0x02,0x8a,0x82,0xc0,0x02,0x12, - 0x06,0x9f,0xd0,0x02,0x7b,0x00,0xc3,0xeb,0x9a,0x50,0x17,0xe5,0x09,0x60,0xfc, - 0xc0,0x02,0xc0,0x03,0x12,0x04,0x92,0xc2,0x02,0x12,0x06,0x9f,0xd0,0x03,0xd0, - 0x02,0x0b,0x80,0xe4,0xd2,0x81,0x75,0x82,0x35,0x12,0x06,0x90,0x02,0x0c,0x10, - 0x75,0x82,0x00,0x02,0x03,0xad,0xc2,0x02,0x75,0x82,0xc0,0x12,0x06,0x9f,0x7a, - 0x00,0xba,0x2f,0x00,0x50,0x50,0x90,0x0d,0x81,0x75,0xf0,0x80,0xc0,0x02,0x12, - 0x03,0x2c,0xd0,0x02,0x8a,0x82,0xc0,0x02,0x12,0x03,0xc3,0x90,0x0d,0x88,0x75, - 0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x12,0x03, - 0xc3,0xd0,0x02,0x74,0x03,0x5a,0xfb,0xbb,0x03,0x0f,0x90,0x0d,0x76,0x75,0xf0, - 0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x0d,0x90,0x0d,0x8e,0x75,0xf0, - 0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x0a,0x80,0xab,0xd2,0x81,0x90,0x0d, - 0x76,0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0xfe,0x12,0x06,0x9f, - 0x7a,0x00,0xba,0x08,0x00,0x50,0x50,0x90,0x0d,0x92,0x75,0xf0,0x80,0xc0,0x02, - 0x12,0x03,0x2c,0xd0,0x02,0x8a,0x82,0xc0,0x02,0x12,0x03,0xc3,0x90,0x0d,0x9b, - 0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x12, - 0x03,0xc3,0xd0,0x02,0x74,0x03,0x5a,0xfb,0xbb,0x03,0x0f,0x90,0x0d,0x76,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x80,0x0d,0x90,0x0d,0xa2,0x75, - 0xf0,0x80,0xc0,0x02,0x12,0x03,0x2c,0xd0,0x02,0x0a,0x80,0xab,0xd2,0x81,0x22, - 0x90,0x0d,0xa5,0x75,0xf0,0x80,0x12,0x03,0x2c,0x75,0x82,0xbd,0x12,0x06,0x90, - 0x12,0x03,0xc3,0x90,0x0d,0xba,0x75,0xf0,0x80,0x12,0x03,0x2c,0x75,0x82,0x3d, - 0x12,0x06,0x90,0x02,0x03,0xc3,0x12,0x04,0xc8,0xaa,0x82,0x74,0x80,0x4a,0xf5, - 0x82,0xc2,0x02,0x12,0x06,0x9f,0xd2,0x02,0x75,0x82,0x00,0x12,0x06,0x9f,0x02, - 0x03,0xad,0x12,0x04,0xc8,0xaa,0x82,0xc2,0x02,0x8a,0x82,0x12,0x06,0x9f,0x30, - 0x98,0xfd,0xaa,0x99,0xc2,0x98,0xd2,0x02,0x8a,0x82,0x02,0x06,0x9f,0x12,0x04, - 0xc8,0xaa,0x82,0xc0,0x02,0x12,0x04,0xc8,0xab,0x82,0x74,0xc0,0x4b,0xf5,0x82, - 0xc2,0x02,0x12,0x06,0x9f,0xd0,0x02,0x7c,0x00,0xc3,0xec,0x9a,0x50,0x16,0xc2, - 0x02,0x75,0x82,0x00,0xc0,0x02,0xc0,0x04,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0, - 0x04,0xd0,0x02,0x0c,0x80,0xe5,0xd2,0x81,0x22,0x12,0x04,0xc8,0xaa,0x82,0xc0, - 0x02,0x12,0x04,0xc8,0xab,0x82,0x74,0x40,0x4b,0xf5,0x82,0xc2,0x02,0x12,0x06, - 0x9f,0xd0,0x02,0x7c,0x00,0xc3,0xec,0x9a,0x50,0x19,0x30,0x98,0xfd,0xab,0x99, - 0xc2,0x98,0xc2,0x02,0x8b,0x82,0xc0,0x02,0xc0,0x04,0x12,0x06,0x9f,0xd0,0x04, - 0xd0,0x02,0x0c,0x80,0xe2,0xd2,0x81,0x22,0x12,0x04,0xc8,0x12,0x06,0x90,0x02, - 0x03,0xad,0x12,0x04,0xc8,0x02,0x0c,0x55,0x12,0x05,0x60,0xc2,0x03,0x90,0x0d, - 0x50,0xe4,0x93,0xf5,0x16,0x22,0x75,0x93,0x40,0x75,0x86,0x40,0x75,0x94,0x02, - 0xd2,0xe9,0x22,0xc0,0x21,0xc0,0xe0,0xc0,0xf0,0xc0,0x82,0xc0,0x83,0xc0,0x02, - 0xc0,0x03,0xc0,0x04,0xc0,0x05,0xc0,0x06,0xc0,0x07,0xc0,0x00,0xc0,0x01,0xc0, - 0xd0,0x75,0xd0,0x00,0xe5,0x93,0x30,0xe6,0x09,0x75,0x93,0x00,0x75,0x94,0x02, - 0x02,0x0b,0xf3,0x75,0x82,0xfb,0x12,0x06,0x78,0xe5,0x82,0xf5,0x17,0xfa,0x70, - 0x03,0x02,0x0b,0xbd,0xc2,0x04,0xea,0x24,0xfc,0x50,0x14,0x75,0x12,0x17,0x75, - 0x13,0x00,0x75,0x14,0x40,0x75,0x15,0x04,0x75,0x82,0xff,0x12,0x06,0x24,0x80, - 0x11,0x75,0x12,0x17,0x75,0x13,0x00,0x75,0x14,0x40,0x8a,0x15,0x75,0x82,0xff, - 0x12,0x06,0x24,0xe5,0x17,0x24,0xfc,0x40,0x03,0x02,0x0b,0x93,0x20,0x00,0x06, - 0x20,0x01,0x03,0x02,0x0b,0x5d,0xc2,0x05,0xaa,0x1a,0xba,0x02,0x02,0x80,0x0d, - 0xba,0x05,0x02,0x80,0x45,0xba,0x06,0x02,0x80,0x67,0x02,0x0b,0x13,0x75,0x82, - 0xff,0x12,0x06,0x78,0xaa,0x82,0xba,0x01,0x02,0x80,0x03,0x02,0x0b,0x93,0x75, - 0x17,0x04,0xaa,0x19,0x8a,0x18,0x85,0x16,0x19,0x75,0x1a,0x02,0x75,0x0d,0x17, - 0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0x12,0x05,0xc9, - 0x75,0x11,0x02,0x75,0x82,0x7f,0x12,0x06,0x07,0xd2,0x04,0x02,0x0b,0x93,0xc2, - 0x02,0x75,0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95,0x17,0x50,0x12, - 0xc2,0x02,0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0,0x02, - 0x0a,0x80,0xe8,0xd2,0x81,0x02,0x0b,0x93,0x75,0x82,0xff,0x12,0x06,0x78,0xe5, - 0x82,0xfa,0x24,0xfb,0x40,0x4e,0xea,0x2a,0x2a,0x90,0x0a,0x99,0x73,0x02,0x0a, - 0xa8,0x02,0x0a,0xaa,0x02,0x0a,0xc3,0x02,0x0a,0xd2,0x02,0x0a,0xde,0x80,0x36, - 0xe5,0x17,0x24,0xfb,0x50,0x30,0x75,0x82,0xff,0x12,0x06,0x78,0xe5,0x82,0xfa, - 0x24,0xf6,0x40,0x02,0x8a,0x23,0xd2,0x05,0x80,0x1d,0x85,0x19,0x22,0x85,0x23, - 0x82,0x12,0x02,0xf5,0xd2,0x01,0xd2,0x05,0x80,0x0e,0xc2,0x01,0x75,0x82,0x07, - 0x12,0x02,0xf5,0xd2,0x05,0x80,0x02,0xd2,0x05,0x20,0x05,0x03,0x02,0x0b,0x93, - 0x75,0x17,0x04,0xaa,0x19,0x8a,0x18,0x85,0x16,0x19,0x75,0x1a,0x06,0x75,0x0d, - 0x17,0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x04,0x75,0x82,0x7f,0x12,0x05, - 0xc9,0x75,0x11,0x00,0x75,0x82,0x7f,0x12,0x06,0x07,0xd2,0x04,0x02,0x0b,0x93, - 0xe5,0x17,0x24,0xfc,0x50,0x7a,0x30,0x00,0x77,0x90,0x0d,0xcb,0x75,0xf0,0x80, - 0x12,0x03,0x2c,0x90,0x0d,0xce,0x75,0xf0,0x80,0x12,0x03,0x2c,0xc2,0x02,0x75, - 0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95,0x17,0x50,0x12,0xc2,0x02, - 0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03,0xad,0xd0,0x02,0x0a,0x80, - 0xe8,0xd2,0x81,0x90,0x0d,0xcb,0x75,0xf0,0x80,0x12,0x03,0x2c,0x80,0x36,0x75, - 0x82,0x02,0x12,0x03,0xad,0x75,0x0c,0x04,0x90,0x00,0x17,0x75,0xf0,0x40,0x12, - 0x03,0x73,0xc2,0x02,0x75,0x82,0xff,0x12,0x06,0x9f,0x7a,0x03,0xc3,0xea,0x95, - 0x17,0x50,0x12,0xc2,0x02,0x75,0x82,0x00,0xc0,0x02,0x12,0x06,0x9f,0x12,0x03, - 0xad,0xd0,0x02,0x0a,0x80,0xe8,0xd2,0x81,0x75,0x82,0x36,0x12,0x06,0x90,0x75, - 0x82,0xf5,0x12,0x06,0x78,0xaa,0x82,0xba,0x01,0xf5,0x75,0x82,0x3a,0x12,0x06, - 0x90,0x30,0x04,0x08,0x75,0x82,0x35,0x12,0x06,0x90,0x80,0x38,0x75,0x82,0x34, - 0x12,0x06,0x90,0x80,0x30,0x75,0x82,0xf5,0x12,0x06,0x78,0xaa,0x82,0xba,0x0d, - 0x02,0x80,0x23,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0xf5,0x12,0x06,0x78, - 0xaa,0x82,0xba,0x01,0xf5,0x75,0x82,0x3a,0x12,0x06,0x90,0x75,0x82,0x3b,0x12, - 0x06,0x90,0x75,0x82,0x34,0x12,0x06,0x90,0x75,0x93,0x40,0x75,0x94,0x02,0xd0, - 0xd0,0xd0,0x01,0xd0,0x00,0xd0,0x07,0xd0,0x06,0xd0,0x05,0xd0,0x04,0xd0,0x03, - 0xd0,0x02,0xd0,0x83,0xd0,0x82,0xd0,0xf0,0xd0,0xe0,0xd0,0x21,0x32,0x7a,0x01, - 0xea,0x60,0x3f,0x75,0x82,0x3d,0xc0,0x02,0x12,0x06,0x90,0xe5,0x82,0xd0,0x02, - 0x54,0xf0,0xfb,0x60,0x21,0xbb,0x10,0x02,0x80,0x0f,0xbb,0x70,0xe4,0x75,0x82, - 0x3b,0xc0,0x02,0x12,0x06,0x90,0xd0,0x02,0x80,0xd8,0x30,0x03,0x06,0x75,0x82, - 0x36,0x12,0x06,0x90,0x7a,0x00,0x80,0xcb,0x20,0x03,0x06,0x75,0x82,0x34,0x12, - 0x06,0x90,0x7a,0x00,0x80,0xbe,0x22,0xaa,0x82,0x75,0x1b,0x01,0x8a,0x1c,0xc2, - 0xe9,0xd2,0x03,0x90,0x0d,0x5f,0xe4,0x93,0xfa,0x74,0xcf,0x5a,0xf5,0x11,0x75, - 0x82,0x18,0x12,0x06,0x07,0x75,0x82,0x36,0x12,0x06,0x90,0x75,0x82,0x33,0x12, - 0x06,0x90,0x12,0x0c,0x10,0x7a,0x00,0x7b,0x00,0x8a,0x04,0x8b,0x05,0x0a,0xba, - 0x00,0x01,0x0b,0xc3,0xec,0x94,0xfa,0xed,0x94,0x00,0x50,0x25,0x75,0x0d,0x1b, - 0x75,0x0e,0x00,0x75,0x0f,0x40,0x75,0x10,0x02,0x75,0x82,0x7f,0xc0,0x02,0xc0, - 0x03,0x12,0x05,0xc9,0x75,0x82,0x35,0x12,0x06,0x90,0x12,0x0c,0x10,0xd0,0x03, - 0xd0,0x02,0x80,0xc9,0x90,0x0d,0x5f,0xe4,0x93,0xf5,0x11,0x75,0x82,0x18,0x12, - 0x06,0x07,0xc2,0x03,0x12,0x0c,0x10,0x75,0x94,0x02,0xd2,0xe9,0x22,0x43,0x89, - 0x01,0xd2,0x8c,0x22,0x20,0xf7,0x10,0x30,0xf6,0x11,0x88,0x83,0xa8,0x82,0x20, - 0xf5,0x07,0xf6,0xa8,0x83,0x75,0x83,0x00,0x22,0xf2,0x80,0xf7,0xf0,0x22,0x20, - 0xf7,0x14,0x30,0xf6,0x14,0x88,0x83,0xa8,0x82,0x20,0xf5,0x07,0xe6,0xa8,0x83, - 0x75,0x83,0x00,0x22,0xe2,0x80,0xf7,0xe4,0x93,0x22,0xe0,0x22,0x75,0x82,0x00, - 0x22,0x0d,0x0a,0x00,0x52,0x65,0x61,0x64,0x79,0x00,0x54,0x58,0x20,0x44,0x6f, - 0x6e,0x65,0x00,0x53,0x79,0x6e,0x74,0x61,0x78,0x20,0x65,0x72,0x72,0x6f,0x72, - 0x00,0x0d,0x0a,0x00,0x2d,0x1b,0x16,0x85,0x0b,0x3b,0x05,0x95,0x03,0xb4,0x02, - 0xc3,0x01,0xd2,0x01,0x59,0x00,0xe1,0x00,0x68,0x29,0x2e,0x06,0x47,0xd3,0x91, - 0x3e,0x1a,0x45,0x01,0x01,0x06,0x00,0x10,0x0b,0xda,0x8a,0x75,0x13,0x22,0xc1, - 0x35,0x07,0x03,0x38,0x16,0x6c,0x43,0x40,0x91,0x46,0x50,0x78,0x56,0x10,0xa9, - 0x0a,0x00,0x11,0x41,0x00,0x57,0x7f,0x3f,0x98,0x31,0x0b,0x0d,0x0a,0x00,0x54, - 0x58,0x20,0x44,0x6f,0x6e,0x65,0x00,0x52,0x65,0x67,0x20,0x30,0x78,0x00,0x20, - 0x3d,0x20,0x30,0x78,0x00,0x20,0x20,0x20,0x00,0x50,0x41,0x54,0x41,0x42,0x4c, - 0x45,0x5b,0x00,0x5d,0x20,0x3d,0x20,0x30,0x78,0x00,0x20,0x20,0x00,0x43,0x43, - 0x31,0x31,0x30,0x30,0x20,0x52,0x65,0x61,0x64,0x20,0x53,0x74,0x61,0x74,0x75, - 0x73,0x3a,0x20,0x00,0x20,0x20,0x57,0x72,0x69,0x74,0x65,0x20,0x53,0x74,0x61, - 0x74,0x75,0x73,0x3a,0x20,0x00,0x0d,0x0a,0x00,0x52,0x58,0x3a,0x20,0x00,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, - 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, -}; diff --git a/boop/trunk/tools/toolsmenu.c b/boop/trunk/tools/toolsmenu.c deleted file mode 100644 index d2b3173..0000000 --- a/boop/trunk/tools/toolsmenu.c +++ /dev/null @@ -1,34 +0,0 @@ -/* - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ -#include "global.h" -#include "menu.h" -#include "scart_icp.h" -#include "redirector.h" -#include "fs20.h" - -const struct MENU_ENTRY toolsMenuEntries[] = -{ - { scart_icp, 0, FUNCENTRY, "Scart ICP", "Program the SCART unit" }, // tools/scarticp.c -#if FF_UART_REDIRECT - { uarto_redirector, 0, FUNCENTRY, "Redirector", "Serial redirector" }, // serial/redirector.c -#endif - { fs20_decoder, 0, FUNCENTRY, "FS20 decoder", "FS20 decoder" } // cc1100/fs20.c - -}; - -const struct MENU toolsMenu = -{ - NUM_OF_ELEMENTS (toolsMenuEntries), (MENU_ENTRY*)&toolsMenuEntries, "Tools" -}; diff --git a/boop/trunk/tools/toolsmenu.h b/boop/trunk/tools/toolsmenu.h deleted file mode 100644 index 4411339..0000000 --- a/boop/trunk/tools/toolsmenu.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef TOOLSMENU_H -#define TOOLSMENU_H - -extern const struct MENU toolsMenu; - -#endif diff --git a/lpctool/trunk/ChangeLog b/lpctool/ChangeLog similarity index 100% rename from lpctool/trunk/ChangeLog rename to lpctool/ChangeLog diff --git a/lpctool/trunk/Makefile b/lpctool/Makefile similarity index 100% rename from lpctool/trunk/Makefile rename to lpctool/Makefile diff --git a/lpctool/trunk/Makefile.local.WinARM b/lpctool/Makefile.local.WinARM similarity index 100% rename from lpctool/trunk/Makefile.local.WinARM rename to lpctool/Makefile.local.WinARM diff --git a/lpctool/trunk/Makefile.local.linuxARM b/lpctool/Makefile.local.linuxARM similarity index 100% rename from lpctool/trunk/Makefile.local.linuxARM rename to lpctool/Makefile.local.linuxARM diff --git a/lpctool/trunk/bin2h.c b/lpctool/bin2h.c similarity index 100% rename from lpctool/trunk/bin2h.c rename to lpctool/bin2h.c diff --git a/lpctool/trunk/bootcom.c b/lpctool/bootcom.c similarity index 100% rename from lpctool/trunk/bootcom.c rename to lpctool/bootcom.c diff --git a/lpctool/trunk/bootcom.h b/lpctool/bootcom.h similarity index 100% rename from lpctool/trunk/bootcom.h rename to lpctool/bootcom.h diff --git a/boop/trunk/display/fonts/charset.bits b/lpctool/charset.bits similarity index 100% rename from boop/trunk/display/fonts/charset.bits rename to lpctool/charset.bits diff --git a/boop/trunk/display/fonts/charset.info b/lpctool/charset.info similarity index 100% rename from boop/trunk/display/fonts/charset.info rename to lpctool/charset.info diff --git a/lpctool/trunk/crt.s b/lpctool/crt.s similarity index 100% rename from lpctool/trunk/crt.s rename to lpctool/crt.s diff --git a/lpctool/trunk/flash.c b/lpctool/flash.c similarity index 100% rename from lpctool/trunk/flash.c rename to lpctool/flash.c diff --git a/lpctool/trunk/flash.h b/lpctool/flash.h similarity index 100% rename from lpctool/trunk/flash.h rename to lpctool/flash.h diff --git a/lpctool/trunk/fonty.c b/lpctool/fonty.c similarity index 100% rename from lpctool/trunk/fonty.c rename to lpctool/fonty.c diff --git a/lpctool/trunk/fonty.h b/lpctool/fonty.h similarity index 100% rename from lpctool/trunk/fonty.h rename to lpctool/fonty.h diff --git a/lpctool/trunk/infohelper.c b/lpctool/infohelper.c similarity index 100% rename from lpctool/trunk/infohelper.c rename to lpctool/infohelper.c diff --git a/lpctool/trunk/infohelper.h b/lpctool/infohelper.h similarity index 100% rename from lpctool/trunk/infohelper.h rename to lpctool/infohelper.h diff --git a/lpctool/trunk/irq.c b/lpctool/irq.c similarity index 100% rename from lpctool/trunk/irq.c rename to lpctool/irq.c diff --git a/lpctool/trunk/lcd.c b/lpctool/lcd.c similarity index 100% rename from lpctool/trunk/lcd.c rename to lpctool/lcd.c diff --git a/lpctool/trunk/lcd.h b/lpctool/lcd.h similarity index 100% rename from lpctool/trunk/lcd.h rename to lpctool/lcd.h diff --git a/lpctool/trunk/lpc2220.h b/lpctool/lpc2220.h similarity index 100% rename from lpctool/trunk/lpc2220.h rename to lpctool/lpc2220.h diff --git a/lpctool/trunk/lpc2220.ld b/lpctool/lpc2220.ld similarity index 100% rename from lpctool/trunk/lpc2220.ld rename to lpctool/lpc2220.ld diff --git a/lpctool/trunk/lpc2220_rom.ld b/lpctool/lpc2220_rom.ld similarity index 100% rename from lpctool/trunk/lpc2220_rom.ld rename to lpctool/lpc2220_rom.ld diff --git a/lpctool/trunk/lpctool.c b/lpctool/lpctool.c similarity index 100% rename from lpctool/trunk/lpctool.c rename to lpctool/lpctool.c diff --git a/lpctool/trunk/lpctool_serial.c b/lpctool/lpctool_serial.c similarity index 100% rename from lpctool/trunk/lpctool_serial.c rename to lpctool/lpctool_serial.c diff --git a/lpctool/trunk/lpctool_serial.h b/lpctool/lpctool_serial.h similarity index 100% rename from lpctool/trunk/lpctool_serial.h rename to lpctool/lpctool_serial.h diff --git a/lpctool/trunk/ramtool.c b/lpctool/ramtool.c similarity index 100% rename from lpctool/trunk/ramtool.c rename to lpctool/ramtool.c diff --git a/lpctool/trunk/serial.c b/lpctool/serial.c similarity index 100% rename from lpctool/trunk/serial.c rename to lpctool/serial.c diff --git a/lpctool/trunk/serial.h b/lpctool/serial.h similarity index 100% rename from lpctool/trunk/serial.h rename to lpctool/serial.h diff --git a/lpctool/trunk/toolcmd.h b/lpctool/toolcmd.h similarity index 100% rename from lpctool/trunk/toolcmd.h rename to lpctool/toolcmd.h diff --git a/lpctool/trunk/toolcom.c b/lpctool/toolcom.c similarity index 100% rename from lpctool/trunk/toolcom.c rename to lpctool/toolcom.c diff --git a/lpctool/trunk/toolcom.h b/lpctool/toolcom.h similarity index 100% rename from lpctool/trunk/toolcom.h rename to lpctool/toolcom.h diff --git a/lpctool/trunk/charset.bits b/lpctool/trunk/charset.bits deleted file mode 100644 index 307a269..0000000 --- a/lpctool/trunk/charset.bits +++ /dev/null @@ -1,118 +0,0 @@ -const unsigned char charset_bits[] = { - 0x80, 0xc0, 0x80, 0xe0, 0x80, 0xc0, 0x80, 0xf0, 0x01, 0x03, 0x01, 0x07, - 0x01, 0x03, 0x01, 0x0f, 0x80, 0x88, 0xaa, 0xff, 0xff, 0xaa, 0x88, 0x80, - 0x00, 0xc0, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xf0, 0x00, 0x03, 0x00, 0x07, - 0x00, 0x03, 0x00, 0x0f, 0x80, 0x88, 0xaa, 0xab, 0xab, 0xaa, 0x88, 0x80, - 0x80, 0x80, 0x80, 0x70, 0x01, 0x01, 0x01, 0x0e, 0x0e, 0x01, 0x01, 0x01, - 0x70, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x24, - 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x80, - 0x00, 0x80, 0x00, 0x92, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xaa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xaa, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x81, - 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xaa, 0x02, 0x05, 0x02, 0x00, - 0x3e, 0x41, 0x41, 0x22, 0x02, 0x05, 0x02, 0x00, 0x7f, 0x09, 0x09, 0x01, - 0x1c, 0x22, 0x41, 0x4f, 0x41, 0x22, 0x1c, 0x1c, 0x22, 0x41, 0x4f, 0x47, - 0x22, 0x1c, 0x1c, 0x22, 0x41, 0x4f, 0x4f, 0x2e, 0x1c, 0x1c, 0x22, 0x41, - 0x4f, 0x5f, 0x3e, 0x1c, 0x1c, 0x22, 0x41, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, - 0x22, 0x71, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, 0x3a, 0x79, 0x7f, 0x7f, 0x3e, - 0x1c, 0x1c, 0x3e, 0x7d, 0x7f, 0x7f, 0x3e, 0x1c, 0x1c, 0x3e, 0x7f, 0x7f, - 0x7f, 0x3e, 0x1c, 0x00, 0x00, 0x5f, 0x03, 0x00, 0x03, 0x14, 0x7f, 0x14, - 0x7f, 0x14, 0x24, 0x4a, 0xff, 0x4a, 0x32, 0x63, 0x13, 0x08, 0x64, 0x63, - 0x36, 0x49, 0x55, 0x22, 0x50, 0x03, 0x1c, 0x22, 0x41, 0x41, 0x22, 0x1c, - 0x14, 0x08, 0x3e, 0x08, 0x14, 0x08, 0x08, 0x3e, 0x08, 0x08, 0x80, 0x60, - 0x60, 0x08, 0x08, 0x08, 0x08, 0x08, 0x60, 0x60, 0xc0, 0x30, 0x0c, 0x03, - 0x3e, 0x51, 0x49, 0x45, 0x3e, 0x00, 0x42, 0x7f, 0x40, 0x00, 0x42, 0x61, - 0x51, 0x49, 0x46, 0x22, 0x41, 0x49, 0x49, 0x36, 0x18, 0x14, 0x12, 0x7f, - 0x10, 0x27, 0x45, 0x45, 0x45, 0x39, 0x3e, 0x49, 0x49, 0x49, 0x32, 0x61, - 0x11, 0x09, 0x05, 0x03, 0x36, 0x49, 0x49, 0x49, 0x36, 0x26, 0x49, 0x49, - 0x49, 0x3e, 0x6c, 0x6c, 0x80, 0x6c, 0x6c, 0x08, 0x14, 0x22, 0x41, 0x14, - 0x14, 0x14, 0x14, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x51, 0x09, 0x06, - 0x3e, 0x41, 0x59, 0x55, 0x5e, 0x7e, 0x09, 0x09, 0x09, 0x7e, 0x7f, 0x49, - 0x49, 0x49, 0x36, 0x3e, 0x41, 0x41, 0x41, 0x22, 0x7f, 0x41, 0x41, 0x41, - 0x3e, 0x7f, 0x49, 0x49, 0x41, 0x41, 0x7f, 0x09, 0x09, 0x01, 0x01, 0x3e, - 0x41, 0x41, 0x49, 0x3a, 0x7f, 0x08, 0x08, 0x08, 0x7f, 0x41, 0x7f, 0x41, - 0x30, 0x41, 0x41, 0x41, 0x3f, 0x7f, 0x08, 0x14, 0x22, 0x41, 0x7f, 0x40, - 0x40, 0x40, 0x40, 0x7f, 0x02, 0x0c, 0x02, 0x7f, 0x7f, 0x02, 0x04, 0x08, - 0x7f, 0x3e, 0x41, 0x41, 0x41, 0x3e, 0x7f, 0x09, 0x09, 0x09, 0x06, 0x3e, - 0x41, 0x41, 0x41, 0xbe, 0x7f, 0x09, 0x09, 0x09, 0x76, 0x26, 0x49, 0x49, - 0x49, 0x32, 0x01, 0x01, 0x7f, 0x01, 0x01, 0x3f, 0x40, 0x40, 0x40, 0x3f, - 0x1f, 0x20, 0x40, 0x20, 0x1f, 0x7f, 0x20, 0x10, 0x20, 0x7f, 0x41, 0x22, - 0x1c, 0x22, 0x41, 0x07, 0x08, 0x70, 0x08, 0x07, 0x61, 0x51, 0x49, 0x45, - 0x43, 0x7f, 0x41, 0x41, 0x03, 0x0c, 0x30, 0xc0, 0x41, 0x41, 0x7f, 0x02, - 0x01, 0x02, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01, 0x02, 0x20, 0x54, 0x54, - 0x78, 0x7f, 0x48, 0x48, 0x30, 0x38, 0x44, 0x44, 0x24, 0x30, 0x48, 0x48, - 0x7f, 0x38, 0x54, 0x54, 0x18, 0x08, 0x7e, 0x09, 0x02, 0x98, 0xa4, 0xa4, - 0x78, 0x7f, 0x08, 0x08, 0x70, 0x44, 0x7d, 0x40, 0x44, 0x84, 0x7d, 0x7f, - 0x10, 0x28, 0x44, 0x41, 0x7f, 0x40, 0x7c, 0x04, 0x18, 0x04, 0x78, 0x7c, - 0x08, 0x04, 0x78, 0x38, 0x44, 0x44, 0x38, 0xfc, 0x24, 0x24, 0x18, 0x18, - 0x24, 0x24, 0xfc, 0x7c, 0x08, 0x04, 0x08, 0x48, 0x54, 0x54, 0x24, 0x04, - 0x3f, 0x44, 0x3c, 0x40, 0x20, 0x7c, 0x1c, 0x20, 0x40, 0x20, 0x1c, 0x3c, - 0x40, 0x30, 0x40, 0x3c, 0x44, 0x28, 0x10, 0x28, 0x44, 0x9c, 0xa0, 0xa0, - 0x7c, 0x64, 0x54, 0x54, 0x4c, 0x08, 0x36, 0x41, 0x77, 0x41, 0x36, 0x08, - 0x08, 0x08, 0x2a, 0x1c, 0x08, 0x08, 0x1c, 0x2a, 0x08, 0x08, 0x00, 0x00, - 0x00, 0xdf, 0xdf, 0x07, 0x07, 0x00, 0x07, 0x07, 0x14, 0x3e, 0x14, 0x3e, - 0x14, 0x24, 0x4a, 0xff, 0x4a, 0x32, 0xf3, 0xfb, 0x18, 0xdf, 0xc7, 0x36, - 0x49, 0x55, 0x22, 0x50, 0x04, 0x07, 0x03, 0x3c, 0x7e, 0xc3, 0x81, 0x81, - 0xc3, 0x7e, 0x3c, 0x14, 0x08, 0x3e, 0x08, 0x14, 0x18, 0x7e, 0x7e, 0x18, - 0x80, 0x60, 0x60, 0x18, 0x18, 0x18, 0x18, 0x18, 0x60, 0x60, 0xc0, 0xf0, - 0x3c, 0x0f, 0x03, 0x7e, 0xff, 0xc3, 0xff, 0x7e, 0x04, 0xc6, 0xff, 0xff, - 0xc0, 0xe6, 0xf7, 0xd3, 0xdf, 0xce, 0x42, 0xc3, 0xdb, 0xff, 0x76, 0x38, - 0x3c, 0x36, 0xff, 0xff, 0x5f, 0xdf, 0xdb, 0xfb, 0x73, 0x7e, 0xff, 0xdb, - 0xfb, 0x72, 0x03, 0xf3, 0xfb, 0x0f, 0x07, 0x76, 0xff, 0xdb, 0xff, 0x76, - 0x4e, 0xdf, 0xdb, 0xff, 0x7e, 0x6c, 0x6c, 0x80, 0x6c, 0x6c, 0x18, 0x3c, - 0x66, 0xc3, 0x81, 0x36, 0x36, 0x36, 0x36, 0x81, 0xc3, 0x66, 0x3c, 0x18, - 0x06, 0xd3, 0xd9, 0x0f, 0x06, 0x7e, 0xc3, 0xdb, 0xd7, 0xde, 0xfe, 0xff, - 0x33, 0xff, 0xfe, 0xff, 0xff, 0xdb, 0xff, 0x66, 0x7e, 0xff, 0xc3, 0xe7, - 0x66, 0xff, 0xff, 0xc3, 0xff, 0x7e, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xff, - 0xff, 0x1b, 0x1b, 0x03, 0x7e, 0xff, 0xc3, 0xfb, 0x7a, 0xff, 0xff, 0x18, - 0xff, 0xff, 0xc3, 0xff, 0xff, 0xc3, 0x60, 0xe3, 0xc3, 0xff, 0x7f, 0xff, - 0xff, 0x1c, 0xf7, 0xe3, 0xff, 0xff, 0xc0, 0xc0, 0xc0, 0xff, 0xfe, 0x0c, - 0xfe, 0xff, 0xff, 0xfe, 0x18, 0x7f, 0xff, 0x7e, 0xff, 0xc3, 0xff, 0x7e, - 0xff, 0xff, 0x1b, 0x1f, 0x0e, 0x7e, 0xff, 0xc3, 0x7f, 0xde, 0xff, 0xff, - 0x1b, 0xff, 0xee, 0x4e, 0xdf, 0xdb, 0xfb, 0x72, 0x03, 0xff, 0xff, 0x03, - 0x03, 0x7f, 0xff, 0xc0, 0xff, 0x7f, 0x3f, 0x7f, 0xc0, 0x7f, 0x3f, 0xff, - 0x7f, 0x30, 0x7f, 0xff, 0xe7, 0xe7, 0x18, 0x18, 0xe7, 0xe7, 0x0f, 0x1f, - 0xf0, 0x1f, 0x0f, 0xe3, 0xf3, 0xdb, 0xcf, 0xc7, 0xff, 0xff, 0xc3, 0xc3, - 0x03, 0x0f, 0x3c, 0xf0, 0xc0, 0xc3, 0xc3, 0xff, 0xff, 0x04, 0x06, 0x03, - 0x06, 0x04, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x03, 0x07, 0x60, 0xf4, 0xd4, - 0xf4, 0xf8, 0xff, 0xff, 0xcc, 0xfc, 0x78, 0x78, 0xfc, 0xcc, 0xcc, 0x48, - 0x78, 0xfc, 0xcc, 0xff, 0xff, 0x78, 0xfc, 0xac, 0xbc, 0xb8, 0x18, 0xfe, - 0xff, 0x1b, 0x1b, 0xb8, 0xbc, 0xac, 0xfc, 0x78, 0xff, 0xff, 0x18, 0xf8, - 0xf0, 0xcc, 0xfd, 0xfd, 0xc0, 0xc0, 0xcc, 0xfd, 0x7d, 0xff, 0xff, 0x10, - 0xfc, 0xec, 0x7f, 0xff, 0xc0, 0xc0, 0xfc, 0xfc, 0x0c, 0xfc, 0x0c, 0xfc, - 0xf8, 0xfc, 0xf8, 0x0c, 0xfc, 0xf8, 0x78, 0xfc, 0xcc, 0xfc, 0x78, 0xfc, - 0xfc, 0x6c, 0x7c, 0x38, 0x38, 0x7c, 0x6c, 0xfc, 0xf8, 0xfc, 0xf8, 0x0c, - 0x1c, 0x18, 0xd8, 0xdc, 0xfc, 0xec, 0x6c, 0x0c, 0x7f, 0xff, 0xcc, 0xcc, - 0x7c, 0xfc, 0xc0, 0x7c, 0xfc, 0x3c, 0x7c, 0xc0, 0x7c, 0x3c, 0x7c, 0xfc, - 0xc0, 0x60, 0xc0, 0xfc, 0x7c, 0xcc, 0xfc, 0x30, 0xfc, 0xdc, 0x9c, 0xbc, - 0xb0, 0xfc, 0x7c, 0xcc, 0xec, 0xfc, 0xdc, 0xcc, 0x10, 0x56, 0xef, 0x81, - 0xef, 0xef, 0x81, 0xee, 0x56, 0x10, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x18, - 0x3c, 0x7e, 0x18, 0x18, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, - 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xe3, 0xf1, 0xf8, 0x7c, - 0x3e, 0x1f, 0x8f, 0xc7, 0xf1, 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, - 0xf8, 0x7c, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0x7c, 0x3e, 0x1f, 0x8f, - 0xc7, 0xe3, 0xf1, 0xf8, 0x3e, 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, - 0x1f, 0x8f, 0xc7, 0xe3, 0xf1, 0xf8, 0x7c, 0x3e, 0xff, 0xff, 0xe7, 0xc3, - 0xc3, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xc3, 0xc3, 0xe7, 0xff, 0xff, - 0xff, 0xf8, 0xe0, 0xc0, 0xc0, 0xe0, 0xf8, 0xff, 0xff, 0x1f, 0x07, 0x03, - 0x03, 0x07, 0x1f, 0xff, 0x1c, 0x3e, 0x77, 0x63, 0x77, 0x3e, 0x1c, 0x1c, - 0x36, 0x63, 0x41, 0x63, 0x36, 0x1c, 0x1c, 0x08, 0x41, 0x63, 0x41, 0x08, - 0x1c, 0x08, 0x14, 0x22, 0x49, 0x22, 0x14, 0x08, 0x55, 0xaa, 0x55, 0xaa, - 0x55, 0xaa, 0x55, 0xaa, 0x33, 0x33, 0xcc, 0xcc, 0x33, 0x33, 0xcc, 0xcc, - 0x33, 0x33, 0x0e, 0x11, 0x0e, 0x12, 0x1f, 0x10, 0x19, 0x15, 0x12, 0x11, - 0x15, 0x0a, 0x07, 0x04, 0x1e, 0x17, 0x15, 0x09, 0x0e, 0x15, 0x09, 0x01, - 0x1d, 0x03, 0x0a, 0x15, 0x0a, 0x12, 0x15, 0x0e, 0x0a, 0x10, 0x0a, 0x04, - 0x0a, 0x11, 0x0a, 0x0a, 0x0a, 0x11, 0x0a, 0x04, 0x01, 0x15, 0x02, 0x01, - 0x03, 0x07, 0x03, 0x01, 0x04, 0x06, 0x07, 0x06, 0x04, 0x04, 0x0e, 0x1f, - 0x1f, 0x0e, 0x04, 0x18, 0x3c, 0x7e, 0x7e, 0x3c, 0x18, 0x3c, 0x42, 0x81, - 0x81, 0x81, 0x81, 0x42, 0x3c, 0x3c, 0x42, 0x99, 0xbd, 0xbd, 0x99, 0x42, - 0x3c, 0x7f, 0x49, 0x41, 0x6b, 0x41, 0x49, 0x7f, 0x80, 0x40, 0x20, 0x10, - 0x0f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x07, 0x3e, 0x01, 0x01, 0x01, - 0x01, 0x02, 0x04, 0x38, 0x08, 0x08, 0x08, 0x08, 0x01, 0x01, 0x01, 0x01, - 0x15, 0x0a, 0x15, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/lpctool/trunk/charset.info b/lpctool/trunk/charset.info deleted file mode 100644 index 5c205b8..0000000 --- a/lpctool/trunk/charset.info +++ /dev/null @@ -1,22 +0,0 @@ -const unsigned char charset_info[] = { -0x08, 0x84, 0x48, 0x84, 0x44, 0x44, 0x48, 0x88, // 0- 15 graticule & borders -0x88, 0x88, 0x88, 0x87, 0x77, 0x77, 0x77, 0x77, // 16- 31 graticule & symbols -0x21, 0x35, 0x55, 0x51, 0x33, 0x55, 0x35, 0x24, // 32- 47 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x55, 0x23, 0x44, 0x45, // 48- 63 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x53, 0x55, 0x55, 0x55, // 64- 80 ascii, font 1 -0x55, 0x55, 0x55, 0x55, 0x55, 0x53, 0x43, 0x35, // 80- 95 ascii, font 1 -0x24, 0x44, 0x44, 0x44, 0x43, 0x34, 0x35, 0x44, // 96-112 ascii, font 1 -0x44, 0x44, 0x34, 0x55, 0x54, 0x43, 0x13, 0x55, // 112-127 ascii, font 1 -0x32, 0x55, 0x55, 0x53, 0x44, 0x54, 0x35, 0x25, // 128-143 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x55, 0x23, 0x54, 0x55, // 144-159 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, // 160-175 ascii, bold font -0x55, 0x55, 0x55, 0x55, 0x65, 0x54, 0x54, 0x55, // 176-191 ascii, bold font -0x25, 0x55, 0x55, 0x55, 0x54, 0x45, 0x47, 0x55, // 192-207 ascii, bold font -0x55, 0x55, 0x55, 0x57, 0x55, 0x54, 0x24, 0x55, // 208-223 ascii, bold font -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x77, 0x77, // 224-239 symbols -0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 240-255 symbols -0x33, 0x33, 0x33, 0x33, 0x33, 0x12, 0x33, 0x33, // 256-271 small numbers -0x55, 0x33, 0x68, 0x87, 0x84, 0x44, 0x44, 0x44 // 272-288 symbols -}; - -const unsigned char charset_dlines = 1;