Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • add_menu_vibration
  • blinkisync-as-preload
  • ch3/api-speed-eval2
  • ch3/dual-core
  • ch3/genapi-refactor
  • ch3/leds-api
  • ch3/splashscreen
  • dualcore
  • dx/flatten-config-module
  • dx/meh-bdf-to-stm
  • freertos-btle
  • genofire/ble-follow-py
  • koalo/bhi160-works-but-dirty
  • koalo/factory-reset
  • koalo/wip/i2c-for-python
  • master
  • msgctl/faultscreen
  • msgctl/textbuffer_api
  • plaetzchen/ios-workaround
  • rahix/bhi
  • rahix/bluetooth-app-favorite
  • rahix/bma
  • rahix/user-space-ctx
  • renze/hatchery_apps
  • renze/safe_mode
  • schleicher-test
  • schneider/212-reset-hardware-when-entering-repl
  • schneider/ancs
  • schneider/ble-buffers
  • schneider/ble-central
  • schneider/ble-ecg-stream-visu
  • schneider/ble-fixes-2020-3
  • schneider/ble-mini-demo
  • schneider/ble-stability
  • schneider/ble-stability-new-phy
  • schneider/bonding
  • schneider/bonding-fail-if-full
  • schneider/bootloader-update-9a0d158
  • schneider/deepsleep
  • schneider/deepsleep2
  • schneider/deepsleep4
  • schneider/default-main
  • schneider/freertos-list-debug
  • schneider/fundamental-test
  • schneider/iaq-python
  • schneider/ir
  • schneider/max30001
  • schneider/max30001-epicaridum
  • schneider/max30001-pycardium
  • schneider/maxim-sdk-update
  • schneider/mp-exception-print
  • schneider/mp-for-old-bl
  • schneider/png
  • schneider/schleicher-test
  • schneider/sdk-0.2.1-11
  • schneider/sdk-0.2.1-7
  • schneider/sleep-display
  • schneider/spo2-playground
  • schneider/stream-locks
  • schneider/v1.17-changelog
  • bootloader-v1
  • release-1
  • v0.0
  • v1.0
  • v1.1
  • v1.10
  • v1.11
  • v1.12
  • v1.13
  • v1.14
  • v1.15
  • v1.16
  • v1.17
  • v1.18
  • v1.2
  • v1.3
  • v1.4
  • v1.5
  • v1.6
  • v1.7
  • v1.8
  • v1.9
82 results

Target

Select target project
  • card10/firmware
  • annejan/firmware
  • astro/firmware
  • fpletz/firmware
  • gerd/firmware
  • fleur/firmware
  • swym/firmware
  • l/firmware
  • uberardy/firmware
  • wink/firmware
  • madonius/firmware
  • mot/firmware
  • filid/firmware
  • q3k/firmware
  • hauke/firmware
  • Woazboat/firmware
  • pink/firmware
  • mossmann/firmware
  • omniskop/firmware
  • zenox/firmware
  • trilader/firmware
  • Danukeru/firmware
  • shoragan/firmware
  • zlatko/firmware
  • sistason/firmware
  • datenwolf/firmware
  • bene/firmware
  • amedee/firmware
  • martinling/firmware
  • griffon/firmware
  • chris007/firmware
  • adisbladis/firmware
  • dbrgn/firmware
  • jelly/firmware
  • rnestler/firmware
  • mh/firmware
  • ln/firmware
  • penguineer/firmware
  • monkeydom/firmware
  • jens/firmware
  • jnaulty/firmware
  • jeffmakes/firmware
  • marekventur/firmware
  • pete/firmware
  • h2obrain/firmware
  • DooMMasteR/firmware
  • jackie/firmware
  • prof_r/firmware
  • Draradech/firmware
  • Kartoffel/firmware
  • hinerk/firmware
  • abbradar/firmware
  • JustTB/firmware
  • LuKaRo/firmware
  • iggy/firmware
  • ente/firmware
  • flgr/firmware
  • Lorphos/firmware
  • matejo/firmware
  • ceddral7/firmware
  • danb/firmware
  • joshi/firmware
  • melle/firmware
  • fitch/firmware
  • deurknop/firmware
  • sargon/firmware
  • markus/firmware
  • kloenk/firmware
  • lucaswerkmeister/firmware
  • derf/firmware
  • meh/firmware
  • dx/card10-firmware
  • torben/firmware
  • yuvadm/firmware
  • AndyBS/firmware
  • klausdieter1/firmware
  • katzenparadoxon/firmware
  • xiretza/firmware
  • ole/firmware
  • techy/firmware
  • thor77/firmware
  • TilCreator/firmware
  • fuchsi/firmware
  • dos/firmware
  • yrlf/firmware
  • PetePriority/firmware
  • SuperVirus/firmware
  • sur5r/firmware
  • tazz/firmware
  • Alienmaster/firmware
  • flo_h/firmware
  • baldo/firmware
  • mmu_man/firmware
  • Foaly/firmware
  • sodoku/firmware
  • Guinness/firmware
  • ssp/firmware
  • led02/firmware
  • Stormwind/firmware
  • arist/firmware
  • coon/firmware
  • mdik/firmware
  • pippin/firmware
  • royrobotiks/firmware
  • zigot83/firmware
  • mo_k/firmware
106 results
Select Git revision
  • blinkisync-as-preload
  • ch3/api-speed-eval2
  • ch3/dual-core
  • ch3/genapi-refactor
  • ch3/leds-api
  • ch3/splashscreen
  • drawcall_clipping
  • dualcore
  • faulty_unsigned_comparisons
  • freertos-btle
  • fuchsi-ecg-app
  • genofire/ble-follow-py
  • genofire/haule-ble-fs-deactive
  • genofire/leds_rgb_get_state
  • genofire/rockets-state
  • gpio_in_adc_fix
  • ios-workarounds
  • koalo/bhi160-works-but-dirty
  • koalo/factory-reset
  • koalo/wip/i2c-for-python
  • master
  • msgctl/faultscreen
  • msgctl/gfx_rle
  • msgctl/textbuffer_api
  • plaetzchen/ios-workaround
  • rahix/bhi
  • rahix/bma
  • renze/hatchery_apps
  • renze/safe_mode
  • schleicher-test
  • schneider/ble-buffers
  • schneider/bonding
  • schneider/bootloader-update-9a0d158
  • schneider/bsec
  • schneider/fundamental-test
  • schneider/max30001
  • schneider/max30001-epicaridum
  • schneider/max30001-pycardium
  • schneider/maxim-sdk-update
  • schneider/mp-for-old-bl
  • schneider/schleicher-test
  • schneider/stream-locks
  • bootloader-v1
  • release-1
  • v0.0
  • v1.0
  • v1.1
  • v1.2
  • v1.3
  • v1.4
  • v1.5
  • v1.6
  • v1.7
  • v1.8
  • v1.9
55 results
Show changes
Showing
with 834 additions and 14368 deletions
import ws2812, gpio, bluetooth, time, display
from micropython import const
_IRQ_GATTS_WRITE = const(3)
WS2812_SERVICE_UUID = \
bluetooth.UUID("23238000-2342-2342-2342-234223422342")
SET_ALL = (
bluetooth.UUID("23238001-2342-2342-2342-234223422342"),
bluetooth.FLAG_WRITE
)
WS2812_SERVICE = (
WS2812_SERVICE_UUID,
(SET_ALL,)
)
def irq(event, data):
if event == _IRQ_GATTS_WRITE:
conn_handle, value_handle = data
value = ble.gatts_read(value_handle)
ws2812.set_all(gpio.WRISTBAND_3, [value] * 3)
if __name__ == "__main__":
display.open().backlight(0)
gpio.set_mode(gpio.WRISTBAND_3, gpio.mode.OUTPUT)
ble = bluetooth.BLE()
ble.active(True)
ble.irq(irq)
ble.gatts_register_services((WS2812_SERVICE,))
print("Waiting for connection!")
while True:
time.sleep(1)
#!/usr/bin/env python3
import bluepy
import time
import colorsys
# Change this to the MAC of your card10
p = bluepy.btle.Peripheral("CA:4D:10:01:ff:64")
c = p.getCharacteristics(
uuid='23238001-2342-2342-2342-234223422342')[0]
hue = 0
while 1:
r,g,b = colorsys.hsv_to_rgb(hue, 1, 0.1)
c.write(b"%c%c%c" %
(int(r*255), int(g*255), int(b*255)), True)
time.sleep(.1)
hue += 0.1
FROM ubuntu
RUN apt-get update && apt-get -y install gcc-arm-none-eabi binutils-arm-none-eabi libnewlib-arm-none-eabi python3 python3-pip ninja-build git
RUN pip3 install meson crc16 pillow
VOLUME /firmware
WORKDIR /firmware
CMD ./bootstrap.sh && ninja -C build && chown -R --reference=/firmware build
FROM ubuntu:bionic FROM ubuntu:focal
RUN set -e -x ;\ RUN set -e -x ;\
export DEBIAN_FRONTEND=noninteractive ;\ export DEBIAN_FRONTEND=noninteractive ;\
...@@ -10,7 +10,7 @@ RUN set -e -x ;\ ...@@ -10,7 +10,7 @@ RUN set -e -x ;\
llvm \ llvm \
python3-pip ;\ python3-pip ;\
pip3 install \ pip3 install \
clang \ clang==10.0.1 \
sphinx \ sphinx \
sphinx_rtd_theme ;\ sphinx_rtd_theme ;\
rm -rf /var/lib/apt/lists rm -rf /var/lib/apt/lists
......
#ifndef FREERTOS_CONFIG_H #ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H #define FREERTOS_CONFIG_H
#define MXC_ASSERT_ENABLE
#include "mxc_assert.h"
#include "max32665.h" #include "max32665.h"
#include <assert.h>
/* CMSIS keeps a global updated with current system clock in Hz */ /* CMSIS keeps a global updated with current system clock in Hz */
#define configCPU_CLOCK_HZ ((unsigned long)96000000) #define configCPU_CLOCK_HZ ((unsigned long)96000000)
...@@ -51,7 +50,10 @@ ...@@ -51,7 +50,10 @@
#define INCLUDE_vTaskSuspend 1 #define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelay 1 #define INCLUDE_vTaskDelay 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_uxTaskGetStackHighWaterMark 1 #define INCLUDE_uxTaskGetStackHighWaterMark 1
#define INCLUDE_xTimerPendFunctionCall 1
#define INCLUDE_xSemaphoreGetMutexHolder 1
/* Allow static allocation of data structures */ /* Allow static allocation of data structures */
#define configSUPPORT_STATIC_ALLOCATION 1 #define configSUPPORT_STATIC_ALLOCATION 1
...@@ -69,7 +71,7 @@ ...@@ -69,7 +71,7 @@
#define xPortSysTickHandler SysTick_Handler #define xPortSysTickHandler SysTick_Handler
/* Assert */ /* Assert */
#define configASSERT(x) MXC_ASSERT(x) #define configASSERT(x) assert(x)
/* Tickless idle hooks */ /* Tickless idle hooks */
typedef uint32_t TickType_t; typedef uint32_t TickType_t;
......
const unsigned char Heart[] = {
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 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,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xdf,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0x00, 0x00,
0x00, 0x00,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x1f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x60, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x60, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x00,
0x9f, 0x00,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x2f,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x00,
0x9f, 0x00,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xdf,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x9f, 0x04,
0x3f, 0x05,
0xbf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0xe0, 0xf8,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x3f, 0x05,
0xbf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x60, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x60, 0xf9,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xbf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0x80, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 0xfb,
0xa0, 0xfa,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x00, 0xf8,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 0xfb,
0x20, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 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,
0x01, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0xc0, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x40, 0xfc,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x03, 0xf8,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x1f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0xe0, 0xfc,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x05, 0xf8,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x80, 0xfd,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x08, 0xf8,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0xfe,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x0a, 0xf8,
0x0c, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x1f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x7f, 0x07,
0xff, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x20, 0xff,
0xa0, 0xfe,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x0f, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x7f, 0x07,
0xff, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 0xff,
0x40, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x9f, 0x07,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0xc0, 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, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x11, 0xf8,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0xe0, 0xf7,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x13, 0xf8,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0xe0, 0xe7,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x16, 0xf8,
0x18, 0xf8,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0xe0, 0xcf,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x1a, 0xf8,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x1f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0xe0, 0xbf,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x1a, 0xf8,
0x1c, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xe0,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xbf, 0x05,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0xe0, 0xaf,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x1d, 0xf8,
0x1f, 0xf8,
0x1f, 0xf0,
0x1f, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 0x87,
0xe0, 0x97,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf8,
0x1f, 0xf0,
0x1f, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x1f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0x40, 0xf8,
0x40, 0xf8,
0x40, 0xf8,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0xe0, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xf0,
0x1f, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0xe0, 0x77,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xd8,
0x1f, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0xe0, 0x5f,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xc8,
0x1f, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 0x3f,
0xe0, 0x4f,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xb8,
0x1f, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0xe0, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0xa8,
0x1f, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0xe0, 0x27,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x90,
0x1f, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 0x07,
0xe0, 0x17,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x80,
0x1f, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 0x07,
0xe0, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x70,
0x1f, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 0x07,
0xe2, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x58,
0x1f, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf6, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 0x07,
0xe4, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x48,
0x1f, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 0x07,
0xe6, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x38,
0x1f, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 0x07,
0xe9, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x20,
0x1f, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 0x07,
0xeb, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x10,
0x1f, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 0x07,
0xed, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 0x07,
0xf0, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x9f, 0x00,
0x3f, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfe, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 0x07,
0xf2, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x01,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 0x07,
0xf4, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xbf, 0x01,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 0x07,
0xf7, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x5f, 0x02,
0xdf, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 0x07,
0xf9, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0xff, 0x02,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 0x07,
0xfb, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x7f, 0x03,
0x1f, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 0x07,
0xfd, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
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, 0x04,
0x9f, 0x04,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x7f, 0x07,
0xff, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x9f, 0x04,
0x3f, 0x05,
0xbf, 0x05,
0x5f, 0x06,
0xff, 0x06,
0x9f, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x3f, 0x05,
0xdf, 0x05,
0x5f, 0x06,
0xff, 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,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
};
...@@ -5,8 +5,17 @@ ...@@ -5,8 +5,17 @@
#define MXC_ASSERT_ENABLE #define MXC_ASSERT_ENABLE
#include "mxc_assert.h" #include "mxc_assert.h"
static uint32_t irq_save = 0;
void *_api_call_start(api_id_t id, uintptr_t size) void *_api_call_start(api_id_t id, uintptr_t size)
{ {
/*
* Disable all maskable interrupts here, to be turned on again at the
* end of _api_call_transact().
*/
irq_save = __get_PRIMASK();
__set_PRIMASK(1);
while (SEMA_GetSema(_API_SEMAPHORE) == E_BUSY) { while (SEMA_GetSema(_API_SEMAPHORE) == E_BUSY) {
} }
...@@ -51,5 +60,74 @@ void *_api_call_transact(void *buffer) ...@@ -51,5 +60,74 @@ void *_api_call_transact(void *buffer)
API_CALL_MEM->call_flag = _API_FLAG_IDLE; API_CALL_MEM->call_flag = _API_FLAG_IDLE;
SEMA_FreeSema(_API_SEMAPHORE); SEMA_FreeSema(_API_SEMAPHORE);
/*
* Re-enable interrupts (if previously enabled) after completing the API
* call.
*/
__set_PRIMASK(irq_save);
return API_CALL_MEM->buffer; return API_CALL_MEM->buffer;
} }
__attribute__((noreturn)) void epic_exit(int ret)
{
/*
* Call __epic_exit() and then jump to the reset routine/
*/
void *buffer;
buffer = _api_call_start(API_SYSTEM_EXIT, sizeof(int));
*(int *)buffer = ret;
_api_call_transact(buffer);
API_CALL_MEM->reset_stub();
/* unreachable */
while (1)
;
}
int epic_exec(char *name)
{
/*
* Call __epic_exec(). If it succeeds, jump to the reset routine.
* Otherwise, return the error code.
*/
void *buffer;
buffer = _api_call_start(API_SYSTEM_EXEC, sizeof(char *));
*(char **)buffer = name;
int ret = *(int *)_api_call_transact(buffer);
if (ret < 0) {
return ret;
}
API_CALL_MEM->reset_stub();
/* unreachable */
while (1)
;
}
int api_fetch_args(char *buf, size_t cnt)
{
if (API_CALL_MEM->id != 0) {
/*
* When any call happened before the args are fetched, they are
* overwritten and no longer accessible.
*/
return (-1);
}
if (API_CALL_MEM->buffer[0x20] == '\0') {
return 0;
}
size_t i;
for (i = 0; i < cnt && API_CALL_MEM->buffer[i + 0x20] != '\0'; i++) {
buf[i] = API_CALL_MEM->buffer[i + 0x20];
}
return i - 1;
}
...@@ -27,3 +27,12 @@ void *_api_call_start(api_id_t id, uintptr_t size); ...@@ -27,3 +27,12 @@ void *_api_call_start(api_id_t id, uintptr_t size);
* - Pointer to a buffer containing the return value * - Pointer to a buffer containing the return value
*/ */
void *_api_call_transact(void *buffer); void *_api_call_transact(void *buffer);
/*
* Fetch arguments from the API buffer. This function will only work properly
* directly after startup of core 1. If api_fetch_args() is called after other
* calls have already happened, it will return -1.
*
* Otherwise it will return the length of data which was read.
*/
int api_fetch_args(char *buf, size_t cnt);
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
* TODO: Replace this with a LDREX/STREX based implementation * TODO: Replace this with a LDREX/STREX based implementation
*/ */
#define _API_SEMAPHORE 0 #define _API_SEMAPHORE 0
#define _CONTROL_SEMAPHORE 1
/* Type of API IDs */ /* Type of API IDs */
typedef uint32_t api_id_t; typedef uint32_t api_id_t;
...@@ -19,6 +20,13 @@ typedef uint32_t api_id_t; ...@@ -19,6 +20,13 @@ typedef uint32_t api_id_t;
/* Layout of the shared memory for API calls */ /* Layout of the shared memory for API calls */
struct api_call_mem { struct api_call_mem {
/*
* Reset stub. The reset stub is a small function provided by
* epicardium that should be called by a payload when receiving the
* reset interrupt.
*/
void (*reset_stub)();
/* /*
* Flag for synchronization of API calls. When this flag * Flag for synchronization of API calls. When this flag
* is set, the caller has issued a call and is waiting for * is set, the caller has issued a call and is waiting for
...@@ -30,7 +38,7 @@ struct api_call_mem { ...@@ -30,7 +38,7 @@ struct api_call_mem {
api_id_t id; api_id_t id;
/* ID of the current interrupt */ /* ID of the current interrupt */
api_int_id_t int_id; volatile api_int_id_t int_id;
/* /*
* Buffer for arguments/return value. This buffer will be * Buffer for arguments/return value. This buffer will be
......
#include "epicardium.h"
#include "api/dispatcher.h"
#include "card10.h"
#include "max32665.h"
#include "sema.h"
#include "tmr.h"
static void __core1_init(void);
extern void interrupt_trigger_sync(api_int_id_t id);
struct core1_info {
/* Location of core1's interrupt vector table */
volatile uintptr_t ivt_addr;
/* Whether core 1 is ready for a new IVT */
volatile bool ready;
};
/*
* Information passing structure for controlling core 1.
*/
static volatile struct core1_info core1_info = {
.ivt_addr = 0x00,
.ready = false,
};
/*
* Minimal IVT needed for initial startup. This IVT only contains the initial
* stack pointer and reset-handler and is used to startup core 1. Afterwards,
* the payload's IVT is loaded into VTOR and used from then on.
*/
static uintptr_t core1_initial_ivt[] = {
/* Initial Stack Pointer */
0x20080000,
/* Reset Handler */
(uintptr_t)__core1_reset,
};
/*
* Reset Handler
*
* Calls __core1_init() to reset & prepare the core for loading a new payload.
*/
__attribute__((naked)) void __core1_reset(void)
{
/* Reset stack to MSP and set it to 0x20080000 */
__asm volatile(
"mov r0, #0\n\t"
"msr control, r0\n\t"
"mov sp, %0\n\t"
: /* No Outputs */
: "r"(core1_initial_ivt[0])
: "r0");
/* Reset FPU */
SCB->CPACR = 0x00000000;
FPU->FPDSCR = 0x00000000;
FPU->FPCCR = 0x00000000;
__DSB();
__ISB();
__core1_init();
}
/*
* Init core 1. This function will reset the core and wait for a new IVT
* address from Epicardium. Once this address is received, it will start
* execution with the supplied reset handler.
*/
void __core1_init(void)
{
/*
* Clear any pending API interrupts.
*/
TMR_IntClear(MXC_TMR5);
/*
* Disable the SysTick
*/
SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk;
/*
* Reset Interrupts
*
* To ensure proper operation of the new payload, disable all interrupts
* and clear all pending ones.
*/
for (int i = 0; i < MXC_IRQ_EXT_COUNT; i++) {
NVIC_DisableIRQ(i);
NVIC_ClearPendingIRQ(i);
NVIC_SetPriority(i, 0);
}
/*
* Check whether we catched the core during an interrupt. If this is
* the case, try returning from the exception handler first and call
* __core1_reset() again in thread context.
*/
if ((SCB->ICSR & SCB_ICSR_VECTACTIVE_Msk) != 0) {
/*
* Construct an exception frame so the CPU will jump back to our
* __core1_reset() function once we exit from the exception
* handler.
*
* To exit the exception, a special "EXC_RETURN" value is loaded
* into the link register and then branched to.
*/
__asm volatile(
"ldr r0, =0x41000000\n\t"
"ldr r1, =0\n\t"
"push { r0 }\n\t" /* xPSR */
"push { %0 }\n\t" /* PC */
"push { %0 }\n\t" /* LR */
"push { r1 }\n\t" /* R12 */
"push { r1 }\n\t" /* R3 */
"push { r1 }\n\t" /* R2 */
"push { r1 }\n\t" /* R1 */
"push { r1 }\n\t" /* R0 */
"ldr lr, =0xFFFFFFF9\n\t"
"bx lr\n\t"
: /* No Outputs */
: "r"((uintptr_t)__core1_reset)
: "pc", "lr");
/* unreachable */
while (1)
;
}
/* Wait for the IVT address */
while (1) {
while (SEMA_GetSema(_CONTROL_SEMAPHORE) == E_BUSY) {
}
__DMB();
__ISB();
/*
* The IVT address is reset to 0 by Epicardium before execution
* gets here. Once a new address has been set, core 1 can use
* the new IVT.
*/
if (core1_info.ivt_addr != 0x00) {
break;
}
/* Signal that we are ready for an IVT address */
core1_info.ready = true;
/*
* Reset the API interrupt so we never block Epicardium when it
* attempts to trigger an interrupt.
*/
API_CALL_MEM->int_id = (-1);
SEMA_FreeSema(_CONTROL_SEMAPHORE);
__WFE();
}
uintptr_t *ivt = (uintptr_t *)core1_info.ivt_addr;
core1_info.ivt_addr = 0x00;
SEMA_FreeSema(_CONTROL_SEMAPHORE);
/*
* Reset the call-flag before entering the payload so API calls behave
* properly. This is necessary because epic_exec() will set the flag
* to "returning" on exit.
*/
API_CALL_MEM->call_flag = _API_FLAG_IDLE;
/*
* Set the IVT
*/
SCB->VTOR = (uintptr_t)ivt;
/*
* Clear any pending API interrupts.
*/
TMR_IntClear(MXC_TMR5);
NVIC_ClearPendingIRQ(TMR5_IRQn);
/*
* Jump to payload's reset handler
*/
__asm volatile(
"ldr r0, %0\n\t"
"blx r0\n\r"
: /* No Outputs */
: "m"(*(ivt + 1))
: "r0");
}
void core1_boot(void)
{
/*
* Boot using the initial IVT. This will place core 1 into a loop,
* waiting for a payload.
*/
core1_start(&core1_initial_ivt);
}
void core1_trigger_reset(void)
{
/*
* Signal core 1 that we intend to load a new payload.
*
* This needs to be synchroneous because otherwise we will deadlock
* (Lifecycle task busy-spins and interrupt can never get dispatched).
*/
interrupt_trigger_sync(EPIC_INT_RESET);
}
bool core1_is_ready(void)
{
bool ready;
while (SEMA_GetSema(_CONTROL_SEMAPHORE) == E_BUSY) {
}
/*
* core 1 will set the ready flag once it is spinning in the
* above loop, waiting for a new IVT.
*/
ready = core1_info.ready;
SEMA_FreeSema(_CONTROL_SEMAPHORE);
return ready;
}
void core1_wait_ready(void)
{
/* Wait for the core to accept */
while (1) {
if (core1_is_ready()) {
break;
}
for (int i = 0; i < 10000; i++) {
}
}
/*
* TODO: If the other core does not respond within a certain grace
* period, we need to force it into our desired state by overwriting
* all of its memory. Yes, I don't like this method either ...
*/
}
void core1_load(void *ivt, char *args)
{
while (SEMA_GetSema(_CONTROL_SEMAPHORE) == E_BUSY) {
}
/* If the core is currently in an API call, reset it. */
API_CALL_MEM->call_flag = _API_FLAG_IDLE;
API_CALL_MEM->id = 0;
API_CALL_MEM->int_id = (-1);
api_prepare_args(args);
core1_info.ivt_addr = (uintptr_t)ivt;
core1_info.ready = false;
__DMB();
__ISB();
SEMA_FreeSema(_CONTROL_SEMAPHORE);
__SEV();
__WFE();
}
#include <stdlib.h>
#include "sema.h"
#include "api/dispatcher.h" #include "api/dispatcher.h"
#include "max32665.h" #include "max32665.h"
#include "sema.h"
#include <stdlib.h>
#include <string.h>
/* This function is defined by the generated dispatcher code */
void __api_dispatch_call(api_id_t id, void *buffer);
static volatile bool call_pending = false;
int api_dispatcher_init() int api_dispatcher_init()
{ {
int ret; int ret;
ret = SEMA_Init(NULL); ret = SEMA_Init(NULL);
SEMA_FreeSema(_API_SEMAPHORE);
API_CALL_MEM->reset_stub = __core1_reset;
API_CALL_MEM->call_flag = _API_FLAG_IDLE; API_CALL_MEM->call_flag = _API_FLAG_IDLE;
API_CALL_MEM->id = 0;
API_CALL_MEM->int_id = (-1);
/* /*
* Enable TX events for both cores. * Enable TX events for both cores.
...@@ -20,11 +32,9 @@ int api_dispatcher_init() ...@@ -20,11 +32,9 @@ int api_dispatcher_init()
return ret; return ret;
} }
static bool event_ready = false;
bool api_dispatcher_poll_once() bool api_dispatcher_poll_once()
{ {
if (event_ready) { if (call_pending) {
return false; return false;
} }
...@@ -36,22 +46,27 @@ bool api_dispatcher_poll_once() ...@@ -36,22 +46,27 @@ bool api_dispatcher_poll_once()
return false; return false;
} }
event_ready = true; call_pending = true;
return true; return true;
} }
bool api_dispatcher_poll() bool api_dispatcher_poll()
{ {
if (event_ready) { if (call_pending) {
return true; return true;
} }
return api_dispatcher_poll_once(); return api_dispatcher_poll_once();
} }
bool api_dispatcher_call_pending()
{
return call_pending;
}
api_id_t api_dispatcher_exec() api_id_t api_dispatcher_exec()
{ {
if (!event_ready) { if (!call_pending) {
return 0; return 0;
} }
...@@ -59,7 +74,7 @@ api_id_t api_dispatcher_exec() ...@@ -59,7 +74,7 @@ api_id_t api_dispatcher_exec()
__api_dispatch_call(id, API_CALL_MEM->buffer); __api_dispatch_call(id, API_CALL_MEM->buffer);
API_CALL_MEM->call_flag = _API_FLAG_RETURNED; API_CALL_MEM->call_flag = _API_FLAG_RETURNED;
event_ready = false; call_pending = false;
SEMA_FreeSema(_API_SEMAPHORE); SEMA_FreeSema(_API_SEMAPHORE);
/* Notify the caller that we returned */ /* Notify the caller that we returned */
...@@ -68,3 +83,15 @@ api_id_t api_dispatcher_exec() ...@@ -68,3 +83,15 @@ api_id_t api_dispatcher_exec()
return id; return id;
} }
void api_prepare_args(char *args)
{
/*
* The args are stored with an offset of 0x20 to make sure they won't
* collide with any integer return value of API calls like epic_exec().
*/
API_CALL_MEM->id = 0;
for (size_t i = 0; i <= strlen(args); i++) {
API_CALL_MEM->buffer[i + 0x20] = args[i];
}
}
...@@ -15,6 +15,12 @@ int api_dispatcher_init(); ...@@ -15,6 +15,12 @@ int api_dispatcher_init();
bool api_dispatcher_poll_once(); bool api_dispatcher_poll_once();
bool api_dispatcher_poll(); bool api_dispatcher_poll();
/*
* Check if the other core requested a call or if we are already excuting it.
* Only returns a cached version, without acquiring any locks.
*/
bool api_dispatcher_call_pending();
/* /*
* Attempt to dispatch a call, if one had been polled using * Attempt to dispatch a call, if one had been polled using
* api_dispatcher_poll(). Will return 0 if no call was dispatched or the ID of * api_dispatcher_poll(). Will return 0 if no call was dispatched or the ID of
...@@ -22,5 +28,31 @@ bool api_dispatcher_poll(); ...@@ -22,5 +28,31 @@ bool api_dispatcher_poll();
*/ */
api_id_t api_dispatcher_exec(); api_id_t api_dispatcher_exec();
/* This function is defined by the generated dispatcher code */ /*
void __api_dispatch_call(api_id_t id, void *buffer); * Fill the API buffer with data for l0dable/pycardium startup.
*
* The data is a NULL-terminated string.
*/
void api_prepare_args(char *args);
/*********************************************************************
* core 1 control *
*********************************************************************/
/* Startup core1 into a state where it is ready to receive a payload. */
void core1_boot(void);
/* Reset core 1 into a state where it can accept a new payload */
void core1_trigger_reset(void);
/* Check if core 1 is ready for a new payload */
bool core1_is_ready(void);
/* Wait for core 1 to respond that it is ready for a new payload */
void core1_wait_ready(void);
/* Load a payload into core 1 */
void core1_load(void *ivt, char *args);
/* core 1 reset stub. See epicardium/api/control.c for details. */
void __core1_reset(void);
...@@ -150,18 +150,18 @@ def main(): ...@@ -150,18 +150,18 @@ def main():
/* Autogenerated stub for {id} */ /* Autogenerated stub for {id} */
{return_type} {name}({args_str}) {return_type} {name}({args_str})
{{ {{
const int size = {total_size}; const int epc__apistub_size = {total_size};
void*buffer; void*epc__apistub_buffer;
buffer = _api_call_start({id}, size); epc__apistub_buffer = _api_call_start({id}, epc__apistub_size);
/* TODO: Check if buffer is not NULL */ /* TODO: Check if epc__apistub_buffer is not NULL */
""" """
f_client.write(tmp.format(**decl)) f_client.write(tmp.format(**decl))
for i, arg in enumerate(decl["args"]): for i, arg in enumerate(decl["args"]):
tmp = """\ tmp = """\
*({type}*)(buffer + {offset}) = {name}; *({type}*)(epc__apistub_buffer + {offset}) = {name};
""" """
f_client.write(tmp.format(**arg)) f_client.write(tmp.format(**arg))
...@@ -169,14 +169,14 @@ def main(): ...@@ -169,14 +169,14 @@ def main():
# Don't return if return type is void # Don't return if return type is void
tmp = """\ tmp = """\
_api_call_transact(buffer); _api_call_transact(epc__apistub_buffer);
}} }}
""" """
f_client.write(tmp.format(**decl)) f_client.write(tmp.format(**decl))
else: else:
tmp = """\ tmp = """\
return *({return_type}*)_api_call_transact(buffer); return *({return_type}*)_api_call_transact(epc__apistub_buffer);
}} }}
""" """
f_client.write(tmp.format(**decl)) f_client.write(tmp.format(**decl))
...@@ -231,6 +231,9 @@ void __dispatch_isr(api_int_id_t id) ...@@ -231,6 +231,9 @@ void __dispatch_isr(api_int_id_t id)
f_client.write(tmp.format(**isr)) f_client.write(tmp.format(**isr))
tmp = """\ tmp = """\
case (-1):
/* Ignore a spurious interrupt */
break;
default: default:
epic_isr_default_handler(id); epic_isr_default_handler(id);
break; break;
...@@ -243,10 +246,10 @@ void __dispatch_isr(api_int_id_t id) ...@@ -243,10 +246,10 @@ void __dispatch_isr(api_int_id_t id)
# Generate Dispatcher {{{ # Generate Dispatcher {{{
with open(args.server, "w") as f_dispatcher: with open(args.server, "w") as f_dispatcher:
tmp = """\ tmp = """\
#include "modules/log.h" #include "os/core.h"
#include "{header}" #include "{header}"
void __api_dispatch_call(uint32_t id, void*buffer) void __api_dispatch_call(uint32_t id, void*epc__apistub_buffer)
{{ {{
switch (id) {{ switch (id) {{
""" """
...@@ -261,13 +264,13 @@ void __api_dispatch_call(uint32_t id, void*buffer) ...@@ -261,13 +264,13 @@ void __api_dispatch_call(uint32_t id, void*buffer)
else: else:
tmp = """\ tmp = """\
case {id}: case {id}:
*(({return_type}*)buffer) = {name}(""" *(({return_type}*)epc__apistub_buffer) = {name}("""
f_dispatcher.write(tmp.format(**decl)) f_dispatcher.write(tmp.format(**decl))
for i, arg in enumerate(decl["args"]): for i, arg in enumerate(decl["args"]):
arg["comma"] = "" if i == 0 else "," arg["comma"] = "" if i == 0 else ","
tmp = """{comma} tmp = """{comma}
*({type}*)(buffer + {offset})""" *({type}*)(epc__apistub_buffer + {offset})"""
f_dispatcher.write(tmp.format(**arg)) f_dispatcher.write(tmp.format(**arg))
tmp = """ tmp = """
......
...@@ -10,5 +10,12 @@ void TMR5_IRQHandler(void) ...@@ -10,5 +10,12 @@ void TMR5_IRQHandler(void)
{ {
TMR_IntClear(MXC_TMR5); TMR_IntClear(MXC_TMR5);
__dispatch_isr(API_CALL_MEM->int_id); __dispatch_isr(API_CALL_MEM->int_id);
API_CALL_MEM->int_id = 0; API_CALL_MEM->int_id = (-1);
}
/* Reset Handler */
void __epic_isr_reset(void)
{
API_CALL_MEM->int_id = (-1);
API_CALL_MEM->reset_stub();
} }
#include "api/interrupt-sender.h" #include "api/interrupt-sender.h"
#include "api/common.h" #include "api/common.h"
#include "tmr_utils.h" #include "tmr_utils.h"
#include <assert.h>
static bool int_enabled[EPIC_INT_NUM];
int api_interrupt_trigger(api_int_id_t id)
{
if (id >= EPIC_INT_NUM) {
return -EINVAL;
}
if (int_enabled[id]) {
while (API_CALL_MEM->int_id)
;
API_CALL_MEM->int_id = id;
TMR_TO_Start(MXC_TMR5, 1, 0);
}
return 0;
}
void api_interrupt_init(void) void api_interrupt_init(void)
{ {
API_CALL_MEM->int_id = 0; API_CALL_MEM->int_id = (-1);
for (int i = 0; i < EPIC_INT_NUM; i++) {
int_enabled[i] = false;
}
} }
int epic_interrupt_enable(api_int_id_t int_id) bool api_interrupt_is_ready(void)
{ {
if (int_id >= EPIC_INT_NUM) { return API_CALL_MEM->int_id == (api_int_id_t)(-1);
return -EINVAL;
}
int_enabled[int_id] = true;
return 0;
} }
int epic_interrupt_disable(api_int_id_t int_id) void api_interrupt_trigger(api_int_id_t id)
{ {
if (int_id >= EPIC_INT_NUM) { assert(API_CALL_MEM->int_id == (api_int_id_t)(-1));
return -EINVAL;
}
int_enabled[int_id] = false; API_CALL_MEM->int_id = id;
return 0; TMR_TO_Start(MXC_TMR5, 1, 0);
} }
...@@ -2,4 +2,5 @@ ...@@ -2,4 +2,5 @@
#include "api/common.h" #include "api/common.h"
void api_interrupt_init(void); void api_interrupt_init(void);
int api_interrupt_trigger(api_int_id_t id); bool api_interrupt_is_ready(void);
void api_interrupt_trigger(api_int_id_t id);
/*************************************************************************************************/
/*!
* \file
*
* \brief Application framework main module.
*
* Copyright (c) 2011-2018 Arm Ltd. All Rights Reserved.
* ARM Ltd. confidential and proprietary.
*
* IMPORTANT. Your use of this file is governed by a Software License Agreement
* ("Agreement") that must be accepted in order to download or otherwise receive a
* copy of this file. You may not use or copy this file for any purpose other than
* as described in the Agreement. If you do not agree to all of the terms of the
* Agreement do not use this file and delete all copies in your possession or control;
* if you do not have a copy of the Agreement, you must contact ARM Ltd. prior
* to any use, copying or further distribution of this software.
*/
/*************************************************************************************************/
/* card10:
* copied from: lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/app_main.c
*
* Reason: we need to correctly implement AppHandleNumericComparison
*/
/* clang-format off */
/* clang-formet turned off for easier diffing against orginal file */
#include <string.h>
#include "wsf_types.h"
#include "wsf_msg.h"
#include "sec_api.h"
#include "wsf_trace.h"
#include "wsf_timer.h"
#include "wsf_assert.h"
#include "util/bstream.h"
#include "dm_api.h"
#include "app_api.h"
#include "app_main.h"
#include "app_ui.h"
/**************************************************************************************************
Global Variables
**************************************************************************************************/
/*! Configuration pointer for advertising */
appAdvCfg_t *pAppAdvCfg;
/*! Configuration pointer for extended and periodic advertising */
appExtAdvCfg_t *pAppExtAdvCfg;
/*! Configuration pointer for slave */
appSlaveCfg_t *pAppSlaveCfg;
/*! Configuration pointer for master */
appMasterCfg_t *pAppMasterCfg;
/*! Configuration pointer for extended master */
appExtMasterCfg_t *pAppExtMasterCfg;
/*! Configuration pointer for security */
appSecCfg_t *pAppSecCfg;
/*! Configuration pointer for connection parameter update */
appUpdateCfg_t *pAppUpdateCfg;
/*! Configuration pointer for discovery */
appDiscCfg_t *pAppDiscCfg;
/*! Configuration pointer for application */
appCfg_t *pAppCfg;
/*! Connection control block array */
appConnCb_t appConnCb[DM_CONN_MAX];
/*! WSF handler ID */
wsfHandlerId_t appHandlerId;
/*! Main control block */
appCb_t appCb;
/*! Configuration structure for incoming request actions */
const appReqActCfg_t appReqActCfg =
{
APP_ACT_ACCEPT /*! Action for the remote connection parameter request */
};
/*! Configuration pointer for incoming request actions on master */
appReqActCfg_t *pAppMasterReqActCfg = (appReqActCfg_t *) &appReqActCfg;
/*! Configurable pointer for incoming request actions on slave */
appReqActCfg_t *pAppSlaveReqActCfg = (appReqActCfg_t *) &appReqActCfg;
/*************************************************************************************************/
/*!
* \brief Process messages from the event handler.
*
* \param pMsg Pointer to message.
*
* \return None.
*/
/*************************************************************************************************/
static void appProcMsg(wsfMsgHdr_t *pMsg)
{
switch(pMsg->event)
{
case APP_BTN_POLL_IND:
appUiBtnPoll();
break;
case APP_UI_TIMER_IND:
appUiTimerExpired(pMsg);
break;
default:
break;
}
}
/*************************************************************************************************/
/*!
* \brief Check the bonded state of a connection.
*
* \param connId DM connection ID.
*
* \return Bonded state.
*/
/*************************************************************************************************/
bool_t appCheckBonded(dmConnId_t connId)
{
WSF_ASSERT((connId > 0) && (connId <= DM_CONN_MAX));
return appConnCb[connId - 1].bonded;
}
/*************************************************************************************************/
/*!
* \brief Check the bond-by-LTK state of a connection.
*
* \param connId DM connection ID.
*
* \return Bond-by-LTK state.
*/
/*************************************************************************************************/
bool_t appCheckBondByLtk(dmConnId_t connId)
{
WSF_ASSERT((connId > 0) && (connId <= DM_CONN_MAX));
return appConnCb[connId - 1].bondByLtk;
}
/*************************************************************************************************/
/*!
* \brief Return the number of existing connections of the given role.
*
* \param role Connection role
*
* \return Number of connections.
*/
/*************************************************************************************************/
uint8_t appNumConns(uint8_t role)
{
appConnCb_t *pCcb = appConnCb;
uint8_t i, j;
for (i = DM_CONN_MAX, j = 0; i > 0; i--, pCcb++)
{
if ((pCcb->connId != DM_CONN_ID_NONE) && (DmConnRole(pCcb->connId) == role))
{
j++;
}
}
return j;
}
/*************************************************************************************************/
/*!
* \brief App framework handler init function called during system initialization.
*
* \param handlerID WSF handler ID for App.
*
* \return None.
*/
/*************************************************************************************************/
void AppInit(void)
{
appHandlerId = WsfOsSetNextHandler(AppHandler);
AppDbInit();
}
/*************************************************************************************************/
/*!
* \brief WSF event handler for app framework.
*
* \param event WSF event mask.
* \param pMsg WSF message.
*
* \return None.
*/
/*************************************************************************************************/
void AppHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg)
{
if (pMsg != NULL)
{
APP_TRACE_INFO1("App got evt %d", pMsg->event);
if (pMsg->event >= APP_MASTER_MSG_START)
{
/* pass event to master handler */
(*appCb.masterCback)(pMsg);
}
else if (pMsg->event >= APP_SLAVE_MSG_START)
{
/* pass event to slave handler */
(*appCb.slaveCback)(pMsg);
}
else
{
appProcMsg(pMsg);
}
}
else
{
if (event & APP_BTN_DOWN_EVT)
{
AppUiBtnPressed();
}
}
}
/*************************************************************************************************/
/*!
* \brief Handle a passkey request during pairing. If the passkey is to displayed, a
* random passkey is generated and displayed. If the passkey is to be entered
* the user is prompted to enter the passkey.
*
* \param pAuthReq DM authentication requested event structure.
*
* \return None.
*/
/*************************************************************************************************/
void AppHandlePasskey(dmSecAuthReqIndEvt_t *pAuthReq)
{
uint32_t passkey;
uint8_t buf[SMP_PIN_LEN];
if (pAuthReq->display)
{
/* generate random passkey, limit to 6 digit max */
SecRand((uint8_t *) &passkey, sizeof(uint32_t));
passkey %= 1000000;
/* convert to byte buffer */
buf[0] = UINT32_TO_BYTE0(passkey);
buf[1] = UINT32_TO_BYTE1(passkey);
buf[2] = UINT32_TO_BYTE2(passkey);
/* send authentication response to DM */
DmSecAuthRsp((dmConnId_t) pAuthReq->hdr.param, SMP_PIN_LEN, buf);
/* display passkey */
AppUiDisplayPasskey(passkey);
}
else
{
/* prompt user to enter passkey */
AppUiAction(APP_UI_PASSKEY_PROMPT);
}
}
/*************************************************************************************************/
/*!
* \brief Handle a numeric comparison indication during pairing. The confirmation value is
* displayed and the user is prompted to verify that the local and peer confirmation
* values match.
*
* \param pCnfInd DM confirmation indication event structure.
*
* \return None.
*/
/*************************************************************************************************/
void AppHandleNumericComparison(dmSecCnfIndEvt_t *pCnfInd)
{
uint32_t confirm = DmSecGetCompareValue(pCnfInd->confirm);
/* display confirmation value */
AppUiDisplayConfirmValue(confirm);
/* TODO: Verify that local and peer confirmation values match */
DmSecCompareRsp((dmConnId_t)pCnfInd->hdr.param, TRUE);
}
/*************************************************************************************************/
/*!
* \brief Close the connection with the give connection identifier.
*
* \param connId Connection identifier.
*
* \return None.
*/
/*************************************************************************************************/
void AppConnClose(dmConnId_t connId)
{
DmConnClose(DM_CLIENT_ID_APP, connId, HCI_ERR_REMOTE_TERMINATED);
}
/*************************************************************************************************/
/*!
* \brief Get a list of connection identifiers of open connections.
*
* \param pConnIdList Buffer to hold connection IDs (must be DM_CONN_MAX bytes).
*
* \return Number of open connections.
*
*/
/*************************************************************************************************/
uint8_t AppConnOpenList(dmConnId_t *pConnIdList)
{
appConnCb_t *pCcb = appConnCb;
uint8_t i;
uint8_t pos = 0;
memset(pConnIdList, DM_CONN_ID_NONE, DM_CONN_MAX);
for (i = DM_CONN_MAX; i > 0; i--, pCcb++)
{
if (pCcb->connId != DM_CONN_ID_NONE)
{
pConnIdList[pos++] = pCcb->connId;
}
}
return pos;
}
/*************************************************************************************************/
/*!
* \brief Check if a connection is open.
*
* \return Connection ID of open connection or DM_CONN_ID_NONE if no open connections.
*/
/*************************************************************************************************/
dmConnId_t AppConnIsOpen(void)
{
appConnCb_t *pCcb = appConnCb;
uint8_t i;
for (i = DM_CONN_MAX; i > 0; i--, pCcb++)
{
if (pCcb->connId != DM_CONN_ID_NONE)
{
return pCcb->connId;
}
}
return DM_CONN_ID_NONE;
}
/*************************************************************************************************/
/*!
* \brief Get the device database record handle associated with an open connection.
*
* \param connId Connection identifier.
*
* \return Database record handle or APP_DB_HDL_NONE.
*/
/*************************************************************************************************/
appDbHdl_t AppDbGetHdl(dmConnId_t connId)
{
return appConnCb[connId-1].dbHdl;
}
/*************************************************************************************************/
/*!
* \brief Add device to resolving list.
*
* \param pMsg Pointer to DM callback event message.
* \param connId Connection identifier.
*
* \return None.
*/
/*************************************************************************************************/
void AppAddDevToResList(dmEvt_t *pMsg, dmConnId_t connId)
{
dmSecKey_t *pPeerKey;
appDbHdl_t hdl = appConnCb[connId - 1].dbHdl;
/* if LL Privacy is supported and the peer device has distributed its IRK */
if (HciLlPrivacySupported() && ((pPeerKey = AppDbGetKey(hdl, DM_KEY_IRK, NULL))!= NULL))
{
/* add peer device to resolving list. If all-zero local or peer IRK is used then
LL will only use or accept local or peer identity address respectively. */
DmPrivAddDevToResList(pPeerKey->irk.addrType, pPeerKey->irk.bdAddr, pPeerKey->irk.key,
DmSecGetLocalIrk(), TRUE, pMsg->hdr.param);
}
}
/*************************************************************************************************/
/*!
* \brief Update privacy mode for a given peer device.
*
* \param hdl Database record handle.
*
* \return None.
*/
/*************************************************************************************************/
void AppUpdatePrivacyMode(appDbHdl_t hdl)
{
/* if peer device's been added to resolving list but RPA Only attribute not found on peer device */
if ((hdl != APP_DB_HDL_NONE) && AppDbGetPeerAddedToRl(hdl) && !AppDbGetPeerRpao(hdl))
{
dmSecKey_t *pPeerKey = AppDbGetKey(hdl, DM_KEY_IRK, NULL);
if (pPeerKey != NULL)
{
/* set device privacy mode for this peer device */
DmPrivSetPrivacyMode(pPeerKey->irk.addrType, pPeerKey->irk.bdAddr, DM_PRIV_MODE_DEVICE);
/* make sure resolving list flag cleared */
AppDbSetPeerAddedToRl(hdl, FALSE);
}
}
}
/* clang-format on */
/*************************************************************************************************/
/*!
* \file
*
* \brief Application framework device database example, using simple RAM-based storage.
*
* Copyright (c) 2011-2018 Arm Ltd. All Rights Reserved.
* ARM Ltd. confidential and proprietary.
*
* IMPORTANT. Your use of this file is governed by a Software License Agreement
* ("Agreement") that must be accepted in order to download or otherwise receive a
* copy of this file. You may not use or copy this file for any purpose other than
* as described in the Agreement. If you do not agree to all of the terms of the
* Agreement do not use this file and delete all copies in your possession or control;
* if you do not have a copy of the Agreement, you must contact ARM Ltd. prior
* to any use, copying or further distribution of this software.
*/
/*************************************************************************************************/
/* card10:
* copied from: lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/common/app_db.c
*
* Reason: we need to implement persistent storage for pairings
*/
/* clang-format off */
/* clang-formet turned off for easier diffing against orginal file */
#include <string.h>
#include "wsf_types.h"
#include "wsf_assert.h"
#include "util/bda.h"
#include "app_api.h"
#include "app_main.h"
#include "app_db.h"
#include "app_cfg.h"
/**************************************************************************************************
Data Types
**************************************************************************************************/
/*! Database record */
typedef struct
{
/*! Common for all roles */
bdAddr_t peerAddr; /*! Peer address */
uint8_t addrType; /*! Peer address type */
dmSecIrk_t peerIrk; /*! Peer IRK */
dmSecCsrk_t peerCsrk; /*! Peer CSRK */
uint8_t keyValidMask; /*! Valid keys in this record */
bool_t inUse; /*! TRUE if record in use */
bool_t valid; /*! TRUE if record is valid */
bool_t peerAddedToRl; /*! TRUE if peer device's been added to resolving list */
bool_t peerRpao; /*! TRUE if RPA Only attribute's present on peer device */
/*! For slave local device */
dmSecLtk_t localLtk; /*! Local LTK */
uint8_t localLtkSecLevel; /*! Local LTK security level */
bool_t peerAddrRes; /*! TRUE if address resolution's supported on peer device (master) */
/*! For master local device */
dmSecLtk_t peerLtk; /*! Peer LTK */
uint8_t peerLtkSecLevel; /*! Peer LTK security level */
/*! for ATT server local device */
uint16_t cccTbl[APP_DB_NUM_CCCD]; /*! Client characteristic configuration descriptors */
uint32_t peerSignCounter; /*! Peer Sign Counter */
/*! for ATT client */
uint16_t hdlList[APP_DB_HDL_LIST_LEN]; /*! Cached handle list */
uint8_t discStatus; /*! Service discovery and configuration status */
} appDbRec_t;
/*! Database type */
typedef struct
{
appDbRec_t rec[APP_DB_NUM_RECS]; /*! Device database records */
char devName[ATT_DEFAULT_PAYLOAD_LEN]; /*! Device name */
uint8_t devNameLen; /*! Device name length */
} appDb_t;
/**************************************************************************************************
Local Variables
**************************************************************************************************/
/*! Database */
static appDb_t appDb;
/*! When all records are allocated use this index to determine which to overwrite */
static appDbRec_t *pAppDbNewRec = appDb.rec;
/*************************************************************************************************/
/*!
* \brief Initialize the device database.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbInit(void)
{
return;
}
/*************************************************************************************************/
/*!
* \brief Create a new device database record.
*
* \param addrType Address type.
* \param pAddr Peer device address.
*
* \return Database record handle.
*/
/*************************************************************************************************/
appDbHdl_t AppDbNewRecord(uint8_t addrType, uint8_t *pAddr)
{
appDbRec_t *pRec = appDb.rec;
uint8_t i;
/* find a free record */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
if (!pRec->inUse)
{
break;
}
}
/* if all records were allocated */
if (i == 0)
{
/* overwrite a record */
pRec = pAppDbNewRec;
/* get next record to overwrite */
pAppDbNewRec++;
if (pAppDbNewRec == &appDb.rec[APP_DB_NUM_RECS])
{
pAppDbNewRec = appDb.rec;
}
}
/* initialize record */
memset(pRec, 0, sizeof(appDbRec_t));
pRec->inUse = TRUE;
pRec->addrType = addrType;
BdaCpy(pRec->peerAddr, pAddr);
pRec->peerAddedToRl = FALSE;
pRec->peerRpao = FALSE;
return (appDbHdl_t) pRec;
}
/*************************************************************************************************/
/*!
* \brief Get the next database record for a given record. For the first record, the function
* should be called with 'hdl' set to 'APP_DB_HDL_NONE'.
*
* \param hdl Database record handle.
*
* \return Next record handle found. APP_DB_HDL_NONE, otherwise.
*/
/*************************************************************************************************/
appDbHdl_t AppDbGetNextRecord(appDbHdl_t hdl)
{
appDbRec_t *pRec;
/* if first record is requested */
if (hdl == APP_DB_HDL_NONE)
{
pRec = appDb.rec;
}
/* if valid record passed in */
else if (AppDbRecordInUse(hdl))
{
pRec = (appDbRec_t *)hdl;
pRec++;
}
/* invalid record passed in */
else
{
return APP_DB_HDL_NONE;
}
/* look for next valid record */
while (pRec < &appDb.rec[APP_DB_NUM_RECS])
{
/* if record is in use */
if (pRec->inUse && pRec->valid)
{
/* record found */
return (appDbHdl_t)pRec;
}
/* look for next record */
pRec++;
}
/* end of records */
return APP_DB_HDL_NONE;
}
/*************************************************************************************************/
/*!
* \brief Delete a new device database record.
*
* \param hdl Database record handle.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbDeleteRecord(appDbHdl_t hdl)
{
((appDbRec_t *) hdl)->inUse = FALSE;
}
/*************************************************************************************************/
/*!
* \brief Validate a new device database record. This function is called when pairing is
* successful and the devices are bonded.
*
* \param hdl Database record handle.
* \param keyMask Bitmask of keys to validate.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbValidateRecord(appDbHdl_t hdl, uint8_t keyMask)
{
((appDbRec_t *) hdl)->valid = TRUE;
((appDbRec_t *) hdl)->keyValidMask = keyMask;
}
/*************************************************************************************************/
/*!
* \brief Check if a record has been validated. If it has not, delete it. This function
* is typically called when the connection is closed.
*
* \param hdl Database record handle.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbCheckValidRecord(appDbHdl_t hdl)
{
if (((appDbRec_t *) hdl)->valid == FALSE)
{
AppDbDeleteRecord(hdl);
}
}
/*************************************************************************************************/
/*!
* \brief Check if a database record is in use.
* \param hdl Database record handle.
*
* \return TURE if record in use. FALSE, otherwise.
*/
/*************************************************************************************************/
bool_t AppDbRecordInUse(appDbHdl_t hdl)
{
appDbRec_t *pRec = appDb.rec;
uint8_t i;
/* see if record is in database record list */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
if (pRec->inUse && pRec->valid && (pRec == ((appDbRec_t *)hdl)))
{
return TRUE;
}
}
return FALSE;
}
/*************************************************************************************************/
/*!
* \brief Check if there is a stored bond with any device.
*
* \param hdl Database record handle.
*
* \return TRUE if a bonded device is found, FALSE otherwise.
*/
/*************************************************************************************************/
bool_t AppDbCheckBonded(void)
{
appDbRec_t *pRec = appDb.rec;
uint8_t i;
/* find a record */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
if (pRec->inUse)
{
return TRUE;
}
}
return FALSE;
}
/*************************************************************************************************/
/*!
* \brief Delete all database records.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbDeleteAllRecords(void)
{
appDbRec_t *pRec = appDb.rec;
uint8_t i;
/* set in use to false for all records */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
pRec->inUse = FALSE;
}
}
/*************************************************************************************************/
/*!
* \brief Find a device database record by peer address.
*
* \param addrType Address type.
* \param pAddr Peer device address.
*
* \return Database record handle or APP_DB_HDL_NONE if not found.
*/
/*************************************************************************************************/
appDbHdl_t AppDbFindByAddr(uint8_t addrType, uint8_t *pAddr)
{
appDbRec_t *pRec = appDb.rec;
uint8_t peerAddrType = DmHostAddrType(addrType);
uint8_t i;
/* find matching record */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
if (pRec->inUse && (pRec->addrType == peerAddrType) && BdaCmp(pRec->peerAddr, pAddr))
{
return (appDbHdl_t) pRec;
}
}
return APP_DB_HDL_NONE;
}
/*************************************************************************************************/
/*!
* \brief Find a device database record by data in an LTK request.
*
* \param encDiversifier Encryption diversifier associated with key.
* \param pRandNum Pointer to random number associated with key.
*
* \return Database record handle or APP_DB_HDL_NONE if not found.
*/
/*************************************************************************************************/
appDbHdl_t AppDbFindByLtkReq(uint16_t encDiversifier, uint8_t *pRandNum)
{
appDbRec_t *pRec = appDb.rec;
uint8_t i;
/* find matching record */
for (i = APP_DB_NUM_RECS; i > 0; i--, pRec++)
{
if (pRec->inUse && (pRec->localLtk.ediv == encDiversifier) &&
(memcmp(pRec->localLtk.rand, pRandNum, SMP_RAND8_LEN) == 0))
{
return (appDbHdl_t) pRec;
}
}
return APP_DB_HDL_NONE;
}
/*************************************************************************************************/
/*!
* \brief Get a key from a device database record.
*
* \param hdl Database record handle.
* \param type Type of key to get.
* \param pSecLevel If the key is valid, the security level of the key.
*
* \return Pointer to key if key is valid or NULL if not valid.
*/
/*************************************************************************************************/
dmSecKey_t *AppDbGetKey(appDbHdl_t hdl, uint8_t type, uint8_t *pSecLevel)
{
dmSecKey_t *pKey = NULL;
/* if key valid */
if ((type & ((appDbRec_t *) hdl)->keyValidMask) != 0)
{
switch(type)
{
case DM_KEY_LOCAL_LTK:
*pSecLevel = ((appDbRec_t *) hdl)->localLtkSecLevel;
pKey = (dmSecKey_t *) &((appDbRec_t *) hdl)->localLtk;
break;
case DM_KEY_PEER_LTK:
*pSecLevel = ((appDbRec_t *) hdl)->peerLtkSecLevel;
pKey = (dmSecKey_t *) &((appDbRec_t *) hdl)->peerLtk;
break;
case DM_KEY_IRK:
pKey = (dmSecKey_t *)&((appDbRec_t *)hdl)->peerIrk;
break;
case DM_KEY_CSRK:
pKey = (dmSecKey_t *)&((appDbRec_t *)hdl)->peerCsrk;
break;
default:
break;
}
}
return pKey;
}
/*************************************************************************************************/
/*!
* \brief Set a key in a device database record.
*
* \param hdl Database record handle.
* \param pKey Key data.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetKey(appDbHdl_t hdl, dmSecKeyIndEvt_t *pKey)
{
switch(pKey->type)
{
case DM_KEY_LOCAL_LTK:
((appDbRec_t *) hdl)->localLtkSecLevel = pKey->secLevel;
((appDbRec_t *) hdl)->localLtk = pKey->keyData.ltk;
break;
case DM_KEY_PEER_LTK:
((appDbRec_t *) hdl)->peerLtkSecLevel = pKey->secLevel;
((appDbRec_t *) hdl)->peerLtk = pKey->keyData.ltk;
break;
case DM_KEY_IRK:
((appDbRec_t *)hdl)->peerIrk = pKey->keyData.irk;
/* make sure peer record is stored using its identity address */
((appDbRec_t *)hdl)->addrType = pKey->keyData.irk.addrType;
BdaCpy(((appDbRec_t *)hdl)->peerAddr, pKey->keyData.irk.bdAddr);
break;
case DM_KEY_CSRK:
((appDbRec_t *)hdl)->peerCsrk = pKey->keyData.csrk;
/* sign counter must be initialized to zero when CSRK is generated */
((appDbRec_t *)hdl)->peerSignCounter = 0;
break;
default:
break;
}
}
/*************************************************************************************************/
/*!
* \brief Get the client characteristic configuration descriptor table.
*
* \param hdl Database record handle.
*
* \return Pointer to client characteristic configuration descriptor table.
*/
/*************************************************************************************************/
uint16_t *AppDbGetCccTbl(appDbHdl_t hdl)
{
return ((appDbRec_t *) hdl)->cccTbl;
}
/*************************************************************************************************/
/*!
* \brief Set a value in the client characteristic configuration table.
*
* \param hdl Database record handle.
* \param idx Table index.
* \param value client characteristic configuration value.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetCccTblValue(appDbHdl_t hdl, uint16_t idx, uint16_t value)
{
WSF_ASSERT(idx < APP_DB_NUM_CCCD);
((appDbRec_t *) hdl)->cccTbl[idx] = value;
}
/*************************************************************************************************/
/*!
* \brief Get the discovery status.
*
* \param hdl Database record handle.
*
* \return Discovery status.
*/
/*************************************************************************************************/
uint8_t AppDbGetDiscStatus(appDbHdl_t hdl)
{
return ((appDbRec_t *) hdl)->discStatus;
}
/*************************************************************************************************/
/*!
* \brief Set the discovery status.
*
* \param hdl Database record handle.
* \param state Discovery status.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetDiscStatus(appDbHdl_t hdl, uint8_t status)
{
((appDbRec_t *) hdl)->discStatus = status;
}
/*************************************************************************************************/
/*!
* \brief Get the cached handle list.
*
* \param hdl Database record handle.
*
* \return Pointer to handle list.
*/
/*************************************************************************************************/
uint16_t *AppDbGetHdlList(appDbHdl_t hdl)
{
return ((appDbRec_t *) hdl)->hdlList;
}
/*************************************************************************************************/
/*!
* \brief Set the cached handle list.
*
* \param hdl Database record handle.
* \param pHdlList Pointer to handle list.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetHdlList(appDbHdl_t hdl, uint16_t *pHdlList)
{
memcpy(((appDbRec_t *) hdl)->hdlList, pHdlList, sizeof(((appDbRec_t *) hdl)->hdlList));
}
/*************************************************************************************************/
/*!
* \brief Get the device name.
*
* \param pLen Returned device name length.
*
* \return Pointer to UTF-8 string containing device name or NULL if not set.
*/
/*************************************************************************************************/
char *AppDbGetDevName(uint8_t *pLen)
{
/* if first character of name is NULL assume it is uninitialized */
if (appDb.devName[0] == 0)
{
*pLen = 0;
return NULL;
}
else
{
*pLen = appDb.devNameLen;
return appDb.devName;
}
}
/*************************************************************************************************/
/*!
* \brief Set the device name.
*
* \param len Device name length.
* \param pStr UTF-8 string containing device name.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetDevName(uint8_t len, char *pStr)
{
/* check for maximum device length */
len = (len <= sizeof(appDb.devName)) ? len : sizeof(appDb.devName);
memcpy(appDb.devName, pStr, len);
}
/*************************************************************************************************/
/*!
* \brief Get address resolution attribute value read from a peer device.
*
* \param hdl Database record handle.
*
* \return TRUE if address resolution is supported in peer device. FALSE, otherwise.
*/
/*************************************************************************************************/
bool_t AppDbGetPeerAddrRes(appDbHdl_t hdl)
{
return ((appDbRec_t *)hdl)->peerAddrRes;
}
/*************************************************************************************************/
/*!
* \brief Set address resolution attribute value for a peer device.
*
* \param hdl Database record handle.
* \param addrRes Address resolution attribue value.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetPeerAddrRes(appDbHdl_t hdl, uint8_t addrRes)
{
((appDbRec_t *)hdl)->peerAddrRes = addrRes;
}
/*************************************************************************************************/
/*!
* \brief Get sign counter for a peer device.
*
* \param hdl Database record handle.
*
* \return Sign counter for peer device.
*/
/*************************************************************************************************/
uint32_t AppDbGetPeerSignCounter(appDbHdl_t hdl)
{
return ((appDbRec_t *)hdl)->peerSignCounter;
}
/*************************************************************************************************/
/*!
* \brief Set sign counter for a peer device.
*
* \param hdl Database record handle.
* \param signCounter Sign counter for peer device.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetPeerSignCounter(appDbHdl_t hdl, uint32_t signCounter)
{
((appDbRec_t *)hdl)->peerSignCounter = signCounter;
}
/*************************************************************************************************/
/*!
* \brief Get the peer device added to resolving list flag value.
*
* \param hdl Database record handle.
*
* \return TRUE if peer device's been added to resolving list. FALSE, otherwise.
*/
/*************************************************************************************************/
bool_t AppDbGetPeerAddedToRl(appDbHdl_t hdl)
{
return ((appDbRec_t *)hdl)->peerAddedToRl;
}
/*************************************************************************************************/
/*!
* \brief Set the peer device added to resolving list flag to a given value.
*
* \param hdl Database record handle.
* \param peerAddedToRl Peer device added to resolving list flag value.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetPeerAddedToRl(appDbHdl_t hdl, bool_t peerAddedToRl)
{
((appDbRec_t *)hdl)->peerAddedToRl = peerAddedToRl;
}
/*************************************************************************************************/
/*!
* \brief Get the resolvable private address only attribute flag for a given peer device.
*
* \param hdl Database record handle.
*
* \return TRUE if RPA Only attribute is present on peer device. FALSE, otherwise.
*/
/*************************************************************************************************/
bool_t AppDbGetPeerRpao(appDbHdl_t hdl)
{
return ((appDbRec_t *)hdl)->peerRpao;
}
/*************************************************************************************************/
/*!
* \brief Set the resolvable private address only attribute flag for a given peer device.
*
* \param hdl Database record handle.
* \param peerRpao Resolvable private address only attribute flag value.
*
* \return None.
*/
/*************************************************************************************************/
void AppDbSetPeerRpao(appDbHdl_t hdl, bool_t peerRpao)
{
((appDbRec_t *)hdl)->peerRpao = peerRpao;
}
/* clang-format on */
/*************************************************************************************************/
/*!
* \file
*
* \brief Application framework user interface.
*
* Copyright (c) 2011-2018 Arm Ltd. All Rights Reserved.
* ARM Ltd. confidential and proprietary.
*
* IMPORTANT. Your use of this file is governed by a Software License Agreement
* ("Agreement") that must be accepted in order to download or otherwise receive a
* copy of this file. You may not use or copy this file for any purpose other than
* as described in the Agreement. If you do not agree to all of the terms of the
* Agreement do not use this file and delete all copies in your possession or control;
* if you do not have a copy of the Agreement, you must contact ARM Ltd. prior
* to any use, copying or further distribution of this software.
*/
/*************************************************************************************************/
#include "wsf_types.h"
#include "wsf_os.h"
#include "wsf_trace.h"
#include "app_ui.h"
/* card10:
* copied from: lib/sdk/Libraries/BTLE/stack/ble-profiles/sources/apps/app/common/app_ui.c
*
* Reason: has several user interactions which we likley have to implement
*/
/* clang-format off */
/* clang-formet turned off for easier diffing against orginal file */
/**************************************************************************************************
Global Variables
**************************************************************************************************/
/*! \brief Callback struct */
appUiCback_t appUiCbackTbl;
/*************************************************************************************************/
/*!
* \brief Perform a user interface action based on the event value passed to the function.
*
* \param event User interface event value.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiAction(uint8_t event)
{
switch (event)
{
case APP_UI_NONE:
/* no action */
break;
case APP_UI_RESET_CMPL:
APP_TRACE_INFO0(">>> Reset complete <<<");
break;
case APP_UI_ADV_START:
APP_TRACE_INFO0(">>> Advertising started <<<");
break;
case APP_UI_ADV_STOP:
APP_TRACE_INFO0(">>> Advertising stopped <<<");
break;
case APP_UI_SCAN_START:
APP_TRACE_INFO0(">>> Scanning started <<<");
break;
case APP_UI_SCAN_STOP:
APP_TRACE_INFO0(">>> Scanning stopped <<<");
break;
case APP_UI_SCAN_REPORT:
APP_TRACE_INFO0(">>> Scan data received from peer <<<");
break;
case APP_UI_CONN_OPEN:
APP_TRACE_INFO0(">>> Connection opened <<<");
break;
case APP_UI_CONN_CLOSE:
APP_TRACE_INFO0(">>> Connection closed <<<");
break;
case APP_UI_SEC_PAIR_CMPL:
APP_TRACE_INFO0(">>> Pairing completed successfully <<<");
break;
case APP_UI_SEC_PAIR_FAIL:
APP_TRACE_INFO0(">>> Pairing failed <<<");
break;
case APP_UI_SEC_ENCRYPT:
APP_TRACE_INFO0(">>> Connection encrypted <<<");
break;
case APP_UI_SEC_ENCRYPT_FAIL:
APP_TRACE_INFO0(">>> Encryption failed <<<");
break;
case APP_UI_PASSKEY_PROMPT:
APP_TRACE_INFO0(">>> Prompt user to enter passkey <<<");
break;
case APP_UI_ALERT_CANCEL:
APP_TRACE_INFO0(">>> Cancel a low or high alert <<<");
break;
case APP_UI_ALERT_LOW:
APP_TRACE_INFO0(">>> Low alert <<<");
break;
case APP_UI_ALERT_HIGH:
APP_TRACE_INFO0(">>> High alert <<<");
break;
case APP_UI_ADV_SET_START_IND:
APP_TRACE_INFO0(">>> Advertising set(s) started <<<");
break;
case APP_UI_ADV_SET_STOP_IND:
APP_TRACE_INFO0(">>> Advertising set(s) stopped <<<");
break;
case APP_UI_SCAN_REQ_RCVD_IND:
APP_TRACE_INFO0(">>> Scan request received <<<");
break;
case APP_UI_EXT_SCAN_START_IND:
APP_TRACE_INFO0(">>> Extended scanning started <<<");
break;
case APP_UI_EXT_SCAN_STOP_IND:
APP_TRACE_INFO0(">>> Extended scanning stopped <<<");
break;
case APP_UI_PER_ADV_SET_START_IND:
APP_TRACE_INFO0(">>> Periodic advertising set started <<<");
break;
case APP_UI_PER_ADV_SET_STOP_IND:
APP_TRACE_INFO0(">>> Periodic advertising set stopped <<<");
break;
case APP_UI_PER_ADV_SYNC_EST_IND:
APP_TRACE_INFO0(">>> Periodic advertising sync established <<<");
break;
case APP_UI_PER_ADV_SYNC_LOST_IND:
APP_TRACE_INFO0(">>> Periodic advertising sync lost <<<");
break;
default:
break;
}
if (appUiCbackTbl.actionCback)
{
(*appUiCbackTbl.actionCback)(event);
}
}
/*************************************************************************************************/
/*!
* \brief Display a passkey.
*
* \param passkey Passkey to display.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiDisplayPasskey(uint32_t passkey)
{
APP_TRACE_INFO1(">>> Passkey: %d <<<", passkey);
}
/*************************************************************************************************/
/*!
* \brief Display a confirmation value.
*
* \param confirm Confirm value to display.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiDisplayConfirmValue(uint32_t confirm)
{
APP_TRACE_INFO1(">>> Confirm Value: %d <<<", confirm);
}
/*************************************************************************************************/
/*!
* \brief Display an RSSI value.
*
* \param rssi Rssi value to display.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiDisplayRssi(int8_t rssi)
{
APP_TRACE_INFO1(">>> RSSI: %d dBm<<<", rssi);
}
/*************************************************************************************************/
/*!
* \brief Handle a UI timer expiration event.
*
* \param pMsg Pointer to message.
*
* \return None.
*/
/*************************************************************************************************/
void appUiTimerExpired(wsfMsgHdr_t *pMsg)
{
}
/*************************************************************************************************/
/*!
* \brief Perform button press polling. This function is called to handle WSF
* message APP_BTN_POLL_IND.
*
* \return None.
*/
/*************************************************************************************************/
void appUiBtnPoll(void)
{
if (appUiCbackTbl.btnPollCback)
{
(*appUiCbackTbl.btnPollCback)();
}
}
/*************************************************************************************************/
/*!
* \brief Handle a hardware button press. This function is called to handle WSF
* event APP_BTN_DOWN_EVT.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiBtnPressed(void)
{
}
/*************************************************************************************************/
/*!
* \brief Register a callback function to receive application button press events.
*
* \return None.
*
* \note Registered by application to receive button events
*/
/*************************************************************************************************/
void AppUiBtnRegister(appUiBtnCback_t btnCback)
{
appUiCbackTbl.btnCback = btnCback;
}
/*************************************************************************************************/
/*!
* \brief Register a callback function to receive action events.
*
* \return None.
*
* \note Registered by platform
*/
/*************************************************************************************************/
void AppUiActionRegister(appUiActionCback_t actionCback)
{
appUiCbackTbl.actionCback = actionCback;
}
/*************************************************************************************************/
/*!
* \brief Register a callback function to receive APP_BTN_POLL_IND events.
*
* \return None.
*
* \note Registered by platform
*/
/*************************************************************************************************/
void AppUiBtnPollRegister(appUiBtnPollCback_t btnPollCback)
{
appUiCbackTbl.btnPollCback = btnPollCback;
}
/*************************************************************************************************/
/*!
* \brief Play a sound.
*
* \param pSound Pointer to sound tone/duration array.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiSoundPlay(const appUiSound_t *pSound)
{
}
/*************************************************************************************************/
/*!
* \brief Stop the sound that is currently playing.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiSoundStop(void)
{
}
/*************************************************************************************************/
/*!
* \brief Button test function-- for test purposes only.
*
* \return None.
*/
/*************************************************************************************************/
void AppUiBtnTest(uint8_t btn)
{
if (appUiCbackTbl.btnCback)
{
(*appUiCbackTbl.btnCback)(btn);
}
}
/* clang-format on */
#include "modules/log.h" #include "epicardium.h"
#include "os/core.h"
#include "fs_util.h" #include "os/config.h"
#include "fs/fs_util.h"
#include "wsf_types.h" #include "wsf_types.h"
#include "wsf_buf.h" #include "wsf_buf.h"
#include "wsf_trace.h" #include "wsf_trace.h"
...@@ -12,12 +13,29 @@ ...@@ -12,12 +13,29 @@
#include "FreeRTOS.h" #include "FreeRTOS.h"
#include "timers.h" #include "timers.h"
#include <machine/endian.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <stdbool.h> #include <stdbool.h>
#define FACTOR 2
#define WSF_BUF_POOLS 6 #define WSF_BUF_POOLS 6
#define WSF_BUF_SIZE 0x1048 #define WSF_BUF_SIZE (0x1048 * FACTOR)
struct log_packet_header {
uint32_t original_length;
uint32_t included_length;
uint32_t packet_flags;
uint32_t cumulative_drops;
uint32_t timestamp_us_h;
uint32_t timestamp_us_l;
};
static uint8_t bdAddr[6] = { 0xCA, 0x4D, 0x10, 0x00, 0x00, 0x00 };
static const uint8_t log_header[] = {
'b', 't', 's', 'n', 'o', 'o', 'p', 0, 0, 0, 0, 1, 0, 0, 0x03, 0xea
};
uint32_t SystemHeapSize = WSF_BUF_SIZE; uint32_t SystemHeapSize = WSF_BUF_SIZE;
uint32_t SystemHeap[WSF_BUF_SIZE / 4]; uint32_t SystemHeap[WSF_BUF_SIZE / 4];
...@@ -30,12 +48,12 @@ static TaskHandle_t ble_task_id = NULL; ...@@ -30,12 +48,12 @@ static TaskHandle_t ble_task_id = NULL;
/* clang-format off */ /* clang-format off */
static wsfBufPoolDesc_t mainPoolDesc[WSF_BUF_POOLS] = static wsfBufPoolDesc_t mainPoolDesc[WSF_BUF_POOLS] =
{ {
{ 16, 8 }, { 16, 8*FACTOR },
{ 32, 4 }, { 32, 4*FACTOR },
{ 64, 4 }, { 64, 4*FACTOR },
{ 128, 4 }, { 128, 4*FACTOR },
{ 256, 4 }, { 256, 4*FACTOR },
{ 512, 4 } { 512, 4*FACTOR }
}; };
/* clang-format on */ /* clang-format on */
...@@ -43,18 +61,20 @@ static StaticTimer_t x; ...@@ -43,18 +61,20 @@ static StaticTimer_t x;
static TimerHandle_t timerWakeup = NULL; static TimerHandle_t timerWakeup = NULL;
static int lasttick = 0; static int lasttick = 0;
static int log_fd;
static bool log_dirty = false;
static bool log_enabled = false;
static int log_lastflushtick = 0;
/*! \brief Stack initialization for app. */ /*! \brief Stack initialization for app. */
extern void LlStackInit(void);
extern void StackInit(void); extern void StackInit(void);
extern void AppInit(void);
extern void bleuart_init(void); extern void bleuart_init(void);
extern void bleFileTransfer_init(void);
extern void bleCard10_init(void); extern void bleCard10_init(void);
extern void bleESS_init(void);
extern void BbBleDrvSetTxPower(int8_t power);
/*************************************************************************************************/
void PalSysAssertTrap(void)
{
while (1) {
}
}
/*************************************************************************************************/ /*************************************************************************************************/
static bool_t myTrace(const uint8_t *pBuf, uint32_t len) static bool_t myTrace(const uint8_t *pBuf, uint32_t len)
{ {
...@@ -67,6 +87,79 @@ static bool_t myTrace(const uint8_t *pBuf, uint32_t len) ...@@ -67,6 +87,79 @@ static bool_t myTrace(const uint8_t *pBuf, uint32_t len)
return FALSE; return FALSE;
} }
/*************************************************************************************************/
void WsfPDump(wsfPDumpType_t pdType, uint16_t length, uint8_t *pBuffer)
{
uint32_t direction;
uint8_t type;
int ret;
if (log_enabled) {
switch (pdType) {
case WSF_PDUMP_TYPE_HCI_CMD:
direction = 0;
type = 0x01;
break;
case WSF_PDUMP_TYPE_HCI_EVT:
direction = 1;
type = 0x04;
break;
case WSF_PDUMP_TYPE_HCI_TX_ACL:
direction = 0;
type = 0x02;
break;
case WSF_PDUMP_TYPE_HCI_RX_ACL:
direction = 1;
type = 0x02;
break;
default:
LOG_WARN("ble", "Unknown packet type to be logged");
return;
}
uint64_t tick = xTaskGetTickCount();
uint64_t timestamp_us = tick * 1000;
struct log_packet_header header = {
.original_length = __htonl(length + 1),
.included_length = __htonl(length + 1),
.packet_flags = __htonl(direction),
.cumulative_drops = __htonl(0),
.timestamp_us_h = __htonl(timestamp_us >> 32),
.timestamp_us_l = __htonl(timestamp_us & 0xFFFFFFFF)
};
ret = epic_file_write(log_fd, &header, sizeof(header));
if (ret != sizeof(header)) {
goto out_err;
}
ret = epic_file_write(log_fd, &type, sizeof(type));
if (ret != sizeof(type)) {
goto out_err;
}
ret = epic_file_write(log_fd, pBuffer, length);
if (ret != length) {
goto out_err;
}
log_dirty = true;
}
return;
out_err:
LOG_WARN("ble", "Log file write failed. Logging diabled");
log_enabled = false;
}
/*************************************************************************************************/
void __wrap_BbBleDrvRand(uint8_t *pBuf, uint8_t len)
{
epic_csprng_read(pBuf, len);
//printf("BbBleDrvRand(%d) = %02x %02x ...\n", len, pBuf[0], pBuf[1]);
}
/*************************************************************************************************/ /*************************************************************************************************/
static void WsfInit(void) static void WsfInit(void)
{ {
...@@ -88,11 +181,26 @@ static void WsfInit(void) ...@@ -88,11 +181,26 @@ static void WsfInit(void)
/* TODO: We need a source of MACs */ /* TODO: We need a source of MACs */
static void setAddress(void) static void setAddress(void)
{ {
uint8_t bdAddr[6] = { 0x02, 0x02, 0x44, 0x8B, 0x05, 0x00 };
char buf[32]; char buf[32];
fs_read_text_file("mac.txt", buf, sizeof(buf)); int result = epic_config_get_string("ble_mac", buf, sizeof(buf));
APP_TRACE_INFO1("mac file contents: %s", buf);
if (result < 0) {
APP_TRACE_INFO0("ble_mac not set. Generating random MAC");
epic_csprng_read(bdAddr + 3, 3);
sprintf(buf,
"%02x:%02x:%02x:%02x:%02x:%02x\n",
bdAddr[0],
bdAddr[1],
bdAddr[2],
bdAddr[3],
bdAddr[4],
bdAddr[5]);
epic_config_set_string("ble_mac", buf);
} else {
APP_TRACE_INFO1("ble_mac: %s", buf);
}
int a, b, c, d, e, f; int a, b, c, d, e, f;
if (sscanf(buf, "%x:%x:%x:%x:%x:%x", &a, &b, &c, &d, &e, &f) == 6) { if (sscanf(buf, "%x:%x:%x:%x:%x:%x", &a, &b, &c, &d, &e, &f) == 6) {
bdAddr[0] = f; bdAddr[0] = f;
...@@ -116,6 +224,11 @@ static void setAddress(void) ...@@ -116,6 +224,11 @@ static void setAddress(void)
HciVsSetBdAddr(bdAddr); HciVsSetBdAddr(bdAddr);
} }
/*************************************************************************************************/ /*************************************************************************************************/
void epic_ble_get_address(uint8_t *addr)
{
memcpy(addr, bdAddr, sizeof(bdAddr));
}
/*************************************************************************************************/
static void vTimerCallback(xTimerHandle pxTimer) static void vTimerCallback(xTimerHandle pxTimer)
{ {
//printf("wake\n"); //printf("wake\n");
...@@ -142,15 +255,42 @@ void WsfTimerNotify(void) ...@@ -142,15 +255,42 @@ void WsfTimerNotify(void)
//printf("WsfTimerNotify\n"); //printf("WsfTimerNotify\n");
// TODO: Can we do this without waking up the task? // TODO: Can we do this without waking up the task?
// xTimerChangePeriodFromISR exists // xTimerChangePeriodFromISR exists
notify(); NVIC->STIR = RSV11_IRQn;
} }
/*************************************************************************************************/ /*************************************************************************************************/
void wsf_ble_signal_event(void) void wsf_ble_signal_event(void)
{ {
//printf("wsf_ble_signal_event\n"); //printf("wsf_ble_signal_event\n");
NVIC->STIR = RSV11_IRQn;
}
/*************************************************************************************************/
void RSV11_IRQHandler(void)
{
notify(); notify();
} }
/*************************************************************************************************/ /*************************************************************************************************/
bool ble_is_enabled(void)
{
/*
* 0 = unknown, check config
* 1 = disabled
* 2 = enabled
*/
static int ble_state = 0;
if (ble_state == 0) {
if (config_get_boolean_with_default("ble_enable", false)) {
ble_state = 2;
LOG_INFO("ble", "BLE is enabled.");
} else {
ble_state = 1;
LOG_INFO("ble", "BLE is disabled.");
}
}
return ble_state == 2;
}
/*************************************************************************************************/
static void scheduleTimer(void) static void scheduleTimer(void)
{ {
bool_t timerRunning; bool_t timerRunning;
...@@ -162,6 +302,13 @@ static void scheduleTimer(void) ...@@ -162,6 +302,13 @@ static void scheduleTimer(void)
if (timerRunning) { if (timerRunning) {
//printf("time_to_next_expire = %d\n", time_to_next_expire); //printf("time_to_next_expire = %d\n", time_to_next_expire);
//printf("change period\n"); //printf("change period\n");
/* We need to make sure not to schedule a 0 ticks timer.
* Maybe it would also be enough to simply call the dispatcher
* in this case... */
if (time_to_next_expire == 0) {
time_to_next_expire = 1;
}
if (timerWakeup != NULL) { if (timerWakeup != NULL) {
xTimerChangePeriod( xTimerChangePeriod(
timerWakeup, timerWakeup,
...@@ -177,22 +324,131 @@ static void scheduleTimer(void) ...@@ -177,22 +324,131 @@ static void scheduleTimer(void)
} }
} }
/*************************************************************************************************/ /*************************************************************************************************/
static void log_flush(void)
{
int tick = xTaskGetTickCount();
if (tick - log_lastflushtick > 5000) {
log_lastflushtick = tick;
if (log_dirty) {
log_dirty = false;
LOG_INFO("ble", "Flushing log");
epic_file_flush(log_fd);
}
}
}
/*************************************************************************************************/
static int log_rotate(void)
{
int i;
char filename_old[16];
char filename_new[16];
struct epic_stat stat;
int ret;
epic_file_stat("logs", &stat);
if (stat.type == EPICSTAT_FILE) {
return -1;
}
if (stat.type == EPICSTAT_NONE) {
ret = epic_file_mkdir("logs");
if (ret < 0) {
return ret;
}
}
if (epic_file_stat("logs/ble9.log", &stat) == 0) {
epic_file_unlink("logs/ble9.log");
}
for (i = 8; i > 0; i--) {
sprintf(filename_old, "logs/ble%d.log", i);
sprintf(filename_new, "logs/ble%d.log", i + 1);
if (epic_file_stat(filename_old, &stat) == 0) {
epic_file_rename(filename_old, filename_new);
}
}
if (epic_file_stat("logs/ble.log", &stat) == 0) {
epic_file_rename("logs/ble.log", "logs/ble1.log");
}
return 0;
}
/*************************************************************************************************/
static void log_init(void)
{
int ret;
log_enabled = config_get_boolean_with_default("ble_log_enable", false);
if (!log_enabled) {
return;
}
LOG_INFO("ble", "Log is enabled");
if (log_rotate() < 0) {
log_enabled = false;
LOG_WARN("ble", "Can not rotate logs. Logging disabled.");
return;
}
log_fd = epic_file_open("logs/ble.log", "w");
if (log_fd < 0) {
log_enabled = false;
LOG_WARN("ble", "Can not create log file. Logging disabled.");
return;
}
ret = epic_file_write(log_fd, log_header, sizeof(log_header));
if (ret != sizeof(log_header)) {
log_enabled = false;
LOG_WARN(
"ble",
"Can not create log file header. Logging disabled."
);
return;
}
}
/*************************************************************************************************/
void vBleTask(void *pvParameters) void vBleTask(void *pvParameters)
{ {
ble_task_id = xTaskGetCurrentTaskHandle(); ble_task_id = xTaskGetCurrentTaskHandle();
/*
* Delay BLE startup by a bit because it locks up Epicardium otherwise.
*/
vTaskDelay(pdMS_TO_TICKS(500));
log_init();
/* We are going to execute FreeRTOS functions from callbacks
* coming from this interrupt. Its priority needs to be
* reduced to allow this. */
NVIC_SetPriority(RSV11_IRQn, 2);
NVIC_EnableIRQ(RSV11_IRQn);
WsfInit(); WsfInit();
taskENTER_CRITICAL();
/* Critical section to prevent a loop in iq_capture2 / meas_freq in
* /home/maxim/Documents/src/BLE/mcbusw/Hardware/Micro/ME14/Firmware/trunk/NDALibraries/BTLE/phy/dbb/prot/ble/pan2g5/afe/max32665/board_config.c:275
* if BHI160 and -Ddebug_prints=true is enabled. See #115. */
LlStackInit();
taskEXIT_CRITICAL();
StackInit(); StackInit();
BbBleDrvSetTxPower(0);
setAddress(); setAddress();
NVIC_SetPriority(BTLE_SFD_TO_IRQn, 2);
NVIC_SetPriority(BTLE_TX_DONE_IRQn, 2);
NVIC_SetPriority(BTLE_RX_RCVD_IRQn, 2);
AppInit();
BleStart(); BleStart();
AttsDynInit();
bleuart_init(); bleuart_init();
bleFileTransfer_init();
bleCard10_init(); bleCard10_init();
bleESS_init();
lasttick = xTaskGetTickCount(); lasttick = xTaskGetTickCount();
...@@ -208,5 +464,8 @@ void vBleTask(void *pvParameters) ...@@ -208,5 +464,8 @@ void vBleTask(void *pvParameters)
ulTaskNotifyTake(pdTRUE, portTICK_PERIOD_MS * 1000); ulTaskNotifyTake(pdTRUE, portTICK_PERIOD_MS * 1000);
wsfOsDispatcher(); wsfOsDispatcher();
scheduleTimer(); scheduleTimer();
if (log_enabled) {
log_flush();
}
} }
} }