Repository: GorgonMeducer/Pico_Template
Branch: main
Commit: 5a4de394f2d9
Files: 38
Total size: 846.4 KB
Directory structure:
gitextract_n9e5hryi/
├── .gitattributes
├── .gitignore
├── .gitmodules
├── LICENSE
├── README.md
├── documents/
│ └── Pictures/
│ └── enable_lcd_1in3
├── main.c
└── project/
└── mdk/
├── DebugConfig/
│ ├── AC6-DebugInSRAM_RP2040_Core0_1.0.0.dbgconf
│ ├── AC6-RunInSRAM_RP2040_Core0_1.0.0.dbgconf
│ └── AC6-flash_RP2040_Core0_1.0.0.dbgconf
├── RP2040.sct
├── RP2040_debug_in_sram.sct
├── RP2040_run_in_sram.sct
├── RTE/
│ ├── Acceleration/
│ │ ├── DigitsFont.c
│ │ ├── GLCD_Fonts.c
│ │ ├── alarm_clock_font32.c
│ │ ├── alarm_clock_font64.c
│ │ ├── arm_2d_cfg.h
│ │ ├── arm_2d_disp_adapter_0.c
│ │ ├── arm_2d_disp_adapter_0.h
│ │ ├── arm_2d_scene_gas_gauge.c
│ │ ├── arm_2d_scene_gas_gauge.h
│ │ └── ttf2c.py
│ ├── CMSIS-View/
│ │ └── EventRecorderConf.h
│ ├── Compiler/
│ │ └── EventRecorderConf.h
│ ├── Device/
│ │ └── RP2040_Core0/
│ │ ├── env_wrapper.h
│ │ ├── rp2040.dbgconf
│ │ ├── rp2040.sct
│ │ ├── rp2040_no_flash.sct
│ │ ├── startup_rp2040.c
│ │ └── system_rp2040.c
│ └── Utilities/
│ └── core_portme.h
├── arm_2d_scene_bubble_charging.c
├── arm_2d_scene_bubble_charging.h
├── debug_with_cmsis-dap.ini
├── debug_with_cmsis-dap_in_ram.ini
├── template.uvoptx
└── template.uvprojx
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto
================================================
FILE: .gitignore
================================================
# Prerequisites
*.d
# Object files
*.o
*.ko
*.obj
*.elf
# Linker output
*.ilk
*.map
*.exp
# Precompiled Headers
*.gch
*.pch
# Libraries
*.lib
*.a
*.la
*.lo
# Shared objects (inc. Windows DLLs)
*.dll
*.so
*.so.*
*.dylib
# Executables
*.out
*.app
*.i*86
*.x86_64
*.hex
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# Kernel Module Compile Results
*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
*.dep
project/mdk/template.uvguix.*
project/mdk/Objects
*.scvd
*.iex
project/mdk/JLinkLog.txt
project/mdk/template.uf2
*._ac
*.__i
*@*
*.00??
project/mdk/RTE/PikaScript
RTE_Components.h
Pre_Include_*
project/mdk/RTE/Acceleration/README.md
project/mdk/RTE/Acceleration/img2c.py
project/mdk/RTE/Acceleration/arm_2d.c
project/mdk/RTE/Utilities/core_portme.c
documents/Pictures/Thumbs.db
================================================
FILE: .gitmodules
================================================
[submodule "bsp"]
path = bsp
url = https://github.com/GorgonMeducer/RP2040_BSP.git
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Pico_Template (v2.3.2)
An MDK template for Raspberry Pi Pico
- Use RPi official [RP2xxxx_DFP](https://www.keil.arm.com/packs/rp2xxx_dfp-raspberrypi/boards/)
- Add Flash Programming algorithm.
- Special thanks to [Aladdin-Wang](https://github.com/Aladdin-Wang). [His extraordinary work](https://github.com/Aladdin-Wang/RP2040_Flash_Algorithm) makes our life much easier!
- Special thanks to [fang316](https://github.com/fang316), whose suggestion improves how the flash programming algorithm is deployed.
- Compiler: Arm Compiler 6.15 and above (Using non-intrusive wrapper to support pico-sdk which is written in GCC)
- Improved BSP support
- Add support for popular [LCD 1.3inc module](https://www.waveshare.com/wiki/Pico-LCD-1.3) : define macro `__PICO_USE_LCD_1IN3__` to enable it.
- Add support for [RP2040 LCD 1.28inch development kit](https://www.waveshare.com/wiki/RP2040-LCD-1.28): define macro `__RP2040_USE_LCD_1IN28__` to enable it.
- Add support for [PR2040 LCD Touch 1.28inch development kit](https://www.waveshare.com/wiki/RP2040-Touch-LCD-1.28): define macro `__RP2040_USE_LCD_TOUCH_1IN28__` to enable it.
- Support an ultra-lightweight python VM: [PikaScript](https://github.com/pikasTech/pikascript) (via cmsis-pack)
- Compatible with CMSIS 5.7.0, CMSIS 6.0.0 and above
- **Ready for running [Arm-2D](https://github.com/ARM-software/Arm-2D) benchmarks**
- **Ready for coremark**
- **Support Debug in MDK**
- [Using CMSIS-DAP](https://github.com/majbthrd/pico-debug) (Validated in MDK and **highly recommended**)
- **Support Flash Downloading**
- Add dedicated project configurations for:
- [**AC6-flash**] Running code in Flash (XIP)
- [**AC6-DebugInSRAM**] "no_flash" mode in the original pico-sdk.
# How to Use
## 1. Get the Pico_Template
I assume that you have the MDK installed on your PC. Please clone the Pico_Template with following command line:
```
mkdir pico-mdk
cd pico-mdk
git clone https://github.com/GorgonMeducer/Pico_Template .
git submodule update --init
```
Instead of using git clone, if you download a release package, then you have to download the [pico-sdk](https://github.com/raspberrypi/pico-sdk) manually and put them into the corresponding folder:
| submodules | URL | Directory |
| ---------- | ------------------------------------------- | --------- |
| bsp | https://github.com/GorgonMeducer/RP2040_BSP | ROOT\bsp |
The project template also depends on [perf_counter](https://github.com/GorgonMeducer/perf_counter) which is deployed with a **cmsis-pack** that you can find in the **MDK pack installer**.
## 2. Use the Template
The MDK project could be found in the path "ROOT\project\mdk". I assume you know how to use MDK for normal compilation.
### 2.1 How to set the Stack and Heap size
Usually, people want to adjust the size of stack and heap, and it is very easy in this template. Please find the file "RP2040.sct" in the same MDK project directory. Find the macro ***STACK_0_SIZE*** for stack and ***HEAP_0_SIZE*** for the heap.
```
#define STACK_0_SIZE (1024*4)
#define STACK_1_SIZE (1024*1)
#define HEAP_0_SIZE (1024*32)
#define HEAP_1_SIZE (1024*1)
```
***NOTE***:
1. Please do **NOT** add "**u**" behind those constant values.
2. The STACK_1_SIZE and HEAP_1_SIZE are not in use. You can set their value to reasonable smaller ones if you do want to reduce the RAM footprint.
### 2.2 How to retarget stdout/stdin
To take advantage of pico-sdk, this template uses bridges to retarget low level functions of stdout/stdin to _read and _write implemented by stdio.c inside pico-sdk.
```
/*----------------------------------------------------------------------------*
* bridge the Arm Compiler's stdio and the pico-sdk's stdio *
*----------------------------------------------------------------------------*/
__attribute__((weak))
int stdin_getchar(void)
{
/*! \note If you don't want to use pico-sdk stdio, then you can implement
*! function by yourself in other c source code. Your scanf will work
*! directly.
*! by default, we use this function to bridge the _read implemented
*! in stdio.c of pico-sdk
*/
int byte;
_read(0, (char *)&byte, 1);
return byte;
}
__attribute__((weak))
int stdout_putchar(int ch)
{
/*! \note If you don't want to use pico-sdk stdio, then you can implement
*! function by yourself in other c source code. Your printf will work
*! directly.
*! by default, we use this function to bridge the _write implemented
*! in stdio.c of pico-sdk
*/
return _write(1, (char *)&ch, 1);
}
```
Those bridge functions are decorated as "weak", hence if you want to retarget ***printf/scanf*** directly to a place where you can "***see through***" and/or ***you have total control***, please implement those bridge functions (without delete the weak version) in one of your c source code, for example, sending chars to USART or storing them to a memory block directly.
**NOTE**: I try to provide you the freedom of choice, and I don't need you to digging deep inside scripts to gain such freedom.
When using configuration**AC6-DebugInSRAM-printf**, all ***printf*** output is retargeted to '**Debug (printf) Viewer**' inside MDK (as shown below) with the help from EventRecorder.

### 2.3 How to debug using pico-debug (CMSIS-DAP)
[Pico-debug](https://github.com/majbthrd/pico-debug) is an open-source project which turns one Cortex-M0+ core in RP2040 into a CMSIS-DAP adapter. It means that without an extra one, you can debug a Pico in MDK with just one USB connector. In order to do so, please [download the latest uf2 file](https://github.com/majbthrd/pico-debug/releases) first.
Pico-Template provides a dedicated project configuration for downloading and debugging code in SRAM. This is the most convenient one and it delivers the best development experience among the three configurations. To use it, please follow the steps below:
1. Boot the Pico with the **BOOTSEL** button pressed.
2. Drag and drop **pico-debug-gimmecache.uf2** to RPI-RP2 mass-storage driver in the explorer. It immediately reboots as a **CMSIS-DAP adapter**. Pico-debug loads as a RAM only `.uf2` image, meaning that it is never written to flash and doesn't replace existing user code.
3. Compile and Debug
5. Enjoy...
**NOTE: **
**1. In this mode, the "RESET" doesn't really work as we expect. If you do want to RESET, please press the "Reset Pico " button shown below:**

**2. If you cannot find this Toolbox, please start your debug session and go to menu "View"->"Toolbox Window".**
### 2.4 How to enable support for the LCD 1.3inc Module
To make it easier for people to turn Pico into a 'game pad', I've picked a popular [1.3inc LCD module](https://www.waveshare.com/wiki/Pico-LCD-1.3) and added a tailored driver into this Pico template.
In brief, it is an
> 1.3inch LCD Display Module For Raspberry Pi Pico, 65K RGB Colors, 240×240 Pixels, SPI Interface
To enable the built in support, please set the macro `__PICO_USE_LCD_1IN3__` to `1` in MDK project configuration as shown below:

After that, you can
- Use the API `GLCD_DrawBitmap()` to flush a display buffer to the 1.3 inch LCD fully or partially (with specified location and size).
```c
extern
void GLCD_DrawBitmap( int_fast16_t x, int_fast16_t y,
int_fast16_t width, int_fast16_t height,
uint16_t *frame_ptr);
```
**NOTE**: an alternative API, i.e. `Disp0_DrawBitmap`, is ready for working with Arm-2D.
-
### 2.5 How to enable support for the RP2040 LCD 1.28inch development kit
To make it easier for people to create watch faces, I've picked a popular [LCD 1.28inch development kit](https://www.waveshare.com/wiki/RP2040-LCD-1.28) and added a tailored driver into this Pico template.
In brief, it is an
> RP2040 MCU Board, With 1.28inch Round LCD, accelerometer and gyroscope Sensor
To enable the built in support, please set the macro `__RP2040_USE_LCD_1IN28__` to `1` in MDK project configuration as shown below:

### 2.6 How to enable support for the RP2040 LCD Touch 1.28inch development kit
To make it easier for people to create watch faces, I've picked a popular [PR2040 LCD Touch 1.28inch development kit](https://www.waveshare.com/wiki/RP2040-Touch-LCD-1.28) and added a tailored driver into this Pico template.
In brief, it is an
> RP2040 MCU Board, With 1.28inch Round Touch LCD, accelerometer and gyroscope Sensor
>
To enable the built in support, please set the macro `__RP2040_USE_LCD_TOUCH_1IN28__` to `1` in MDK project configuration as shown below:

### 2.7 How to enable the PikaScript Support
> PikaScript is an ultra-lightweight Python engine with zero dependencies and zero-configuration, that can run with 4KB of RAM and 32KB of flash (such as STM32G030C8 and STM32F103C8).
Pico-Template supports [PikaScript](https://github.com/pikasTech/pikascript) via cmsis-pack which you can find in the root directory. After the installation, please following the [official guidance](https://pikadoc.readthedocs.io/en/latest/get-start_cmsis-pack.html) to enable the support.
**NOTE**: The first time compilation after ***selecting the Before Build/Rebuild*** might takes a longer time than you thought.

### 2.8 How to run Coremark
With the help from `perf_counter v2.0.0` , we can now run **[coremark](https://github.com/eembc/coremark)** on Pico-Template with just one click in RTE as shown below:

A code in `main()` will run the coremark after that:
```c
int main(void)
{
system_init();
printf("Hello Pico-Template\r\n");
...
#if defined( __PERF_COUNTER_COREMARK__ ) && __PERF_COUNTER_COREMARK__
printf("\r\nRun Coremark 1.0...\r\n");
coremark_main();
#endif
...
while (true) {
breath_led();
...
}
}
```
By default, you can observe the test result in **Debug (printf) View** as shown below:

**NOTE**: **The coremark has to run at least 10 secs to generate a valid result**. Fail to do so, you can change the macro `ITERATIONS` defined in `core_portme.h` to a bigger value and try again.

================================================
FILE: main.c
================================================
/****************************************************************************
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
****************************************************************************/
/*============================ INCLUDES ======================================*/
#include "pico/stdlib.h"
#include "perf_counter.h"
#include "bsp/bsp.h"
#include
#include "RTE_Components.h"
#if defined(RTE_Compiler_EventRecorder) || defined(RTE_CMSIS_View_EventRecorder)
# include
#endif
#if defined(RTE_Script_PikaScript)
# include "pikaScript.h"
#endif
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
# include "arm_2d.h"
# include "arm_2d_helper.h"
# include "arm_2d_disp_adapters.h"
# include "arm_2d_scenes.h"
# include "arm_2d_demos.h"
#endif
#if defined(RTE_Acceleration_Arm_2D_Extra_Benchmark)
# include "arm_2d_benchmark.h"
#endif
# include "arm_2d_scene_bubble_charging.h"
/*============================ MACROS ========================================*/
/*============================ MACROFIED FUNCTIONS ===========================*/
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ PROTOTYPES ====================================*/
/*============================ IMPLEMENTATION ================================*/
void SysTick_Handler(void)
{
}
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
static bool __lcd_sync_handler(void *pTarget)
{
return Disp0_Flush();
}
#endif
static void system_init(void)
{
extern void SystemCoreClockUpdate();
SystemCoreClockUpdate();
/*! \note if you do want to use SysTick in your application, please use
*! init_cycle_counter(true);
*! instead of
*! init_cycle_counter(false);
*/
init_cycle_counter(false);
#if defined(RTE_Compiler_EventRecorder) || defined(RTE_CMSIS_View_EventRecorder)
EventRecorderInitialize(0, 1);
#endif
stdio_init_all();
bsp_init();
#if defined(RTE_Script_PikaScript)
pikaScriptInit();
#endif
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
arm_2d_init();
disp_adapter0_init();
/* register a low level sync-up handler to wait LCD finish rendering the previous frame */
do {
arm_2d_helper_pfb_dependency_t tDependency = {
.evtOnLowLevelSyncUp = {
.fnHandler = &__lcd_sync_handler,
},
};
arm_2d_helper_pfb_update_dependency(&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t,
ARM_2D_PFB_DEPEND_ON_LOW_LEVEL_SYNC_UP,
&tDependency);
} while(0);
#endif
}
int main(void)
{
system_init();
__cycleof__("printf") {
printf("Hello Pico-Template\r\n");
}
#if defined( __PERF_COUNTER_COREMARK__ ) && __PERF_COUNTER_COREMARK__
printf("\r\nRun Coremark 1.0...\r\n");
coremark_main();
#endif
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
# if defined(RTE_Acceleration_Arm_2D_Extra_Benchmark)
arm_2d_run_benchmark();
#else
//arm_2d_scene_bubble_charging_init(&DISP0_ADAPTER);
//arm_2d_scene_player_switch_to_next_scene(&DISP0_ADAPTER);
# endif
#endif
while (true) {
breath_led();
#if defined(__RTE_ACCELERATION_ARM_2D__) || defined(RTE_Acceleration_Arm_2D)
#if ARM_2D_VERSION >= 10105 && !defined(RTE_Acceleration_Arm_2D_Extra_Benchmark)
/* lock framerate: 30 FPS */
disp_adapter0_task(30);
#else
disp_adapter0_task();
#endif
#endif
}
//return 0;
}
================================================
FILE: project/mdk/DebugConfig/AC6-DebugInSRAM_RP2040_Core0_1.0.0.dbgconf
================================================
// File: rp2040.dbgconf
// Version: 1.0.0
// Note: refer to rp2040 data sheet
// <<< Use Configuration Wizard in Context Menu >>>
// <<< end of configuration section >>>
================================================
FILE: project/mdk/DebugConfig/AC6-RunInSRAM_RP2040_Core0_1.0.0.dbgconf
================================================
// File: rp2040.dbgconf
// Version: 1.0.0
// Note: refer to rp2040 data sheet
// <<< Use Configuration Wizard in Context Menu >>>
// <<< end of configuration section >>>
================================================
FILE: project/mdk/DebugConfig/AC6-flash_RP2040_Core0_1.0.0.dbgconf
================================================
// File: rp2040.dbgconf
// Version: 1.0.0
// Note: refer to rp2040 data sheet
// <<< Use Configuration Wizard in Context Menu >>>
// <<< end of configuration section >>>
================================================
FILE: project/mdk/RP2040.sct
================================================
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
; command above MUST be in first line (no comment above!)
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
#define FLASH_SIZE 0x00200000
#define SRAM_SIZE (1024*248)
#define STACK_0_SIZE (1024*4)
#define STACK_1_SIZE (1024*1)
#define HEAP_0_SIZE (1024*32)
#define HEAP_1_SIZE (1024*1)
#define RAMSIZE_VALID (SRAM_SIZE - \
STACK_1_SIZE - HEAP_1_SIZE - \
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
LR_STAGE2_BOOT 0x10000000 0x100 {
ER_STAGE2_BOOT +0 0x100 {
compile_time_choice.o (+RO)
}
ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
}
}
LR_IROM1 0x10000100 FLASH_SIZE - ImageLength(LR_STAGE2_BOOT) { ; load region size_region
ER_FLASH +0 0x00200000 { ; load address = execution address
* (RESET, +First)
*(InRoot$$Sections)
* (.flashdata.*)
* (:gdef:Reset_Handler)
* (:gdef:SystemInit)
.ANY (+RO)
.ANY (+XO)
}
ER_RAM_VECTOR_TABLE 0x20000000 {
.ANY (.ram_vector_table)
}
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
}
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
}
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
}
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
}
ER_MUTEX_ARRAY +0 {
.ANY (.mutex_array.*)
.ANY (.mutex_array)
}
;ER_PREINIT_ARRAY +0 {
; * (.preinit_array.*)
; * (.preinit_array)
;}
RW_IRAM +0 { ; RW data
.ANY (.time_critical.*)
.ANY (+RW +ZI)
}
RW_IRAM_NOINIT +0 UNINIT { ; RW data
.ANY (.after_data.*)
.ANY (.unintialized_data.*)
.ANY (.bss.noinit)
}
}
================================================
FILE: project/mdk/RP2040_debug_in_sram.sct
================================================
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
; command above MUST be in first line (no comment above!)
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
#define FLASH_SIZE 0x00200000
#define SRAM_SIZE (1024*248)
#define STACK_0_SIZE (1024*4)
#define STACK_1_SIZE (1024*1)
#define HEAP_0_SIZE (1024*32)
#define HEAP_1_SIZE (1024*1)
#define RAMSIZE_VALID (SRAM_SIZE - \
STACK_1_SIZE - HEAP_1_SIZE - \
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
;LR_STAGE2_BOOT 0x10000000 0x100 {
; ER_STAGE2_BOOT +0 0x100 {
; compile_time_choice.o (+RO)
; }
; ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
; }
;}
LR_IROM1 0x20000000 SRAM_SIZE { ; load region size_region
ER_BINRAY_INFO +0 {
* (:gdef:Reset_Handler) //!< please always make sure that Reset_Handler is placed here.
* (.binary_info_header)
}
ER_RAM_VECTOR_TABLE +0 ALIGN 256 {
* (.ram_vector_table)
}
ER_FLASH +0 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
* (+RO-DATA)
startup_RP2040.o (+RO)
}
ER_MUTEX_ARRAY +0 {
* (.mutex_array.*)
* (.mutex_array)
}
RW_IRAM_CODE +0 {
* (+RO-CODE)
* (+XO)
}
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
}
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
}
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
}
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
}
;ER_PREINIT_ARRAY +0 {
; * (.preinit_array.*)
; * (.preinit_array)
;}
RW_IRAM +0 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM_UNINIT +0 UNINIT {
.ANY (.bss.noinit)
}
}
================================================
FILE: project/mdk/RP2040_run_in_sram.sct
================================================
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
; command above MUST be in first line (no comment above!)
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
#define FLASH_SIZE 0x00200000
#define SRAM_SIZE (1024*248)
#define STACK_0_SIZE (1024*4)
#define STACK_1_SIZE (1024*1)
#define HEAP_0_SIZE (1024*32)
#define HEAP_1_SIZE (1024*1)
#define RAMSIZE_VALID (SRAM_SIZE - \
STACK_1_SIZE - HEAP_1_SIZE - \
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
LR_STAGE2_BOOT 0x10000000 0x100 {
ER_STAGE2_BOOT +0 0x100 {
compile_time_choice.o (+RO)
}
ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
}
}
LR_IROM1 0x10000100 FLASH_SIZE - ImageLength(LR_STAGE2_BOOT) { ; load region size_region
ER_FLASH +0 0x00200000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
* (+RO-DATA)
startup_RP2040.o (+RO)
}
ER_RAM_VECTOR_TABLE 0x20000000 {
* (.ram_vector_table)
}
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
}
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
}
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
}
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
}
ER_MUTEX_ARRAY +0 {
* (.mutex_array.*)
* (.mutex_array)
}
;ER_PREINIT_ARRAY +0 {
; * (.preinit_array.*)
; * (.preinit_array)
;}
RW_IRAM +0 RAMSIZE_VALID { ; RW data
.ANY (+RW +ZI)
* (+RO-CODE)
* (+XO)
}
RW_IRAM_NO_INIT +0 UNINIT {
.ANY (.bss.noinit)
}
}
================================================
FILE: project/mdk/RTE/Acceleration/DigitsFont.c
================================================
/* Generated on Wed Oct 12 02:22:25 2022 from -i */
/* Re-sized : True */
/* Rotated : 0.0 deg */
#include "arm_2d.h"
#include "arm_2d_helper.h"
#include "arm_extra_lcd_printf.h"
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-variable-declarations"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wgnu-variable-sized-type-not-at-end"
# pragma clang diagnostic ignored "-Wimplicit-int-conversion"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_suppress=1296
#endif
ARM_ALIGN(4) ARM_SECTION("arm2d.asset.c_bmpDigitsFontAlpha")
static const uint8_t c_bmpDigitsFontAlpha[15*336] = {
/* -0- */
0x00, 0x00, 0x00, 0x00, 0x01, 0x5e, 0xb9, 0xd2, 0xbb, 0x65, 0x05, 0x00, 0x00, 0x00, 0x00,
/* -1- */
0x00, 0x00, 0x00, 0x02, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9a, 0x03, 0x00, 0x00, 0x00,
/* -2- */
0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0xe1, 0xb1, 0xe0, 0xff, 0xff, 0x5f, 0x00, 0x00, 0x00,
/* -3- */
0x00, 0x00, 0x07, 0xcd, 0xff, 0xd8, 0x1f, 0x00, 0x1b, 0xd0, 0xff, 0xd7, 0x0b, 0x00, 0x00,
/* -4- */
0x00, 0x00, 0x36, 0xfd, 0xff, 0x5d, 0x00, 0x00, 0x00, 0x53, 0xfe, 0xff, 0x44, 0x00, 0x00,
/* -5- */
0x00, 0x00, 0x65, 0xff, 0xf1, 0x1d, 0x00, 0x00, 0x00, 0x16, 0xeb, 0xff, 0x76, 0x00, 0x00,
/* -6- */
0x00, 0x00, 0x79, 0xff, 0xe2, 0x0d, 0x00, 0x00, 0x00, 0x07, 0xd9, 0xff, 0x88, 0x00, 0x00,
/* -7- */
0x00, 0x00, 0x7b, 0xff, 0xe0, 0x0b, 0x00, 0x00, 0x00, 0x06, 0xd6, 0xff, 0x8a, 0x00, 0x00,
/* -8- */
0x00, 0x00, 0x7b, 0xff, 0xe0, 0x0b, 0x00, 0x00, 0x00, 0x06, 0xd6, 0xff, 0x8a, 0x00, 0x00,
/* -9- */
0x00, 0x00, 0x77, 0xff, 0xe4, 0x0f, 0x00, 0x00, 0x00, 0x08, 0xdc, 0xff, 0x86, 0x00, 0x00,
/* -10- */
0x00, 0x00, 0x5d, 0xff, 0xf7, 0x28, 0x00, 0x00, 0x00, 0x1e, 0xf1, 0xff, 0x6b, 0x00, 0x00,
/* -11- */
0x00, 0x00, 0x28, 0xf7, 0xff, 0x7d, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xfc, 0x34, 0x00, 0x00,
/* -12- */
0x00, 0x00, 0x01, 0xb2, 0xff, 0xef, 0x4e, 0x10, 0x43, 0xe9, 0xff, 0xc3, 0x04, 0x00, 0x00,
/* -13- */
0x00, 0x00, 0x00, 0x34, 0xf5, 0xff, 0xfe, 0xe3, 0xfa, 0xff, 0xfb, 0x44, 0x00, 0x00, 0x00,
/* -14- */
0x00, 0x00, 0x00, 0x00, 0x61, 0xf0, 0xff, 0xff, 0xff, 0xf2, 0x6b, 0x00, 0x00, 0x00, 0x00,
/* -15- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x68, 0x7b, 0x69, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -16- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x49, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -17- */
0x00, 0x00, 0x03, 0x3e, 0x82, 0xc0, 0xed, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -18- */
0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -19- */
0x00, 0x00, 0x56, 0xfd, 0xf3, 0xc6, 0xdf, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -20- */
0x00, 0x00, 0x02, 0x32, 0x24, 0x01, 0xa3, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -21- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -22- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -23- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -24- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -25- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -26- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -27- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa5, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -28- */
0x00, 0x00, 0x00, 0x0d, 0x18, 0x18, 0xae, 0xff, 0xc2, 0x18, 0x19, 0x10, 0x00, 0x00, 0x00,
/* -29- */
0x00, 0x00, 0x40, 0xdb, 0xed, 0xec, 0xf8, 0xff, 0xfa, 0xec, 0xed, 0xe2, 0x51, 0x00, 0x00,
/* -30- */
0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0x00, 0x00,
/* -31- */
0x00, 0x00, 0x0a, 0x59, 0x6b, 0x65, 0x63, 0x64, 0x63, 0x66, 0x6c, 0x5c, 0x0f, 0x00, 0x00,
/* -32- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x7f, 0x8f, 0x78, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -33- */
0x00, 0x00, 0x00, 0x2f, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xa0, 0x0b, 0x00, 0x00, 0x00,
/* -34- */
0x00, 0x00, 0x18, 0xdb, 0xff, 0xff, 0xe7, 0xd6, 0xf3, 0xff, 0xff, 0x94, 0x00, 0x00, 0x00,
/* -35- */
0x00, 0x00, 0x7b, 0xff, 0xfe, 0x85, 0x15, 0x06, 0x2a, 0xc1, 0xff, 0xf5, 0x24, 0x00, 0x00,
/* -36- */
0x00, 0x00, 0x9e, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x37, 0xfe, 0xff, 0x4c, 0x00, 0x00,
/* -37- */
0x00, 0x00, 0x25, 0x80, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x50, 0xfe, 0xff, 0x49, 0x00, 0x00,
/* -38- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xdb, 0xff, 0xee, 0x1b, 0x00, 0x00,
/* -39- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xd7, 0xff, 0xff, 0x74, 0x00, 0x00, 0x00,
/* -40- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xe0, 0xff, 0xff, 0x8f, 0x01, 0x00, 0x00, 0x00,
/* -41- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xed, 0xff, 0xff, 0x8a, 0x02, 0x00, 0x00, 0x00, 0x00,
/* -42- */
0x00, 0x00, 0x00, 0x00, 0x6c, 0xf8, 0xff, 0xfc, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -43- */
0x00, 0x00, 0x05, 0x8b, 0xff, 0xff, 0xef, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -44- */
0x00, 0x0c, 0xaa, 0xff, 0xff, 0xf2, 0x64, 0x18, 0x1d, 0x1d, 0x3c, 0x4e, 0x04, 0x00, 0x00,
/* -45- */
0x00, 0x2a, 0xfe, 0xff, 0xff, 0xfa, 0xeb, 0xf1, 0xf1, 0xf1, 0xfd, 0xff, 0x40, 0x00, 0x00,
/* -46- */
0x00, 0x2b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5d, 0x00, 0x00,
/* -47- */
0x00, 0x0f, 0x61, 0x64, 0x61, 0x5b, 0x5a, 0x5c, 0x5b, 0x5b, 0x62, 0x64, 0x23, 0x00, 0x00,
/* -48- */
0x00, 0x00, 0x00, 0x00, 0x0b, 0x54, 0x8a, 0x99, 0x8d, 0x53, 0x02, 0x00, 0x00, 0x00, 0x00,
/* -49- */
0x00, 0x00, 0x00, 0x51, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xca, 0x24, 0x00, 0x00, 0x00,
/* -50- */
0x00, 0x00, 0x20, 0xf2, 0xff, 0xff, 0xdb, 0xc8, 0xe2, 0xff, 0xff, 0xc0, 0x07, 0x00, 0x00,
/* -51- */
0x00, 0x00, 0x1e, 0xe8, 0xf1, 0x64, 0x0c, 0x01, 0x12, 0x94, 0xff, 0xff, 0x38, 0x00, 0x00,
/* -52- */
0x00, 0x00, 0x00, 0x22, 0x26, 0x00, 0x00, 0x00, 0x00, 0x25, 0xfb, 0xff, 0x53, 0x00, 0x00,
/* -53- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x90, 0xff, 0xff, 0x3a, 0x00, 0x00,
/* -54- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x96, 0xb3, 0xd0, 0xff, 0xff, 0xbf, 0x07, 0x00, 0x00,
/* -55- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x3c, 0x00, 0x00, 0x00,
/* -56- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x9e, 0xcb, 0xee, 0xff, 0xff, 0xc1, 0x10, 0x00, 0x00,
/* -57- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x22, 0xa4, 0xff, 0xff, 0x77, 0x00, 0x00,
/* -58- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xcc, 0xff, 0xbe, 0x00, 0x00,
/* -59- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xc8, 0x00, 0x00,
/* -60- */
0x00, 0x00, 0x41, 0x86, 0x30, 0x03, 0x00, 0x00, 0x0d, 0x53, 0xec, 0xff, 0xa0, 0x00, 0x00,
/* -61- */
0x00, 0x01, 0xcd, 0xff, 0xf5, 0xce, 0xbe, 0xc4, 0xdd, 0xff, 0xff, 0xf7, 0x39, 0x00, 0x00,
/* -62- */
0x00, 0x00, 0x77, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x5b, 0x00, 0x00, 0x00,
/* -63- */
0x00, 0x00, 0x00, 0x31, 0x76, 0x9e, 0xac, 0xa3, 0x8b, 0x58, 0x14, 0x00, 0x00, 0x00, 0x00,
/* -64- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x4c, 0x4d, 0x45, 0x03, 0x00, 0x00, 0x00,
/* -65- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xff, 0xff, 0xe2, 0x0c, 0x00, 0x00, 0x00,
/* -66- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xfd, 0xff, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -67- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xcf, 0xff, 0xff, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -68- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xe6, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -69- */
0x00, 0x00, 0x00, 0x00, 0x1c, 0xe7, 0xff, 0xc9, 0x89, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -70- */
0x00, 0x00, 0x00, 0x00, 0x97, 0xff, 0xfe, 0x45, 0x74, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -71- */
0x00, 0x00, 0x00, 0x36, 0xf7, 0xff, 0xb2, 0x00, 0x7d, 0xff, 0xdc, 0x0c, 0x00, 0x00, 0x00,
/* -72- */
0x00, 0x00, 0x03, 0xbb, 0xff, 0xee, 0x26, 0x00, 0x7a, 0xff, 0xdb, 0x05, 0x00, 0x00, 0x00,
/* -73- */
0x00, 0x00, 0x59, 0xff, 0xff, 0xc6, 0x55, 0x58, 0xab, 0xff, 0xe9, 0x46, 0x02, 0x00, 0x00,
/* -74- */
0x00, 0x00, 0xa6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00,
/* -75- */
0x00, 0x00, 0x9d, 0xf8, 0xf8, 0xf8, 0xf6, 0xf2, 0xf9, 0xff, 0xfd, 0xe1, 0x2f, 0x00, 0x00,
/* -76- */
0x00, 0x00, 0x17, 0x26, 0x26, 0x26, 0x2c, 0x4a, 0xa7, 0xff, 0xe7, 0x34, 0x00, 0x00, 0x00,
/* -77- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xf1, 0xfa, 0xff, 0xfe, 0xe4, 0x31, 0x00, 0x00,
/* -78- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
/* -79- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x45, 0x4a, 0x49, 0x4a, 0x34, 0x02, 0x00, 0x00,
/* -80- */
0x00, 0x00, 0x00, 0x42, 0x5f, 0x5e, 0x5a, 0x55, 0x54, 0x55, 0x4f, 0x18, 0x00, 0x00, 0x00,
/* -81- */
0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x02, 0x00, 0x00,
/* -82- */
0x00, 0x00, 0x00, 0xb4, 0xff, 0xfc, 0xf5, 0xf6, 0xf6, 0xf6, 0xf3, 0x9c, 0x01, 0x00, 0x00,
/* -83- */
0x00, 0x00, 0x00, 0xb4, 0xff, 0xba, 0x20, 0x21, 0x22, 0x22, 0x1e, 0x03, 0x00, 0x00, 0x00,
/* -84- */
0x00, 0x00, 0x00, 0xb4, 0xff, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -85- */
0x00, 0x00, 0x00, 0xb4, 0xff, 0xd0, 0x8d, 0xb3, 0xaf, 0x7b, 0x20, 0x00, 0x00, 0x00, 0x00,
/* -86- */
0x00, 0x00, 0x00, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe5, 0x45, 0x00, 0x00, 0x00,
/* -87- */
0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xe5, 0xbf, 0xcf, 0xff, 0xff, 0xe7, 0x1f, 0x00, 0x00,
/* -88- */
0x00, 0x00, 0x00, 0x40, 0xa5, 0x61, 0x15, 0x00, 0x04, 0x6b, 0xfc, 0xff, 0x81, 0x00, 0x00,
/* -89- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xbc, 0x00, 0x00,
/* -90- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xcc, 0x01, 0x00,
/* -91- */
0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xbe, 0x00, 0x00,
/* -92- */
0x00, 0x01, 0x85, 0xd3, 0x68, 0x14, 0x05, 0x05, 0x15, 0x74, 0xfb, 0xff, 0x85, 0x00, 0x00,
/* -93- */
0x00, 0x03, 0xd1, 0xff, 0xff, 0xe7, 0xd0, 0xd0, 0xe8, 0xff, 0xff, 0xe9, 0x22, 0x00, 0x00,
/* -94- */
0x00, 0x00, 0x45, 0xd7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x3f, 0x00, 0x00, 0x00,
/* -95- */
0x00, 0x00, 0x00, 0x0f, 0x4f, 0x82, 0x99, 0x93, 0x7b, 0x4b, 0x0b, 0x00, 0x00, 0x00, 0x00,
/* -96- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x74, 0xaa, 0xba, 0x9e, 0x3b, 0x00, 0x00,
/* -97- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x7c, 0xf2, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x11, 0x00,
/* -98- */
0x00, 0x00, 0x00, 0x00, 0x04, 0xa1, 0xff, 0xff, 0xfc, 0xc9, 0xb2, 0xe5, 0xbb, 0x0a, 0x00,
/* -99- */
0x00, 0x00, 0x00, 0x00, 0x82, 0xff, 0xff, 0xcc, 0x3f, 0x02, 0x00, 0x12, 0x09, 0x00, 0x00,
/* -100- */
0x00, 0x00, 0x00, 0x33, 0xf9, 0xff, 0xcb, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -101- */
0x00, 0x00, 0x00, 0x90, 0xff, 0xf3, 0x2c, 0x0a, 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -102- */
0x00, 0x00, 0x02, 0xc9, 0xff, 0xc6, 0x83, 0xdd, 0xf0, 0xe1, 0x90, 0x11, 0x00, 0x00, 0x00,
/* -103- */
0x00, 0x00, 0x0c, 0xdd, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x0e, 0x00, 0x00,
/* -104- */
0x00, 0x00, 0x0d, 0xde, 0xff, 0xff, 0xff, 0xbe, 0x75, 0xbf, 0xff, 0xff, 0x7d, 0x00, 0x00,
/* -105- */
0x00, 0x00, 0x05, 0xd4, 0xff, 0xff, 0xad, 0x07, 0x00, 0x0b, 0xc9, 0xff, 0xd4, 0x07, 0x00,
/* -106- */
0x00, 0x00, 0x00, 0xbc, 0xff, 0xed, 0x1e, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xef, 0x19, 0x00,
/* -107- */
0x00, 0x00, 0x00, 0x86, 0xff, 0xec, 0x18, 0x00, 0x00, 0x00, 0x72, 0xff, 0xf0, 0x19, 0x00,
/* -108- */
0x00, 0x00, 0x00, 0x3e, 0xfe, 0xff, 0xa4, 0x1c, 0x0b, 0x33, 0xd9, 0xff, 0xd4, 0x07, 0x00,
/* -109- */
0x00, 0x00, 0x00, 0x03, 0xb3, 0xff, 0xff, 0xec, 0xdb, 0xf7, 0xff, 0xff, 0x70, 0x00, 0x00,
/* -110- */
0x00, 0x00, 0x00, 0x00, 0x1b, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xfb, 0x93, 0x05, 0x00, 0x00,
/* -111- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x49, 0x7f, 0x89, 0x74, 0x32, 0x00, 0x00, 0x00, 0x00,
/* -112- */
0x00, 0x00, 0x23, 0x37, 0x36, 0x34, 0x2e, 0x2c, 0x2c, 0x2c, 0x2f, 0x36, 0x10, 0x00, 0x00,
/* -113- */
0x00, 0x00, 0xa5, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x52, 0x00, 0x00,
/* -114- */
0x00, 0x00, 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x55, 0x00, 0x00,
/* -115- */
0x00, 0x00, 0x95, 0xff, 0xc3, 0x44, 0x45, 0x45, 0x43, 0x8e, 0xff, 0xfe, 0x40, 0x00, 0x00,
/* -116- */
0x00, 0x00, 0x22, 0x7c, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0xdb, 0x0c, 0x00, 0x00,
/* -117- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xeb, 0xff, 0x94, 0x00, 0x00, 0x00,
/* -118- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xff, 0xfe, 0x43, 0x00, 0x00, 0x00,
/* -119- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xdd, 0x0c, 0x00, 0x00, 0x00,
/* -120- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xeb, 0xff, 0x95, 0x00, 0x00, 0x00, 0x00,
/* -121- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xff, 0xfe, 0x45, 0x00, 0x00, 0x00, 0x00,
/* -122- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
/* -123- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xeb, 0xff, 0x97, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -124- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0xff, 0xff, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -125- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xe0, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -126- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -127- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x67, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -128- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x87, 0x7e, 0x43, 0x01, 0x00, 0x00, 0x00, 0x00,
/* -129- */
0x00, 0x00, 0x00, 0x0b, 0x9f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xac, 0x12, 0x00, 0x00, 0x00,
/* -130- */
0x00, 0x00, 0x00, 0x91, 0xff, 0xff, 0xf3, 0xdc, 0xf1, 0xff, 0xff, 0xa4, 0x02, 0x00, 0x00,
/* -131- */
0x00, 0x00, 0x1f, 0xf3, 0xff, 0xc0, 0x29, 0x0a, 0x26, 0xbc, 0xff, 0xfb, 0x2e, 0x00, 0x00,
/* -132- */
0x00, 0x00, 0x42, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0x54, 0x00, 0x00,
/* -133- */
0x00, 0x00, 0x36, 0xfe, 0xff, 0x5d, 0x00, 0x00, 0x00, 0x56, 0xff, 0xff, 0x48, 0x00, 0x00,
/* -134- */
0x00, 0x00, 0x0b, 0xd3, 0xff, 0xe8, 0x6d, 0x41, 0x69, 0xe6, 0xff, 0xe3, 0x14, 0x00, 0x00,
/* -135- */
0x00, 0x00, 0x00, 0x44, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x57, 0x00, 0x00, 0x00,
/* -136- */
0x00, 0x00, 0x00, 0x50, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0x62, 0x00, 0x00, 0x00,
/* -137- */
0x00, 0x00, 0x1a, 0xe7, 0xff, 0xf6, 0x8f, 0x5c, 0x87, 0xf1, 0xff, 0xf2, 0x26, 0x00, 0x00,
/* -138- */
0x00, 0x00, 0x5c, 0xff, 0xfd, 0x65, 0x00, 0x00, 0x00, 0x52, 0xfa, 0xff, 0x71, 0x00, 0x00,
/* -139- */
0x00, 0x00, 0x74, 0xff, 0xec, 0x10, 0x00, 0x00, 0x00, 0x04, 0xe2, 0xff, 0x8a, 0x00, 0x00,
/* -140- */
0x00, 0x00, 0x57, 0xff, 0xfc, 0x6c, 0x05, 0x00, 0x03, 0x5c, 0xf8, 0xff, 0x6c, 0x00, 0x00,
/* -141- */
0x00, 0x00, 0x15, 0xe1, 0xff, 0xff, 0xcf, 0xb5, 0xcb, 0xfd, 0xff, 0xef, 0x21, 0x00, 0x00,
/* -142- */
0x00, 0x00, 0x00, 0x42, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x53, 0x00, 0x00, 0x00,
/* -143- */
0x00, 0x00, 0x00, 0x00, 0x1a, 0x6a, 0xa0, 0xaf, 0xa2, 0x6c, 0x1f, 0x00, 0x00, 0x00, 0x00,
/* -144- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x71, 0x95, 0x84, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -145- */
0x00, 0x00, 0x00, 0x00, 0x59, 0xee, 0xff, 0xff, 0xff, 0xff, 0xa9, 0x0e, 0x00, 0x00, 0x00,
/* -146- */
0x00, 0x00, 0x00, 0x2e, 0xf2, 0xff, 0xfd, 0xd9, 0xed, 0xff, 0xff, 0x9c, 0x00, 0x00, 0x00,
/* -147- */
0x00, 0x00, 0x00, 0x9c, 0xff, 0xf5, 0x57, 0x08, 0x22, 0xbb, 0xff, 0xfb, 0x34, 0x00, 0x00,
/* -148- */
0x00, 0x00, 0x07, 0xd6, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x26, 0xf1, 0xff, 0x85, 0x00, 0x00,
/* -149- */
0x00, 0x00, 0x10, 0xe2, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xff, 0xbd, 0x01, 0x00,
/* -150- */
0x00, 0x00, 0x07, 0xd6, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x39, 0xf4, 0xff, 0xe0, 0x0e, 0x00,
/* -151- */
0x00, 0x00, 0x00, 0x9e, 0xff, 0xf4, 0x4c, 0x00, 0x27, 0xd3, 0xff, 0xff, 0xed, 0x17, 0x00,
/* -152- */
0x00, 0x00, 0x00, 0x30, 0xf3, 0xff, 0xf7, 0xc8, 0xec, 0xff, 0xff, 0xff, 0xf2, 0x1d, 0x00,
/* -153- */
0x00, 0x00, 0x00, 0x00, 0x59, 0xf0, 0xff, 0xff, 0xff, 0xfa, 0xe4, 0xff, 0xe8, 0x12, 0x00,
/* -154- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x8c, 0xae, 0x9a, 0x4a, 0xca, 0xff, 0xc4, 0x03, 0x00,
/* -155- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xff, 0xff, 0x6d, 0x00, 0x00,
/* -156- */
0x00, 0x00, 0x00, 0x0a, 0x1c, 0x00, 0x00, 0x29, 0xa4, 0xff, 0xff, 0xcc, 0x0e, 0x00, 0x00,
/* -157- */
0x00, 0x00, 0x04, 0xb2, 0xef, 0xc2, 0xc7, 0xf3, 0xff, 0xff, 0xd8, 0x29, 0x00, 0x00, 0x00,
/* -158- */
0x00, 0x00, 0x06, 0xd0, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xa8, 0x1d, 0x00, 0x00, 0x00, 0x00,
/* -159- */
0x00, 0x00, 0x00, 0x27, 0x8e, 0xb2, 0xac, 0x82, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -160- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -161- */
0x00, 0x00, 0x15, 0x57, 0x62, 0x60, 0x60, 0x60, 0x53, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -162- */
0x00, 0x00, 0xa1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -163- */
0x00, 0x00, 0x7a, 0xee, 0xf2, 0xfb, 0xff, 0xff, 0xff, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -164- */
0x00, 0x00, 0x00, 0x1c, 0x31, 0xe8, 0xff, 0xff, 0xff, 0xe7, 0x15, 0x00, 0x00, 0x00, 0x00,
/* -165- */
0x00, 0x00, 0x00, 0x00, 0x54, 0xff, 0xfe, 0xa1, 0xfa, 0xff, 0x64, 0x00, 0x00, 0x00, 0x00,
/* -166- */
0x00, 0x00, 0x00, 0x01, 0xb9, 0xff, 0xdb, 0x15, 0xd0, 0xff, 0xc4, 0x03, 0x00, 0x00, 0x00,
/* -167- */
0x00, 0x00, 0x00, 0x2c, 0xf7, 0xff, 0x84, 0x00, 0x76, 0xff, 0xfb, 0x37, 0x00, 0x00, 0x00,
/* -168- */
0x00, 0x00, 0x00, 0x87, 0xff, 0xf4, 0x29, 0x00, 0x20, 0xef, 0xff, 0x95, 0x00, 0x00, 0x00,
/* -169- */
0x00, 0x00, 0x0d, 0xdd, 0xff, 0xf6, 0xc3, 0xc3, 0xc3, 0xf5, 0xff, 0xe7, 0x15, 0x00, 0x00,
/* -170- */
0x00, 0x00, 0x54, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x00, 0x00,
/* -171- */
0x00, 0x00, 0xb4, 0xff, 0xe9, 0xa4, 0xa7, 0xa7, 0xa7, 0xa4, 0xe2, 0xff, 0xc3, 0x00, 0x00,
/* -172- */
0x03, 0x3e, 0xf6, 0xff, 0x9f, 0x0d, 0x00, 0x00, 0x00, 0x09, 0x8e, 0xff, 0xfa, 0x4b, 0x07,
/* -173- */
0xa5, 0xf6, 0xff, 0xff, 0xf7, 0xe4, 0x38, 0x00, 0x2c, 0xde, 0xf6, 0xff, 0xff, 0xf8, 0xb2,
/* -174- */
0xcd, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdc,
/* -175- */
0x1f, 0x56, 0x5c, 0x5c, 0x5c, 0x42, 0x04, 0x00, 0x02, 0x3d, 0x5c, 0x5c, 0x5c, 0x57, 0x23,
/* -176- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -177- */
0x00, 0x33, 0x68, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x67, 0x4b, 0x12, 0x00, 0x00, 0x00, 0x00,
/* -178- */
0x13, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0x54, 0x00, 0x00, 0x00,
/* -179- */
0x0a, 0xb2, 0xf2, 0xff, 0xff, 0xf3, 0xee, 0xef, 0xf5, 0xff, 0xff, 0xf7, 0x3c, 0x00, 0x00,
/* -180- */
0x00, 0x05, 0x4a, 0xfd, 0xff, 0x56, 0x1b, 0x1b, 0x22, 0x60, 0xed, 0xff, 0xa7, 0x00, 0x00,
/* -181- */
0x00, 0x00, 0x31, 0xfd, 0xff, 0x3e, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xff, 0xc8, 0x00, 0x00,
/* -182- */
0x00, 0x00, 0x34, 0xfd, 0xff, 0x41, 0x00, 0x00, 0x0b, 0x57, 0xec, 0xff, 0xac, 0x00, 0x00,
/* -183- */
0x00, 0x00, 0x34, 0xfc, 0xff, 0xd1, 0xbe, 0xc3, 0xdc, 0xff, 0xff, 0xf4, 0x3d, 0x00, 0x00,
/* -184- */
0x00, 0x00, 0x34, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0x48, 0x00, 0x00,
/* -185- */
0x00, 0x00, 0x34, 0xfc, 0xff, 0xc0, 0xa9, 0xa9, 0xb6, 0xd8, 0xff, 0xff, 0xf1, 0x32, 0x00,
/* -186- */
0x00, 0x00, 0x34, 0xfd, 0xff, 0x3d, 0x00, 0x00, 0x00, 0x0a, 0x67, 0xf4, 0xff, 0x99, 0x00,
/* -187- */
0x00, 0x00, 0x30, 0xfd, 0xff, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xc0, 0x00,
/* -188- */
0x00, 0x0b, 0x53, 0xfd, 0xff, 0x62, 0x2a, 0x2a, 0x2a, 0x2e, 0x5d, 0xe6, 0xff, 0xac, 0x00,
/* -189- */
0x0c, 0xbf, 0xf9, 0xff, 0xff, 0xfb, 0xf9, 0xf9, 0xf9, 0xfc, 0xff, 0xff, 0xff, 0x4d, 0x00,
/* -190- */
0x11, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdb, 0x64, 0x00, 0x00,
/* -191- */
0x00, 0x25, 0x52, 0x53, 0x53, 0x53, 0x53, 0x52, 0x52, 0x50, 0x3b, 0x0e, 0x00, 0x00, 0x00,
/* -192- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -193- */
0x00, 0x00, 0x00, 0x00, 0x13, 0x69, 0xac, 0xc1, 0xb9, 0x8e, 0x39, 0x45, 0x55, 0x03, 0x00,
/* -194- */
0x00, 0x00, 0x00, 0x3e, 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xfe, 0xff, 0x34, 0x00,
/* -195- */
0x00, 0x00, 0x32, 0xef, 0xff, 0xff, 0xd8, 0xb0, 0xbd, 0xef, 0xff, 0xff, 0xff, 0x47, 0x00,
/* -196- */
0x00, 0x07, 0xc5, 0xff, 0xfa, 0x72, 0x0b, 0x00, 0x00, 0x25, 0xb6, 0xff, 0xff, 0x47, 0x00,
/* -197- */
0x00, 0x42, 0xff, 0xff, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xff, 0xff, 0x3e, 0x00,
/* -198- */
0x00, 0x80, 0xff, 0xed, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x84, 0x96, 0x0c, 0x00,
/* -199- */
0x00, 0x9a, 0xff, 0xcd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -200- */
0x00, 0x9e, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -201- */
0x00, 0x9c, 0xff, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -202- */
0x00, 0x86, 0xff, 0xe6, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -203- */
0x00, 0x46, 0xff, 0xff, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x7b, 0x1f, 0x00,
/* -204- */
0x00, 0x06, 0xbf, 0xff, 0xfc, 0x8e, 0x26, 0x07, 0x05, 0x13, 0x5b, 0xea, 0xff, 0x91, 0x00,
/* -205- */
0x00, 0x00, 0x25, 0xe0, 0xff, 0xff, 0xf4, 0xd6, 0xd0, 0xe6, 0xff, 0xff, 0xfe, 0x57, 0x00,
/* -206- */
0x00, 0x00, 0x00, 0x27, 0xb5, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0x61, 0x00, 0x00,
/* -207- */
0x00, 0x00, 0x00, 0x00, 0x01, 0x37, 0x74, 0x95, 0x96, 0x82, 0x4f, 0x13, 0x00, 0x00, 0x00,
/* -208- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -209- */
0x00, 0x17, 0x3e, 0x40, 0x3f, 0x3f, 0x3e, 0x3b, 0x25, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -210- */
0x0d, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xc4, 0x54, 0x00, 0x00, 0x00, 0x00,
/* -211- */
0x0c, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x74, 0x00, 0x00, 0x00,
/* -212- */
0x00, 0x15, 0xb1, 0xff, 0xd3, 0x3d, 0x3c, 0x46, 0x7c, 0xe6, 0xff, 0xf9, 0x3b, 0x00, 0x00,
/* -213- */
0x00, 0x00, 0x98, 0xff, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x34, 0xee, 0xff, 0xb9, 0x02, 0x00,
/* -214- */
0x00, 0x00, 0x9b, 0xff, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x84, 0xff, 0xf6, 0x24, 0x00,
/* -215- */
0x00, 0x00, 0x9b, 0xff, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x38, 0xfe, 0xff, 0x44, 0x00,
/* -216- */
0x00, 0x00, 0x9b, 0xff, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x27, 0xf8, 0xff, 0x4e, 0x00,
/* -217- */
0x00, 0x00, 0x9b, 0xff, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2a, 0xfa, 0xff, 0x4c, 0x00,
/* -218- */
0x00, 0x00, 0x9b, 0xff, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xff, 0x3c, 0x00,
/* -219- */
0x00, 0x00, 0x9a, 0xff, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x01, 0xae, 0xff, 0xea, 0x16, 0x00,
/* -220- */
0x00, 0x00, 0xa0, 0xff, 0xc9, 0x0f, 0x0e, 0x11, 0x2f, 0xa1, 0xff, 0xff, 0x95, 0x00, 0x00,
/* -221- */
0x07, 0x9d, 0xf3, 0xff, 0xf9, 0xe2, 0xe1, 0xe7, 0xf9, 0xff, 0xff, 0xce, 0x17, 0x00, 0x00,
/* -222- */
0x11, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfa, 0xac, 0x1b, 0x00, 0x00, 0x00,
/* -223- */
0x00, 0x42, 0x7e, 0x80, 0x80, 0x80, 0x80, 0x7a, 0x63, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -224- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -225- */
0x00, 0x1b, 0x46, 0x48, 0x48, 0x48, 0x48, 0x47, 0x47, 0x47, 0x47, 0x46, 0x38, 0x00, 0x00,
/* -226- */
0x0d, 0xd1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 0x01, 0x00,
/* -227- */
0x0b, 0xc4, 0xfe, 0xff, 0xff, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xcb, 0x01, 0x00,
/* -228- */
0x00, 0x10, 0x58, 0xfb, 0xff, 0x6f, 0x35, 0x31, 0x2d, 0x34, 0xae, 0xff, 0xcc, 0x01, 0x00,
/* -229- */
0x00, 0x00, 0x28, 0xfa, 0xff, 0x44, 0x00, 0x1a, 0x47, 0x00, 0x90, 0xff, 0xcb, 0x00, 0x00,
/* -230- */
0x00, 0x00, 0x2d, 0xfa, 0xff, 0x43, 0x00, 0xbe, 0xff, 0x60, 0x3e, 0xd0, 0x71, 0x00, 0x00,
/* -231- */
0x00, 0x00, 0x2d, 0xf9, 0xff, 0xbe, 0xa4, 0xf3, 0xff, 0x88, 0x00, 0x05, 0x00, 0x00, 0x00,
/* -232- */
0x00, 0x00, 0x2d, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -233- */
0x00, 0x00, 0x2d, 0xf9, 0xff, 0xd6, 0xc5, 0xf7, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -234- */
0x00, 0x00, 0x2d, 0xfa, 0xff, 0x48, 0x00, 0xcc, 0xff, 0x75, 0x01, 0x86, 0xa3, 0x12, 0x00,
/* -235- */
0x00, 0x00, 0x2b, 0xfa, 0xff, 0x46, 0x00, 0x35, 0x6f, 0x0f, 0x19, 0xf8, 0xff, 0x49, 0x00,
/* -236- */
0x00, 0x00, 0x3b, 0xfa, 0xff, 0x56, 0x13, 0x0d, 0x09, 0x10, 0x36, 0xf6, 0xff, 0x52, 0x00,
/* -237- */
0x07, 0x9f, 0xe9, 0xff, 0xff, 0xee, 0xe7, 0xe7, 0xe7, 0xe7, 0xeb, 0xfe, 0xff, 0x51, 0x00,
/* -238- */
0x10, 0xe5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x54, 0x00,
/* -239- */
0x00, 0x3a, 0x75, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x26, 0x00,
/* -240- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -241- */
0x00, 0x00, 0x2f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4a, 0x0c,
/* -242- */
0x00, 0x2d, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x28,
/* -243- */
0x00, 0x23, 0xe0, 0xfc, 0xff, 0xff, 0xfb, 0xfb, 0xfb, 0xfb, 0xfa, 0xfc, 0xff, 0xf1, 0x27,
/* -244- */
0x00, 0x00, 0x15, 0x7b, 0xff, 0xf2, 0x46, 0x2e, 0x28, 0x26, 0x2d, 0x74, 0xff, 0xf2, 0x28,
/* -245- */
0x00, 0x00, 0x00, 0x5a, 0xff, 0xef, 0x17, 0x00, 0x32, 0x43, 0x00, 0x4b, 0xff, 0xf6, 0x22,
/* -246- */
0x00, 0x00, 0x00, 0x5e, 0xff, 0xef, 0x14, 0x0e, 0xec, 0xff, 0x33, 0x16, 0xc0, 0x9d, 0x06,
/* -247- */
0x00, 0x00, 0x00, 0x5e, 0xff, 0xfb, 0xb4, 0xb6, 0xfe, 0xff, 0x50, 0x00, 0x01, 0x00, 0x00,
/* -248- */
0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00,
/* -249- */
0x00, 0x00, 0x00, 0x5e, 0xff, 0xfb, 0xc6, 0xc9, 0xfe, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00,
/* -250- */
0x00, 0x00, 0x00, 0x5e, 0xff, 0xef, 0x18, 0x16, 0xf3, 0xff, 0x3c, 0x00, 0x00, 0x00, 0x00,
/* -251- */
0x00, 0x00, 0x00, 0x5c, 0xff, 0xef, 0x19, 0x00, 0x48, 0x5f, 0x05, 0x00, 0x00, 0x00, 0x00,
/* -252- */
0x00, 0x00, 0x07, 0x6d, 0xff, 0xf1, 0x33, 0x18, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -253- */
0x00, 0x1c, 0xca, 0xf3, 0xff, 0xfe, 0xef, 0xec, 0xe9, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00,
/* -254- */
0x00, 0x31, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcd, 0x02, 0x00, 0x00, 0x00, 0x00,
/* -255- */
0x00, 0x02, 0x47, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x68, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -256- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -257- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -258- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -259- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -260- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -261- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -262- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -263- */
0x00, 0x00, 0x16, 0x54, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x54, 0x1c, 0x00, 0x00,
/* -264- */
0x00, 0x00, 0x48, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00,
/* -265- */
0x00, 0x00, 0x3b, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0x4d, 0x00, 0x00,
/* -266- */
0x00, 0x00, 0x02, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x04, 0x00, 0x00,
/* -267- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -268- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -269- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -270- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -271- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -272- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -273- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -274- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xc3, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -275- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -276- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xff, 0xba, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -277- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -278- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xff, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -279- */
0x00, 0x0b, 0x60, 0x77, 0x77, 0x76, 0xd2, 0xff, 0xdb, 0x77, 0x77, 0x78, 0x64, 0x0f, 0x00,
/* -280- */
0x00, 0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6c, 0x00,
/* -281- */
0x00, 0x35, 0xd4, 0xe6, 0xe6, 0xe5, 0xf7, 0xff, 0xf8, 0xe6, 0xe6, 0xe6, 0xd6, 0x3f, 0x00,
/* -282- */
0x00, 0x00, 0x08, 0x14, 0x14, 0x13, 0xb1, 0xff, 0xbd, 0x13, 0x14, 0x14, 0x09, 0x00, 0x00,
/* -283- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -284- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -285- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -286- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -287- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x51, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -288- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -289- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -290- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -291- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -292- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -293- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -294- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -295- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -296- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -297- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -298- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -299- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -300- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0x78, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -301- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0xf4, 0xff, 0xfc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -302- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xff, 0xff, 0xff, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -303- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x63, 0xa4, 0x72, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -304- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -305- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -306- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -307- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -308- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -309- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -310- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -311- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -312- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -313- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -314- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -315- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -316- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -317- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -318- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -319- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -320- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -321- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -322- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -323- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -324- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x20, 0x28, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -325- */
0x00, 0x00, 0x00, 0x0d, 0x7a, 0xd2, 0xf1, 0xf6, 0xeb, 0xbb, 0x57, 0x01, 0x00, 0x00, 0x00,
/* -326- */
0x00, 0x00, 0x1f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x98, 0x03, 0x00, 0x00,
/* -327- */
0x00, 0x08, 0xbf, 0xff, 0xff, 0xc4, 0x70, 0x5b, 0x84, 0xe1, 0xff, 0xff, 0x66, 0x00, 0x00,
/* -328- */
0x00, 0x4b, 0xff, 0xff, 0xa5, 0x0e, 0x00, 0x00, 0x00, 0x28, 0xd8, 0xff, 0xda, 0x0d, 0x00,
/* -329- */
0x00, 0x87, 0xff, 0xff, 0xdb, 0xd0, 0xd3, 0xd3, 0xd3, 0xce, 0xea, 0xff, 0xfe, 0x36, 0x00,
/* -330- */
0x00, 0x96, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4a, 0x00,
/* -331- */
0x00, 0x7d, 0xff, 0xff, 0xac, 0x8e, 0x93, 0x93, 0x93, 0x92, 0x8f, 0x8b, 0x8c, 0x29, 0x00,
/* -332- */
0x00, 0x39, 0xfd, 0xff, 0xb1, 0x18, 0x00, 0x00, 0x00, 0x00, 0x13, 0x3e, 0x3b, 0x00, 0x00,
/* -333- */
0x00, 0x02, 0x9f, 0xff, 0xff, 0xeb, 0xb3, 0x99, 0xa5, 0xc9, 0xee, 0xff, 0xff, 0x3b, 0x00,
/* -334- */
0x00, 0x00, 0x0d, 0xa3, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x26, 0x00,
/* -335- */
0x00, 0x00, 0x00, 0x01, 0x52, 0xac, 0xd8, 0xe1, 0xda, 0xc3, 0x97, 0x5b, 0x15, 0x00, 0x00,
};
ARM_ALIGN(4) ARM_SECTION("arm2d.asset.c_bmpDigitsFontA2Alpha")
const uint8_t c_bmpDigitsFontA2Alpha[4*336] = {
/* -0- */
0x00, 0xe4, 0x06, 0x00,
/* -1- */
0x00, 0xfe, 0x2f, 0x00,
/* -2- */
0x40, 0xbf, 0x7f, 0x00,
/* -3- */
0xc0, 0x0f, 0xfc, 0x00,
/* -4- */
0xc0, 0x07, 0xf4, 0x01,
/* -5- */
0xd0, 0x03, 0xf0, 0x01,
/* -6- */
0xd0, 0x03, 0xf0, 0x02,
/* -7- */
0xd0, 0x03, 0xf0, 0x02,
/* -8- */
0xd0, 0x03, 0xf0, 0x02,
/* -9- */
0xd0, 0x03, 0xf0, 0x02,
/* -10- */
0xd0, 0x03, 0xf0, 0x01,
/* -11- */
0xc0, 0x07, 0xf4, 0x00,
/* -12- */
0x80, 0x1f, 0xfd, 0x00,
/* -13- */
0x00, 0xff, 0x7f, 0x00,
/* -14- */
0x00, 0xfd, 0x1f, 0x00,
/* -15- */
0x00, 0x50, 0x01, 0x00,
/* -16- */
0x00, 0x40, 0x01, 0x00,
/* -17- */
0x00, 0xfe, 0x03, 0x00,
/* -18- */
0xd0, 0xff, 0x02, 0x00,
/* -19- */
0xd0, 0xff, 0x02, 0x00,
/* -20- */
0x00, 0xe0, 0x02, 0x00,
/* -21- */
0x00, 0xe0, 0x02, 0x00,
/* -22- */
0x00, 0xe0, 0x02, 0x00,
/* -23- */
0x00, 0xe0, 0x02, 0x00,
/* -24- */
0x00, 0xe0, 0x02, 0x00,
/* -25- */
0x00, 0xe0, 0x02, 0x00,
/* -26- */
0x00, 0xe0, 0x02, 0x00,
/* -27- */
0x00, 0xe0, 0x02, 0x00,
/* -28- */
0x00, 0xe0, 0x03, 0x00,
/* -29- */
0xd0, 0xff, 0xff, 0x01,
/* -30- */
0xd0, 0xff, 0xff, 0x01,
/* -31- */
0x40, 0x55, 0x55, 0x00,
/* -32- */
0x00, 0x94, 0x01, 0x00,
/* -33- */
0x00, 0xff, 0x2f, 0x00,
/* -34- */
0xc0, 0xff, 0xbf, 0x00,
/* -35- */
0xd0, 0x0b, 0xfc, 0x00,
/* -36- */
0xe0, 0x03, 0xf0, 0x01,
/* -37- */
0x80, 0x00, 0xf4, 0x01,
/* -38- */
0x00, 0x00, 0xfc, 0x00,
/* -39- */
0x00, 0x00, 0x7f, 0x00,
/* -40- */
0x00, 0xc0, 0x2f, 0x00,
/* -41- */
0x00, 0xf4, 0x0b, 0x00,
/* -42- */
0x00, 0xfd, 0x01, 0x00,
/* -43- */
0x80, 0x7f, 0x00, 0x00,
/* -44- */
0xe0, 0x1f, 0x40, 0x00,
/* -45- */
0xf0, 0xff, 0xff, 0x01,
/* -46- */
0xf0, 0xff, 0xff, 0x01,
/* -47- */
0x50, 0x55, 0x55, 0x00,
/* -48- */
0x00, 0xa4, 0x06, 0x00,
/* -49- */
0x40, 0xff, 0x3f, 0x00,
/* -50- */
0xc0, 0xff, 0xff, 0x00,
/* -51- */
0xc0, 0x07, 0xf8, 0x00,
/* -52- */
0x00, 0x00, 0xf0, 0x01,
/* -53- */
0x00, 0x00, 0xf8, 0x00,
/* -54- */
0x00, 0xa0, 0xbf, 0x00,
/* -55- */
0x00, 0xf4, 0x3f, 0x00,
/* -56- */
0x00, 0xe0, 0xff, 0x00,
/* -57- */
0x00, 0x00, 0xf8, 0x01,
/* -58- */
0x00, 0x00, 0xf0, 0x02,
/* -59- */
0x00, 0x00, 0xe0, 0x03,
/* -60- */
0x90, 0x00, 0xf4, 0x02,
/* -61- */
0xf0, 0xef, 0xff, 0x00,
/* -62- */
0xd0, 0xff, 0x7f, 0x00,
/* -63- */
0x00, 0xa9, 0x06, 0x00,
/* -64- */
0x00, 0x00, 0x15, 0x00,
/* -65- */
0x00, 0x80, 0x3f, 0x00,
/* -66- */
0x00, 0xd0, 0x3f, 0x00,
/* -67- */
0x00, 0xf0, 0x3f, 0x00,
/* -68- */
0x00, 0xf4, 0x3f, 0x00,
/* -69- */
0x00, 0xfc, 0x3e, 0x00,
/* -70- */
0x00, 0x7e, 0x3d, 0x00,
/* -71- */
0x00, 0x2f, 0x3d, 0x00,
/* -72- */
0x80, 0x0f, 0x3d, 0x00,
/* -73- */
0xd0, 0x5f, 0x7e, 0x00,
/* -74- */
0xe0, 0xff, 0xff, 0x01,
/* -75- */
0xe0, 0xff, 0xff, 0x00,
/* -76- */
0x00, 0x40, 0x3e, 0x00,
/* -77- */
0x00, 0xe0, 0xff, 0x00,
/* -78- */
0x00, 0xf0, 0xff, 0x00,
/* -79- */
0x00, 0x40, 0x15, 0x00,
/* -80- */
0x40, 0x55, 0x15, 0x00,
/* -81- */
0x80, 0xff, 0xff, 0x00,
/* -82- */
0x80, 0xff, 0xbf, 0x00,
/* -83- */
0x80, 0x0b, 0x00, 0x00,
/* -84- */
0x80, 0x0b, 0x00, 0x00,
/* -85- */
0x80, 0xaf, 0x06, 0x00,
/* -86- */
0x80, 0xff, 0x7f, 0x00,
/* -87- */
0x80, 0xbf, 0xff, 0x00,
/* -88- */
0x40, 0x06, 0xf4, 0x02,
/* -89- */
0x00, 0x00, 0xf0, 0x02,
/* -90- */
0x00, 0x00, 0xe0, 0x03,
/* -91- */
0x00, 0x00, 0xf0, 0x02,
/* -92- */
0xe0, 0x01, 0xf4, 0x02,
/* -93- */
0xf0, 0xff, 0xff, 0x00,
/* -94- */
0xd0, 0xff, 0x3f, 0x00,
/* -95- */
0x00, 0xa9, 0x05, 0x00,
/* -96- */
0x00, 0x00, 0xa9, 0x00,
/* -97- */
0x00, 0xd0, 0xff, 0x03,
/* -98- */
0x00, 0xf8, 0xef, 0x02,
/* -99- */
0x00, 0xfe, 0x00, 0x00,
/* -100- */
0x00, 0x3f, 0x00, 0x00,
/* -101- */
0x80, 0x0f, 0x00, 0x00,
/* -102- */
0xc0, 0xef, 0x2f, 0x00,
/* -103- */
0xc0, 0xff, 0xbf, 0x00,
/* -104- */
0xc0, 0xbf, 0xf9, 0x01,
/* -105- */
0xc0, 0x2f, 0xf0, 0x03,
/* -106- */
0x80, 0x0f, 0xd0, 0x03,
/* -107- */
0x80, 0x0f, 0xd0, 0x03,
/* -108- */
0x00, 0x2f, 0xf0, 0x03,
/* -109- */
0x00, 0xfe, 0xff, 0x01,
/* -110- */
0x00, 0xf8, 0xbf, 0x00,
/* -111- */
0x00, 0x50, 0x06, 0x00,
/* -112- */
0x00, 0x00, 0x00, 0x00,
/* -113- */
0xe0, 0xff, 0xff, 0x01,
/* -114- */
0xe0, 0xff, 0xff, 0x01,
/* -115- */
0xe0, 0x57, 0xf9, 0x01,
/* -116- */
0x40, 0x00, 0xf8, 0x00,
/* -117- */
0x00, 0x00, 0xbc, 0x00,
/* -118- */
0x00, 0x00, 0x7d, 0x00,
/* -119- */
0x00, 0x00, 0x3e, 0x00,
/* -120- */
0x00, 0x00, 0x2f, 0x00,
/* -121- */
0x00, 0x40, 0x1f, 0x00,
/* -122- */
0x00, 0x80, 0x0f, 0x00,
/* -123- */
0x00, 0xc0, 0x0b, 0x00,
/* -124- */
0x00, 0xd0, 0x07, 0x00,
/* -125- */
0x00, 0xe0, 0x03, 0x00,
/* -126- */
0x00, 0xf0, 0x02, 0x00,
/* -127- */
0x00, 0x40, 0x00, 0x00,
/* -128- */
0x00, 0x90, 0x05, 0x00,
/* -129- */
0x00, 0xfe, 0x2f, 0x00,
/* -130- */
0x80, 0xff, 0xbf, 0x00,
/* -131- */
0xc0, 0x0f, 0xf8, 0x00,
/* -132- */
0xd0, 0x07, 0xf0, 0x01,
/* -133- */
0xc0, 0x07, 0xf4, 0x01,
/* -134- */
0xc0, 0x5f, 0xfd, 0x00,
/* -135- */
0x40, 0xff, 0x7f, 0x00,
/* -136- */
0x40, 0xff, 0x7f, 0x00,
/* -137- */
0xc0, 0x6f, 0xfe, 0x00,
/* -138- */
0xd0, 0x07, 0xf4, 0x01,
/* -139- */
0xd0, 0x03, 0xf0, 0x02,
/* -140- */
0xd0, 0x07, 0xf4, 0x01,
/* -141- */
0xc0, 0xbf, 0xff, 0x00,
/* -142- */
0x40, 0xff, 0x7f, 0x00,
/* -143- */
0x00, 0xa4, 0x06, 0x00,
/* -144- */
0x00, 0x90, 0x06, 0x00,
/* -145- */
0x00, 0xfd, 0x2f, 0x00,
/* -146- */
0x00, 0xff, 0xbf, 0x00,
/* -147- */
0x80, 0x1f, 0xf8, 0x00,
/* -148- */
0xc0, 0x0b, 0xf0, 0x02,
/* -149- */
0xc0, 0x07, 0xf0, 0x02,
/* -150- */
0xc0, 0x0b, 0xf0, 0x03,
/* -151- */
0x80, 0x1f, 0xfc, 0x03,
/* -152- */
0x00, 0xff, 0xff, 0x03,
/* -153- */
0x00, 0xfd, 0xff, 0x03,
/* -154- */
0x00, 0xa0, 0xf6, 0x03,
/* -155- */
0x00, 0x00, 0xf8, 0x01,
/* -156- */
0x00, 0x00, 0xfe, 0x00,
/* -157- */
0x80, 0xff, 0x3f, 0x00,
/* -158- */
0xc0, 0xff, 0x0b, 0x00,
/* -159- */
0x00, 0xaa, 0x00, 0x00,
/* -160- */
0x00, 0x00, 0x00, 0x00,
/* -161- */
0x40, 0x55, 0x01, 0x00,
/* -162- */
0xe0, 0xff, 0x03, 0x00,
/* -163- */
0xd0, 0xff, 0x0b, 0x00,
/* -164- */
0x00, 0xfc, 0x0f, 0x00,
/* -165- */
0x00, 0xbd, 0x1f, 0x00,
/* -166- */
0x00, 0x3e, 0x3f, 0x00,
/* -167- */
0x00, 0x2f, 0x3d, 0x00,
/* -168- */
0x80, 0x0f, 0xbc, 0x00,
/* -169- */
0xc0, 0xff, 0xff, 0x00,
/* -170- */
0xd0, 0xff, 0xff, 0x01,
/* -171- */
0xe0, 0xab, 0xfa, 0x03,
/* -172- */
0xf0, 0x02, 0xe0, 0x07,
/* -173- */
0xfe, 0x0f, 0xfc, 0x2f,
/* -174- */
0xff, 0x1f, 0xfc, 0x3f,
/* -175- */
0x54, 0x05, 0x50, 0x05,
/* -176- */
0x00, 0x00, 0x00, 0x00,
/* -177- */
0x50, 0x55, 0x05, 0x00,
/* -178- */
0xfc, 0xff, 0x7f, 0x00,
/* -179- */
0xf8, 0xff, 0xff, 0x00,
/* -180- */
0xd0, 0x07, 0xf4, 0x02,
/* -181- */
0xc0, 0x03, 0xe0, 0x03,
/* -182- */
0xc0, 0x07, 0xf4, 0x02,
/* -183- */
0xc0, 0xef, 0xff, 0x00,
/* -184- */
0xc0, 0xff, 0xff, 0x01,
/* -185- */
0xc0, 0xaf, 0xfe, 0x03,
/* -186- */
0xc0, 0x03, 0xd0, 0x0b,
/* -187- */
0xc0, 0x03, 0x80, 0x0f,
/* -188- */
0xd0, 0x07, 0xd0, 0x0b,
/* -189- */
0xf8, 0xff, 0xff, 0x07,
/* -190- */
0xfc, 0xff, 0xff, 0x01,
/* -191- */
0x50, 0x55, 0x05, 0x00,
/* -192- */
0x00, 0x00, 0x00, 0x00,
/* -193- */
0x00, 0xe4, 0x4a, 0x01,
/* -194- */
0x00, 0xff, 0xff, 0x03,
/* -195- */
0xc0, 0xbf, 0xfe, 0x07,
/* -196- */
0xf0, 0x07, 0xe0, 0x07,
/* -197- */
0xf4, 0x02, 0xc0, 0x03,
/* -198- */
0xf8, 0x00, 0x80, 0x02,
/* -199- */
0xf8, 0x00, 0x00, 0x00,
/* -200- */
0xf8, 0x00, 0x00, 0x00,
/* -201- */
0xf8, 0x00, 0x00, 0x00,
/* -202- */
0xf8, 0x00, 0x00, 0x00,
/* -203- */
0xf4, 0x02, 0x00, 0x01,
/* -204- */
0xe0, 0x0b, 0xd0, 0x0b,
/* -205- */
0xc0, 0xff, 0xff, 0x07,
/* -206- */
0x00, 0xfe, 0xff, 0x01,
/* -207- */
0x00, 0x90, 0x1a, 0x00,
/* -208- */
0x00, 0x00, 0x00, 0x00,
/* -209- */
0x40, 0x00, 0x00, 0x00,
/* -210- */
0xfc, 0xff, 0x1f, 0x00,
/* -211- */
0xfc, 0xff, 0x7f, 0x00,
/* -212- */
0xe0, 0x43, 0xfd, 0x00,
/* -213- */
0xe0, 0x03, 0xf0, 0x02,
/* -214- */
0xe0, 0x03, 0xe0, 0x03,
/* -215- */
0xe0, 0x03, 0xc0, 0x07,
/* -216- */
0xe0, 0x03, 0xc0, 0x07,
/* -217- */
0xe0, 0x03, 0xc0, 0x07,
/* -218- */
0xe0, 0x03, 0xd0, 0x03,
/* -219- */
0xe0, 0x03, 0xe0, 0x03,
/* -220- */
0xe0, 0x03, 0xf8, 0x02,
/* -221- */
0xf8, 0xff, 0xff, 0x00,
/* -222- */
0xfc, 0xff, 0x2f, 0x00,
/* -223- */
0x94, 0x6a, 0x01, 0x00,
/* -224- */
0x00, 0x00, 0x00, 0x00,
/* -225- */
0x50, 0x55, 0x55, 0x00,
/* -226- */
0xfc, 0xff, 0xff, 0x03,
/* -227- */
0xfc, 0xff, 0xff, 0x03,
/* -228- */
0xd0, 0x07, 0xe0, 0x03,
/* -229- */
0xc0, 0x07, 0xe1, 0x03,
/* -230- */
0xc0, 0x87, 0xc7, 0x01,
/* -231- */
0xc0, 0xeb, 0x0b, 0x00,
/* -232- */
0xc0, 0xff, 0x0b, 0x00,
/* -233- */
0xc0, 0xff, 0x0b, 0x00,
/* -234- */
0xc0, 0xc7, 0x87, 0x02,
/* -235- */
0xc0, 0x07, 0xc1, 0x07,
/* -236- */
0xc0, 0x07, 0xc0, 0x07,
/* -237- */
0xf8, 0xff, 0xff, 0x07,
/* -238- */
0xfc, 0xff, 0xff, 0x07,
/* -239- */
0x50, 0x55, 0x55, 0x01,
/* -240- */
0x00, 0x00, 0x00, 0x00,
/* -241- */
0x40, 0x55, 0x55, 0x05,
/* -242- */
0xf0, 0xff, 0xff, 0x0f,
/* -243- */
0xf0, 0xff, 0xff, 0x0f,
/* -244- */
0x40, 0x1f, 0x40, 0x0f,
/* -245- */
0x40, 0x0f, 0x44, 0x0f,
/* -246- */
0x40, 0x0f, 0x0f, 0x0b,
/* -247- */
0x40, 0xaf, 0x1f, 0x00,
/* -248- */
0x40, 0xff, 0x1f, 0x00,
/* -249- */
0x40, 0xff, 0x1f, 0x00,
/* -250- */
0x40, 0x0f, 0x0f, 0x00,
/* -251- */
0x40, 0x0f, 0x05, 0x00,
/* -252- */
0x40, 0x0f, 0x00, 0x00,
/* -253- */
0xf0, 0xff, 0x0b, 0x00,
/* -254- */
0xf0, 0xff, 0x0f, 0x00,
/* -255- */
0x50, 0x55, 0x01, 0x00,
/* -256- */
0x00, 0x00, 0x00, 0x00,
/* -257- */
0x00, 0x00, 0x00, 0x00,
/* -258- */
0x00, 0x00, 0x00, 0x00,
/* -259- */
0x00, 0x00, 0x00, 0x00,
/* -260- */
0x00, 0x00, 0x00, 0x00,
/* -261- */
0x00, 0x00, 0x00, 0x00,
/* -262- */
0x00, 0x00, 0x00, 0x00,
/* -263- */
0x40, 0x55, 0x55, 0x00,
/* -264- */
0xd0, 0xff, 0xff, 0x01,
/* -265- */
0xc0, 0xff, 0xff, 0x01,
/* -266- */
0x00, 0x00, 0x00, 0x00,
/* -267- */
0x00, 0x00, 0x00, 0x00,
/* -268- */
0x00, 0x00, 0x00, 0x00,
/* -269- */
0x00, 0x00, 0x00, 0x00,
/* -270- */
0x00, 0x00, 0x00, 0x00,
/* -271- */
0x00, 0x00, 0x00, 0x00,
/* -272- */
0x00, 0x00, 0x00, 0x00,
/* -273- */
0x00, 0x00, 0x00, 0x00,
/* -274- */
0x00, 0xd0, 0x01, 0x00,
/* -275- */
0x00, 0xe0, 0x02, 0x00,
/* -276- */
0x00, 0xe0, 0x02, 0x00,
/* -277- */
0x00, 0xe0, 0x02, 0x00,
/* -278- */
0x00, 0xe0, 0x02, 0x00,
/* -279- */
0x50, 0xf5, 0x57, 0x01,
/* -280- */
0xf4, 0xff, 0xff, 0x07,
/* -281- */
0xf0, 0xff, 0xff, 0x03,
/* -282- */
0x00, 0xe0, 0x02, 0x00,
/* -283- */
0x00, 0xe0, 0x02, 0x00,
/* -284- */
0x00, 0xe0, 0x02, 0x00,
/* -285- */
0x00, 0xe0, 0x02, 0x00,
/* -286- */
0x00, 0xe0, 0x02, 0x00,
/* -287- */
0x00, 0x40, 0x00, 0x00,
/* -288- */
0x00, 0x00, 0x00, 0x00,
/* -289- */
0x00, 0x00, 0x00, 0x00,
/* -290- */
0x00, 0x00, 0x00, 0x00,
/* -291- */
0x00, 0x00, 0x00, 0x00,
/* -292- */
0x00, 0x00, 0x00, 0x00,
/* -293- */
0x00, 0x00, 0x00, 0x00,
/* -294- */
0x00, 0x00, 0x00, 0x00,
/* -295- */
0x00, 0x00, 0x00, 0x00,
/* -296- */
0x00, 0x00, 0x00, 0x00,
/* -297- */
0x00, 0x00, 0x00, 0x00,
/* -298- */
0x00, 0x00, 0x00, 0x00,
/* -299- */
0x00, 0x00, 0x00, 0x00,
/* -300- */
0x00, 0x40, 0x01, 0x00,
/* -301- */
0x00, 0xf0, 0x03, 0x00,
/* -302- */
0x00, 0xf0, 0x07, 0x00,
/* -303- */
0x00, 0x90, 0x01, 0x00,
/* -304- */
0x00, 0x00, 0x00, 0x00,
/* -305- */
0x00, 0x00, 0x00, 0x00,
/* -306- */
0x00, 0x00, 0x00, 0x00,
/* -307- */
0x00, 0x00, 0x00, 0x00,
/* -308- */
0x00, 0x00, 0x00, 0x00,
/* -309- */
0x00, 0x00, 0x00, 0x00,
/* -310- */
0x00, 0x00, 0x00, 0x00,
/* -311- */
0x00, 0x00, 0x00, 0x00,
/* -312- */
0x00, 0x00, 0x00, 0x00,
/* -313- */
0x00, 0x00, 0x00, 0x00,
/* -314- */
0x00, 0x00, 0x00, 0x00,
/* -315- */
0x00, 0x00, 0x00, 0x00,
/* -316- */
0x00, 0x00, 0x00, 0x00,
/* -317- */
0x00, 0x00, 0x00, 0x00,
/* -318- */
0x00, 0x00, 0x00, 0x00,
/* -319- */
0x00, 0x00, 0x00, 0x00,
/* -320- */
0x00, 0x00, 0x00, 0x00,
/* -321- */
0x00, 0x00, 0x00, 0x00,
/* -322- */
0x00, 0x00, 0x00, 0x00,
/* -323- */
0x00, 0x00, 0x00, 0x00,
/* -324- */
0x00, 0x00, 0x00, 0x00,
/* -325- */
0x00, 0xfd, 0x1b, 0x00,
/* -326- */
0xc0, 0xff, 0xbf, 0x00,
/* -327- */
0xe0, 0x5f, 0xfe, 0x01,
/* -328- */
0xf4, 0x02, 0xf0, 0x03,
/* -329- */
0xf8, 0xff, 0xff, 0x03,
/* -330- */
0xf8, 0xff, 0xff, 0x07,
/* -331- */
0xf4, 0xaa, 0xaa, 0x02,
/* -332- */
0xf0, 0x02, 0x00, 0x00,
/* -333- */
0xe0, 0xaf, 0xfe, 0x03,
/* -334- */
0x80, 0xff, 0xff, 0x03,
/* -335- */
0x00, 0xf9, 0x6f, 0x00,
};
ARM_ALIGN(4) ARM_SECTION("arm2d.asset.c_bmpDigitsFontA4Alpha")
const uint8_t c_bmpDigitsFontA4Alpha[8*336] = {
/* -0- */
0x00, 0x00, 0x50, 0xdb, 0x6b, 0x00, 0x00, 0x00,
/* -1- */
0x00, 0x00, 0xf8, 0xff, 0xff, 0x09, 0x00, 0x00,
/* -2- */
0x00, 0x50, 0xff, 0xbe, 0xfe, 0x5f, 0x00, 0x00,
/* -3- */
0x00, 0xc0, 0xdf, 0x01, 0xd1, 0xdf, 0x00, 0x00,
/* -4- */
0x00, 0xf3, 0x5f, 0x00, 0x50, 0xff, 0x04, 0x00,
/* -5- */
0x00, 0xf6, 0x1f, 0x00, 0x10, 0xfe, 0x07, 0x00,
/* -6- */
0x00, 0xf7, 0x0e, 0x00, 0x00, 0xfd, 0x08, 0x00,
/* -7- */
0x00, 0xf7, 0x0e, 0x00, 0x00, 0xfd, 0x08, 0x00,
/* -8- */
0x00, 0xf7, 0x0e, 0x00, 0x00, 0xfd, 0x08, 0x00,
/* -9- */
0x00, 0xf7, 0x0e, 0x00, 0x00, 0xfd, 0x08, 0x00,
/* -10- */
0x00, 0xf5, 0x2f, 0x00, 0x10, 0xff, 0x06, 0x00,
/* -11- */
0x00, 0xf2, 0x7f, 0x00, 0x60, 0xff, 0x03, 0x00,
/* -12- */
0x00, 0xb0, 0xef, 0x14, 0xe4, 0xcf, 0x00, 0x00,
/* -13- */
0x00, 0x30, 0xff, 0xef, 0xff, 0x4f, 0x00, 0x00,
/* -14- */
0x00, 0x00, 0xf6, 0xff, 0xff, 0x06, 0x00, 0x00,
/* -15- */
0x00, 0x00, 0x20, 0x76, 0x26, 0x00, 0x00, 0x00,
/* -16- */
0x00, 0x00, 0x00, 0x41, 0x05, 0x00, 0x00, 0x00,
/* -17- */
0x00, 0x30, 0xc8, 0xfe, 0x0c, 0x00, 0x00, 0x00,
/* -18- */
0x00, 0xf5, 0xff, 0xff, 0x0b, 0x00, 0x00, 0x00,
/* -19- */
0x00, 0xf5, 0xcf, 0xfd, 0x0b, 0x00, 0x00, 0x00,
/* -20- */
0x00, 0x30, 0x02, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -21- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -22- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -23- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -24- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -25- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -26- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -27- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -28- */
0x00, 0x00, 0x11, 0xfa, 0x1c, 0x11, 0x00, 0x00,
/* -29- */
0x00, 0xd4, 0xee, 0xff, 0xef, 0xee, 0x05, 0x00,
/* -30- */
0x00, 0xf6, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00,
/* -31- */
0x00, 0x50, 0x66, 0x66, 0x66, 0x56, 0x00, 0x00,
/* -32- */
0x00, 0x00, 0x40, 0x87, 0x37, 0x00, 0x00, 0x00,
/* -33- */
0x00, 0x20, 0xfc, 0xff, 0xff, 0x0a, 0x00, 0x00,
/* -34- */
0x00, 0xd1, 0xff, 0xde, 0xff, 0x9f, 0x00, 0x00,
/* -35- */
0x00, 0xf7, 0x8f, 0x01, 0xc2, 0xff, 0x02, 0x00,
/* -36- */
0x00, 0xf9, 0x0c, 0x00, 0x30, 0xff, 0x04, 0x00,
/* -37- */
0x00, 0x82, 0x02, 0x00, 0x50, 0xff, 0x04, 0x00,
/* -38- */
0x00, 0x00, 0x00, 0x00, 0xd2, 0xef, 0x01, 0x00,
/* -39- */
0x00, 0x00, 0x00, 0x20, 0xfd, 0x7f, 0x00, 0x00,
/* -40- */
0x00, 0x00, 0x00, 0xe3, 0xff, 0x08, 0x00, 0x00,
/* -41- */
0x00, 0x00, 0x50, 0xfe, 0x8f, 0x00, 0x00, 0x00,
/* -42- */
0x00, 0x00, 0xf6, 0xff, 0x07, 0x00, 0x00, 0x00,
/* -43- */
0x00, 0x80, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00,
/* -44- */
0x00, 0xfa, 0xff, 0x16, 0x11, 0x43, 0x00, 0x00,
/* -45- */
0x20, 0xff, 0xff, 0xfe, 0xff, 0xff, 0x04, 0x00,
/* -46- */
0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00,
/* -47- */
0x00, 0x66, 0x56, 0x55, 0x55, 0x66, 0x02, 0x00,
/* -48- */
0x00, 0x00, 0x50, 0x98, 0x58, 0x00, 0x00, 0x00,
/* -49- */
0x00, 0x50, 0xfd, 0xff, 0xff, 0x2c, 0x00, 0x00,
/* -50- */
0x00, 0xf2, 0xff, 0xcd, 0xfe, 0xcf, 0x00, 0x00,
/* -51- */
0x00, 0xe1, 0x6f, 0x00, 0x91, 0xff, 0x03, 0x00,
/* -52- */
0x00, 0x20, 0x02, 0x00, 0x20, 0xff, 0x05, 0x00,
/* -53- */
0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x03, 0x00,
/* -54- */
0x00, 0x00, 0x10, 0xb9, 0xfd, 0xbf, 0x00, 0x00,
/* -55- */
0x00, 0x00, 0x40, 0xff, 0xff, 0x3f, 0x00, 0x00,
/* -56- */
0x00, 0x00, 0x10, 0xc9, 0xfe, 0xcf, 0x01, 0x00,
/* -57- */
0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x07, 0x00,
/* -58- */
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0b, 0x00,
/* -59- */
0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x0c, 0x00,
/* -60- */
0x00, 0x84, 0x03, 0x00, 0x50, 0xfe, 0x0a, 0x00,
/* -61- */
0x00, 0xfc, 0xcf, 0xcb, 0xfd, 0xff, 0x03, 0x00,
/* -62- */
0x00, 0xf7, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00,
/* -63- */
0x00, 0x30, 0x97, 0xaa, 0x58, 0x01, 0x00, 0x00,
/* -64- */
0x00, 0x00, 0x00, 0x10, 0x44, 0x04, 0x00, 0x00,
/* -65- */
0x00, 0x00, 0x00, 0xa0, 0xff, 0x0e, 0x00, 0x00,
/* -66- */
0x00, 0x00, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0x00,
/* -67- */
0x00, 0x00, 0x00, 0xfc, 0xff, 0x0d, 0x00, 0x00,
/* -68- */
0x00, 0x00, 0x70, 0xff, 0xfe, 0x0d, 0x00, 0x00,
/* -69- */
0x00, 0x00, 0xe1, 0xcf, 0xf8, 0x0d, 0x00, 0x00,
/* -70- */
0x00, 0x00, 0xf9, 0x4f, 0xf7, 0x0d, 0x00, 0x00,
/* -71- */
0x00, 0x30, 0xff, 0x0b, 0xf7, 0x0d, 0x00, 0x00,
/* -72- */
0x00, 0xb0, 0xef, 0x02, 0xf7, 0x0d, 0x00, 0x00,
/* -73- */
0x00, 0xf5, 0xcf, 0x55, 0xfa, 0x4e, 0x00, 0x00,
/* -74- */
0x00, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x04, 0x00,
/* -75- */
0x00, 0xf9, 0xff, 0xff, 0xff, 0xef, 0x02, 0x00,
/* -76- */
0x00, 0x21, 0x22, 0x42, 0xfa, 0x3e, 0x00, 0x00,
/* -77- */
0x00, 0x00, 0x00, 0xfa, 0xff, 0xef, 0x03, 0x00,
/* -78- */
0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x03, 0x00,
/* -79- */
0x00, 0x00, 0x00, 0x41, 0x44, 0x34, 0x00, 0x00,
/* -80- */
0x00, 0x40, 0x55, 0x55, 0x55, 0x14, 0x00, 0x00,
/* -81- */
0x00, 0xb0, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x00,
/* -82- */
0x00, 0xb0, 0xff, 0xff, 0xff, 0x9f, 0x00, 0x00,
/* -83- */
0x00, 0xb0, 0xbf, 0x22, 0x22, 0x01, 0x00, 0x00,
/* -84- */
0x00, 0xb0, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -85- */
0x00, 0xb0, 0xdf, 0xb8, 0x7a, 0x02, 0x00, 0x00,
/* -86- */
0x00, 0xb0, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00,
/* -87- */
0x00, 0xb0, 0xff, 0xbe, 0xfc, 0xef, 0x01, 0x00,
/* -88- */
0x00, 0x40, 0x6a, 0x01, 0x60, 0xff, 0x08, 0x00,
/* -89- */
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0b, 0x00,
/* -90- */
0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x0c, 0x00,
/* -91- */
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x0b, 0x00,
/* -92- */
0x00, 0xd8, 0x16, 0x00, 0x71, 0xff, 0x08, 0x00,
/* -93- */
0x00, 0xfd, 0xef, 0xdd, 0xfe, 0xef, 0x02, 0x00,
/* -94- */
0x00, 0xd4, 0xff, 0xff, 0xff, 0x3d, 0x00, 0x00,
/* -95- */
0x00, 0x00, 0x84, 0x99, 0x47, 0x00, 0x00, 0x00,
/* -96- */
0x00, 0x00, 0x00, 0x20, 0xa7, 0x9b, 0x03, 0x00,
/* -97- */
0x00, 0x00, 0x00, 0xf7, 0xff, 0xff, 0x1e, 0x00,
/* -98- */
0x00, 0x00, 0xa0, 0xff, 0xcf, 0xeb, 0x0b, 0x00,
/* -99- */
0x00, 0x00, 0xf8, 0xcf, 0x03, 0x10, 0x00, 0x00,
/* -100- */
0x00, 0x30, 0xff, 0x1c, 0x00, 0x00, 0x00, 0x00,
/* -101- */
0x00, 0x90, 0xff, 0x02, 0x01, 0x00, 0x00, 0x00,
/* -102- */
0x00, 0xc0, 0xcf, 0xd8, 0xef, 0x19, 0x00, 0x00,
/* -103- */
0x00, 0xd0, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00,
/* -104- */
0x00, 0xd0, 0xff, 0xbf, 0xb7, 0xff, 0x07, 0x00,
/* -105- */
0x00, 0xd0, 0xff, 0x0a, 0x00, 0xfc, 0x0d, 0x00,
/* -106- */
0x00, 0xb0, 0xef, 0x01, 0x00, 0xf6, 0x1e, 0x00,
/* -107- */
0x00, 0x80, 0xef, 0x01, 0x00, 0xf7, 0x1f, 0x00,
/* -108- */
0x00, 0x30, 0xff, 0x1a, 0x30, 0xfd, 0x0d, 0x00,
/* -109- */
0x00, 0x00, 0xfb, 0xef, 0xfd, 0xff, 0x07, 0x00,
/* -110- */
0x00, 0x00, 0xb1, 0xff, 0xff, 0x9f, 0x00, 0x00,
/* -111- */
0x00, 0x00, 0x00, 0x74, 0x78, 0x03, 0x00, 0x00,
/* -112- */
0x00, 0x32, 0x33, 0x22, 0x22, 0x32, 0x01, 0x00,
/* -113- */
0x00, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00,
/* -114- */
0x00, 0xfa, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00,
/* -115- */
0x00, 0xf9, 0x4c, 0x44, 0x84, 0xff, 0x04, 0x00,
/* -116- */
0x00, 0x72, 0x02, 0x00, 0xa0, 0xdf, 0x00, 0x00,
/* -117- */
0x00, 0x00, 0x00, 0x00, 0xe1, 0x9f, 0x00, 0x00,
/* -118- */
0x00, 0x00, 0x00, 0x00, 0xf5, 0x4f, 0x00, 0x00,
/* -119- */
0x00, 0x00, 0x00, 0x00, 0xfa, 0x0d, 0x00, 0x00,
/* -120- */
0x00, 0x00, 0x00, 0x10, 0xfe, 0x09, 0x00, 0x00,
/* -121- */
0x00, 0x00, 0x00, 0x50, 0xff, 0x04, 0x00, 0x00,
/* -122- */
0x00, 0x00, 0x00, 0xa0, 0xdf, 0x00, 0x00, 0x00,
/* -123- */
0x00, 0x00, 0x00, 0xe1, 0x9f, 0x00, 0x00, 0x00,
/* -124- */
0x00, 0x00, 0x00, 0xf5, 0x4f, 0x00, 0x00, 0x00,
/* -125- */
0x00, 0x00, 0x00, 0xfa, 0x0e, 0x00, 0x00, 0x00,
/* -126- */
0x00, 0x00, 0x00, 0xfc, 0x09, 0x00, 0x00, 0x00,
/* -127- */
0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00,
/* -128- */
0x00, 0x00, 0x30, 0x87, 0x47, 0x00, 0x00, 0x00,
/* -129- */
0x00, 0x00, 0xf9, 0xff, 0xff, 0x1a, 0x00, 0x00,
/* -130- */
0x00, 0x90, 0xff, 0xdf, 0xff, 0xaf, 0x00, 0x00,
/* -131- */
0x00, 0xf1, 0xcf, 0x02, 0xb2, 0xff, 0x02, 0x00,
/* -132- */
0x00, 0xf4, 0x4f, 0x00, 0x30, 0xff, 0x05, 0x00,
/* -133- */
0x00, 0xf3, 0x5f, 0x00, 0x50, 0xff, 0x04, 0x00,
/* -134- */
0x00, 0xd0, 0xef, 0x46, 0xe6, 0xef, 0x01, 0x00,
/* -135- */
0x00, 0x40, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00,
/* -136- */
0x00, 0x50, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00,
/* -137- */
0x00, 0xe1, 0xff, 0x58, 0xf8, 0xff, 0x02, 0x00,
/* -138- */
0x00, 0xf5, 0x6f, 0x00, 0x50, 0xff, 0x07, 0x00,
/* -139- */
0x00, 0xf7, 0x1e, 0x00, 0x00, 0xfe, 0x08, 0x00,
/* -140- */
0x00, 0xf5, 0x6f, 0x00, 0x50, 0xff, 0x06, 0x00,
/* -141- */
0x00, 0xe1, 0xff, 0xbc, 0xfc, 0xef, 0x02, 0x00,
/* -142- */
0x00, 0x40, 0xfe, 0xff, 0xff, 0x5e, 0x00, 0x00,
/* -143- */
0x00, 0x00, 0x61, 0xaa, 0x6a, 0x01, 0x00, 0x00,
/* -144- */
0x00, 0x00, 0x10, 0x97, 0x48, 0x00, 0x00, 0x00,
/* -145- */
0x00, 0x00, 0xe5, 0xff, 0xff, 0x0a, 0x00, 0x00,
/* -146- */
0x00, 0x20, 0xff, 0xdf, 0xfe, 0x9f, 0x00, 0x00,
/* -147- */
0x00, 0x90, 0xff, 0x05, 0xb2, 0xff, 0x03, 0x00,
/* -148- */
0x00, 0xd0, 0xaf, 0x00, 0x20, 0xff, 0x08, 0x00,
/* -149- */
0x00, 0xe1, 0x7f, 0x00, 0x00, 0xfc, 0x0b, 0x00,
/* -150- */
0x00, 0xd0, 0xaf, 0x00, 0x30, 0xff, 0x0e, 0x00,
/* -151- */
0x00, 0x90, 0xff, 0x04, 0xd2, 0xff, 0x1e, 0x00,
/* -152- */
0x00, 0x30, 0xff, 0xcf, 0xfe, 0xff, 0x1f, 0x00,
/* -153- */
0x00, 0x00, 0xf5, 0xff, 0xff, 0xfe, 0x1e, 0x00,
/* -154- */
0x00, 0x00, 0x20, 0xa8, 0x49, 0xfc, 0x0c, 0x00,
/* -155- */
0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x06, 0x00,
/* -156- */
0x00, 0x00, 0x01, 0x20, 0xfa, 0xcf, 0x00, 0x00,
/* -157- */
0x00, 0xb0, 0xce, 0xfc, 0xff, 0x2d, 0x00, 0x00,
/* -158- */
0x00, 0xd0, 0xff, 0xff, 0xaf, 0x01, 0x00, 0x00,
/* -159- */
0x00, 0x20, 0xb8, 0x8a, 0x03, 0x00, 0x00, 0x00,
/* -160- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -161- */
0x00, 0x51, 0x66, 0x66, 0x05, 0x00, 0x00, 0x00,
/* -162- */
0x00, 0xfa, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00,
/* -163- */
0x00, 0xe7, 0xff, 0xff, 0x9f, 0x00, 0x00, 0x00,
/* -164- */
0x00, 0x10, 0xe3, 0xff, 0xef, 0x01, 0x00, 0x00,
/* -165- */
0x00, 0x00, 0xf5, 0xaf, 0xff, 0x06, 0x00, 0x00,
/* -166- */
0x00, 0x00, 0xfb, 0x1d, 0xfd, 0x0c, 0x00, 0x00,
/* -167- */
0x00, 0x20, 0xff, 0x08, 0xf7, 0x3f, 0x00, 0x00,
/* -168- */
0x00, 0x80, 0xff, 0x02, 0xe2, 0x9f, 0x00, 0x00,
/* -169- */
0x00, 0xd0, 0xff, 0xcc, 0xfc, 0xef, 0x01, 0x00,
/* -170- */
0x00, 0xf5, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00,
/* -171- */
0x00, 0xfb, 0xae, 0xaa, 0xaa, 0xfe, 0x0c, 0x00,
/* -172- */
0x30, 0xff, 0x09, 0x00, 0x00, 0xf8, 0x4f, 0x00,
/* -173- */
0xfa, 0xff, 0xef, 0x03, 0xd2, 0xff, 0xff, 0x0b,
/* -174- */
0xfc, 0xff, 0xff, 0x04, 0xf3, 0xff, 0xff, 0x0d,
/* -175- */
0x51, 0x55, 0x45, 0x00, 0x30, 0x55, 0x55, 0x02,
/* -176- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -177- */
0x30, 0x66, 0x66, 0x66, 0x46, 0x01, 0x00, 0x00,
/* -178- */
0xe1, 0xff, 0xff, 0xff, 0xff, 0x5d, 0x00, 0x00,
/* -179- */
0xb0, 0xff, 0xff, 0xee, 0xff, 0xff, 0x03, 0x00,
/* -180- */
0x00, 0xf4, 0x5f, 0x11, 0x62, 0xfe, 0x0a, 0x00,
/* -181- */
0x00, 0xf3, 0x3f, 0x00, 0x00, 0xfa, 0x0c, 0x00,
/* -182- */
0x00, 0xf3, 0x4f, 0x00, 0x50, 0xfe, 0x0a, 0x00,
/* -183- */
0x00, 0xf3, 0xdf, 0xcb, 0xfd, 0xff, 0x03, 0x00,
/* -184- */
0x00, 0xf3, 0xff, 0xff, 0xff, 0xef, 0x04, 0x00,
/* -185- */
0x00, 0xf3, 0xcf, 0xaa, 0xdb, 0xff, 0x3f, 0x00,
/* -186- */
0x00, 0xf3, 0x3f, 0x00, 0x00, 0xf6, 0x9f, 0x00,
/* -187- */
0x00, 0xf3, 0x3f, 0x00, 0x00, 0xb0, 0xcf, 0x00,
/* -188- */
0x00, 0xf5, 0x6f, 0x22, 0x22, 0xe5, 0xaf, 0x00,
/* -189- */
0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x00,
/* -190- */
0xd1, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x06, 0x00,
/* -191- */
0x20, 0x55, 0x55, 0x55, 0x55, 0x03, 0x00, 0x00,
/* -192- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -193- */
0x00, 0x00, 0x61, 0xca, 0x8b, 0x43, 0x05, 0x00,
/* -194- */
0x00, 0x30, 0xfd, 0xff, 0xff, 0xff, 0x3f, 0x00,
/* -195- */
0x00, 0xe3, 0xff, 0xbd, 0xeb, 0xff, 0x4f, 0x00,
/* -196- */
0x00, 0xfc, 0x7f, 0x00, 0x20, 0xfb, 0x4f, 0x00,
/* -197- */
0x40, 0xff, 0x08, 0x00, 0x00, 0xf2, 0x3f, 0x00,
/* -198- */
0x80, 0xef, 0x01, 0x00, 0x00, 0x80, 0x09, 0x00,
/* -199- */
0x90, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -200- */
0x90, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -201- */
0x90, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -202- */
0x80, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -203- */
0x40, 0xff, 0x08, 0x00, 0x00, 0x30, 0x17, 0x00,
/* -204- */
0x00, 0xfb, 0x8f, 0x02, 0x10, 0xe5, 0x9f, 0x00,
/* -205- */
0x00, 0xe2, 0xff, 0xdf, 0xed, 0xff, 0x5f, 0x00,
/* -206- */
0x00, 0x20, 0xfb, 0xff, 0xff, 0xdf, 0x06, 0x00,
/* -207- */
0x00, 0x00, 0x30, 0x97, 0x89, 0x14, 0x00, 0x00,
/* -208- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -209- */
0x10, 0x43, 0x33, 0x33, 0x02, 0x00, 0x00, 0x00,
/* -210- */
0xc0, 0xff, 0xff, 0xff, 0xcf, 0x05, 0x00, 0x00,
/* -211- */
0xc0, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00,
/* -212- */
0x10, 0xfb, 0x3d, 0x43, 0xe7, 0xff, 0x03, 0x00,
/* -213- */
0x00, 0xf9, 0x0c, 0x00, 0x30, 0xfe, 0x0b, 0x00,
/* -214- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xf8, 0x2f, 0x00,
/* -215- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xf3, 0x4f, 0x00,
/* -216- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xf2, 0x4f, 0x00,
/* -217- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xf2, 0x4f, 0x00,
/* -218- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xf4, 0x3f, 0x00,
/* -219- */
0x00, 0xf9, 0x0c, 0x00, 0x00, 0xfa, 0x1e, 0x00,
/* -220- */
0x00, 0xfa, 0x0c, 0x10, 0xa2, 0xff, 0x09, 0x00,
/* -221- */
0x90, 0xff, 0xef, 0xee, 0xff, 0xcf, 0x01, 0x00,
/* -222- */
0xe1, 0xff, 0xff, 0xff, 0xff, 0x1a, 0x00, 0x00,
/* -223- */
0x40, 0x87, 0x88, 0x78, 0x36, 0x00, 0x00, 0x00,
/* -224- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -225- */
0x10, 0x44, 0x44, 0x44, 0x44, 0x44, 0x03, 0x00,
/* -226- */
0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x00,
/* -227- */
0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x00,
/* -228- */
0x10, 0xf5, 0x6f, 0x33, 0x32, 0xfa, 0x0c, 0x00,
/* -229- */
0x00, 0xf2, 0x4f, 0x10, 0x04, 0xf9, 0x0c, 0x00,
/* -230- */
0x00, 0xf2, 0x4f, 0xb0, 0x6f, 0xd3, 0x07, 0x00,
/* -231- */
0x00, 0xf2, 0xbf, 0xfa, 0x8f, 0x00, 0x00, 0x00,
/* -232- */
0x00, 0xf2, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x00,
/* -233- */
0x00, 0xf2, 0xdf, 0xfc, 0x8f, 0x00, 0x00, 0x00,
/* -234- */
0x00, 0xf2, 0x4f, 0xc0, 0x7f, 0x80, 0x1a, 0x00,
/* -235- */
0x00, 0xf2, 0x4f, 0x30, 0x06, 0xf1, 0x4f, 0x00,
/* -236- */
0x00, 0xf3, 0x5f, 0x01, 0x10, 0xf3, 0x5f, 0x00,
/* -237- */
0x90, 0xfe, 0xef, 0xee, 0xee, 0xfe, 0x5f, 0x00,
/* -238- */
0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00,
/* -239- */
0x30, 0x77, 0x77, 0x77, 0x77, 0x77, 0x27, 0x00,
/* -240- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -241- */
0x00, 0x42, 0x55, 0x55, 0x44, 0x44, 0x44, 0x00,
/* -242- */
0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02,
/* -243- */
0x20, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02,
/* -244- */
0x00, 0x71, 0xff, 0x24, 0x22, 0x72, 0xff, 0x02,
/* -245- */
0x00, 0x50, 0xef, 0x01, 0x43, 0x40, 0xff, 0x02,
/* -246- */
0x00, 0x50, 0xef, 0x01, 0xfe, 0x13, 0x9c, 0x00,
/* -247- */
0x00, 0x50, 0xff, 0xbb, 0xff, 0x05, 0x00, 0x00,
/* -248- */
0x00, 0x50, 0xff, 0xff, 0xff, 0x04, 0x00, 0x00,
/* -249- */
0x00, 0x50, 0xff, 0xcc, 0xff, 0x05, 0x00, 0x00,
/* -250- */
0x00, 0x50, 0xef, 0x11, 0xff, 0x03, 0x00, 0x00,
/* -251- */
0x00, 0x50, 0xef, 0x01, 0x54, 0x00, 0x00, 0x00,
/* -252- */
0x00, 0x60, 0xff, 0x13, 0x00, 0x00, 0x00, 0x00,
/* -253- */
0x10, 0xfc, 0xff, 0xee, 0x9e, 0x00, 0x00, 0x00,
/* -254- */
0x30, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x00,
/* -255- */
0x00, 0x64, 0x66, 0x66, 0x26, 0x00, 0x00, 0x00,
/* -256- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -257- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -258- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -259- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -260- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -261- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -262- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -263- */
0x00, 0x51, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00,
/* -264- */
0x00, 0xf4, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00,
/* -265- */
0x00, 0xd3, 0xdd, 0xdd, 0xdd, 0xdd, 0x04, 0x00,
/* -266- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -267- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -268- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -269- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -270- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -271- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -272- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -273- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -274- */
0x00, 0x00, 0x00, 0xc4, 0x05, 0x00, 0x00, 0x00,
/* -275- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -276- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -277- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -278- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -279- */
0x00, 0x76, 0x77, 0xfd, 0x7d, 0x77, 0x06, 0x00,
/* -280- */
0x60, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00,
/* -281- */
0x30, 0xed, 0xee, 0xff, 0xef, 0xee, 0x3d, 0x00,
/* -282- */
0x00, 0x10, 0x11, 0xfb, 0x1b, 0x11, 0x00, 0x00,
/* -283- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -284- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -285- */
0x00, 0x00, 0x00, 0xfa, 0x0b, 0x00, 0x00, 0x00,
/* -286- */
0x00, 0x00, 0x00, 0xf8, 0x09, 0x00, 0x00, 0x00,
/* -287- */
0x00, 0x00, 0x00, 0x51, 0x01, 0x00, 0x00, 0x00,
/* -288- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -289- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -290- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -291- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -292- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -293- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -294- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -295- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -296- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -297- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -298- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -299- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -300- */
0x00, 0x00, 0x00, 0x73, 0x04, 0x00, 0x00, 0x00,
/* -301- */
0x00, 0x00, 0x20, 0xff, 0x3f, 0x00, 0x00, 0x00,
/* -302- */
0x00, 0x00, 0x20, 0xff, 0x4f, 0x00, 0x00, 0x00,
/* -303- */
0x00, 0x00, 0x00, 0xa6, 0x07, 0x00, 0x00, 0x00,
/* -304- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -305- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -306- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -307- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -308- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -309- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -310- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -311- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -312- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -313- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -314- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -315- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -316- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -317- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -318- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -319- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -320- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -321- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -322- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -323- */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* -324- */
0x00, 0x00, 0x00, 0x22, 0x01, 0x00, 0x00, 0x00,
/* -325- */
0x00, 0x00, 0xd7, 0xff, 0xbe, 0x05, 0x00, 0x00,
/* -326- */
0x00, 0xc1, 0xff, 0xff, 0xff, 0x9f, 0x00, 0x00,
/* -327- */
0x00, 0xfb, 0xcf, 0x57, 0xe8, 0xff, 0x06, 0x00,
/* -328- */
0x40, 0xff, 0x0a, 0x00, 0x20, 0xfd, 0x0d, 0x00,
/* -329- */
0x80, 0xff, 0xdd, 0xdd, 0xcd, 0xfe, 0x3f, 0x00,
/* -330- */
0x90, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x00,
/* -331- */
0x70, 0xff, 0x8a, 0x99, 0x99, 0x88, 0x28, 0x00,
/* -332- */
0x30, 0xff, 0x1b, 0x00, 0x00, 0x31, 0x03, 0x00,
/* -333- */
0x00, 0xf9, 0xef, 0x9b, 0xca, 0xfe, 0x3f, 0x00,
/* -334- */
0x00, 0xa0, 0xff, 0xff, 0xff, 0xff, 0x2d, 0x00,
/* -335- */
0x00, 0x00, 0xa5, 0xed, 0xcd, 0x59, 0x01, 0x00,
};
extern const arm_2d_tile_t c_tileDigitsFontMask;
ARM_SECTION("arm2d.tile.c_tileDigitsFontMask")
const arm_2d_tile_t c_tileDigitsFontMask = {
.tRegion = {
.tSize = {
.iWidth = 15,
.iHeight = 336,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_8BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpDigitsFontAlpha,
};
extern const arm_2d_tile_t c_tileDigitsFontA2Mask;
ARM_SECTION("arm2d.tile.c_tileDigitsFontA2Mask")
const arm_2d_tile_t c_tileDigitsFontA2Mask = {
.tRegion = {
.tSize = {
.iWidth = 15,
.iHeight = 336,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_MASK_A2,
},
},
.pchBuffer = (uint8_t *)c_bmpDigitsFontA2Alpha,
};
extern const arm_2d_tile_t c_tileDigitsFontA4Mask;
ARM_SECTION("arm2d.tile.c_tileDigitsFontA4Mask")
const arm_2d_tile_t c_tileDigitsFontA4Mask = {
.tRegion = {
.tSize = {
.iWidth = 15,
.iHeight = 336,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_MASK_A4,
},
},
.pchBuffer = (uint8_t *)c_bmpDigitsFontA4Alpha,
};
static
IMPL_FONT_DRAW_CHAR(__digit_font_a2_draw_char);
static
IMPL_FONT_DRAW_CHAR(__digit_font_a4_draw_char);
static
IMPL_FONT_DRAW_CHAR(__digit_font_a8_draw_char);
static
arm_2d_char_descriptor_t *
__digit_font_get_char_descriptor(const arm_2d_font_t *ptFont,
arm_2d_char_descriptor_t *ptDescriptor,
uint8_t *pchCharCode);
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tNumbers;
arm_2d_char_idx_t tABCDEF;
arm_2d_char_idx_t tMinor;
arm_2d_char_idx_t tPlus;
arm_2d_char_idx_t tDot;
arm_2d_char_idx_t tE;
arm_2d_char_idx_t tBlank;
} ARM_2D_FONT_A2_DIGITS_ONLY = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileDigitsFontA2Mask,
0, /* x offset */
0, /* y offset */
15, /* width */
336 /* height */
),
.tCharSize = {
.iWidth = 15,
.iHeight = 16,
},
.nCount = 20, //!< Character count
.fnGetCharDescriptor = &__digit_font_get_char_descriptor,
.fnDrawChar = &__digit_font_a2_draw_char,
},
.hwCount = 7,
.hwDefaultCharIndex = 6, /* tBlank */
},
.tNumbers = {
.chStartCode = {'0'},
.hwCount = 10,
.hwOffset = 0,
},
.tABCDEF = {
.chStartCode = {'A'},
.hwCount = 6,
.hwOffset = 10,
},
.tMinor = {
.chStartCode = {'-'},
.hwCount = 1,
.hwOffset = 16,
},
.tPlus = {
.chStartCode = {'+'},
.hwCount = 1,
.hwOffset = 17,
},
.tDot = {
.chStartCode = {'.'},
.hwCount = 1,
.hwOffset = 18,
},
.tE = {
.chStartCode = {'e'},
.hwCount = 1,
.hwOffset = 20,
},
.tBlank = {
.chStartCode = {' '},
.hwCount = 1,
.hwOffset = 19,
},
};
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tNumbers;
arm_2d_char_idx_t tABCDEF;
arm_2d_char_idx_t tMinor;
arm_2d_char_idx_t tPlus;
arm_2d_char_idx_t tDot;
arm_2d_char_idx_t tE;
arm_2d_char_idx_t tBlank;
} ARM_2D_FONT_A4_DIGITS_ONLY = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileDigitsFontA4Mask,
0, /* x offset */
0, /* y offset */
15, /* width */
336 /* height */
),
.tCharSize = {
.iWidth = 15,
.iHeight = 16,
},
.nCount = 20, //!< Character count
.fnGetCharDescriptor = &__digit_font_get_char_descriptor,
.fnDrawChar = &__digit_font_a4_draw_char,
},
.hwCount = 7,
.hwDefaultCharIndex = 6, /* tBlank */
},
.tNumbers = {
.chStartCode = {'0'},
.hwCount = 10,
.hwOffset = 0,
},
.tABCDEF = {
.chStartCode = {'A'},
.hwCount = 6,
.hwOffset = 10,
},
.tMinor = {
.chStartCode = {'-'},
.hwCount = 1,
.hwOffset = 16,
},
.tPlus = {
.chStartCode = {'+'},
.hwCount = 1,
.hwOffset = 17,
},
.tDot = {
.chStartCode = {'.'},
.hwCount = 1,
.hwOffset = 18,
},
.tE = {
.chStartCode = {'e'},
.hwCount = 1,
.hwOffset = 20,
},
.tBlank = {
.chStartCode = {' '},
.hwCount = 1,
.hwOffset = 19,
},
};
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tNumbers;
arm_2d_char_idx_t tABCDEF;
arm_2d_char_idx_t tMinor;
arm_2d_char_idx_t tPlus;
arm_2d_char_idx_t tDot;
arm_2d_char_idx_t tE;
arm_2d_char_idx_t tBlank;
} ARM_2D_FONT_A8_DIGITS_ONLY = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileDigitsFontMask,
0, /* x offset */
0, /* y offset */
15, /* width */
336 /* height */
),
.tCharSize = {
.iWidth = 15,
.iHeight = 16,
},
.nCount = 20, //!< Character count
.fnGetCharDescriptor = &__digit_font_get_char_descriptor,
.fnDrawChar = &__digit_font_a8_draw_char,
},
.hwCount = 7,
.hwDefaultCharIndex = 6, /* tBlank */
},
.tNumbers = {
.chStartCode = {'0'},
.hwCount = 10,
.hwOffset = 0,
},
.tABCDEF = {
.chStartCode = {'A'},
.hwCount = 6,
.hwOffset = 10,
},
.tMinor = {
.chStartCode = {'-'},
.hwCount = 1,
.hwOffset = 16,
},
.tPlus = {
.chStartCode = {'+'},
.hwCount = 1,
.hwOffset = 17,
},
.tDot = {
.chStartCode = {'.'},
.hwCount = 1,
.hwOffset = 18,
},
.tE = {
.chStartCode = {'e'},
.hwCount = 1,
.hwOffset = 20,
},
.tBlank = {
.chStartCode = {' '},
.hwCount = 1,
.hwOffset = 19,
},
};
#undef this
#define this (*ptThis)
static
IMPL_FONT_DRAW_CHAR(__digit_font_a2_draw_char)
{
ARM_2D_UNUSED(fScale);
return arm_2d_fill_colour_with_a2_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
static
IMPL_FONT_DRAW_CHAR(__digit_font_a4_draw_char)
{
ARM_2D_UNUSED(fScale);
return arm_2d_fill_colour_with_a4_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
static
IMPL_FONT_DRAW_CHAR(__digit_font_a8_draw_char)
{
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__digit_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
ptDescriptor->chCodeLength = 1;
ptDescriptor->tileChar.tRegion.tSize = ptFont->tCharSize;
ptDescriptor->iBearingX = 0;
ptDescriptor->iBearingY = ptFont->tCharSize.iHeight;
ptDescriptor->iAdvance = ptFont->tCharSize.iWidth;
arm_foreach( arm_2d_char_idx_t, &ARM_2D_FONT_A8_DIGITS_ONLY.tNumbers, this.hwCount, ptItem) {
if ( *pchCharCode >= ptItem->chStartCode[0]
&& *pchCharCode < (ptItem->chStartCode[0] + ptItem->hwCount)) {
int16_t iOffset = *pchCharCode - ptItem->chStartCode[0];
ptDescriptor->tileChar.tRegion.tLocation.iY
= (ptItem->hwOffset + iOffset) * ptFont->tCharSize.iHeight;
return ptDescriptor;
}
}
/* default: use blank */
ptDescriptor->tileChar.tRegion.tLocation.iY
= this.tLookUpTable[this.hwDefaultCharIndex].hwOffset
* ptFont->tCharSize.iHeight;
return ptDescriptor;
}
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_warning=1296
#endif
================================================
FILE: project/mdk/RTE/Acceleration/GLCD_Fonts.c
================================================
/*-----------------------------------------------------------------------------
* Name: GLCD_Fonts.c
* Purpose: Graphic fonts 6x8 (WxH) and 16x24 with horizontal pixel packing
* Rev.: 1.0.1
*----------------------------------------------------------------------------*/
/* Copyright (c) 2013 - 2017 ARM LIMITED
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of ARM nor the names of its contributors may be used
to endorse or promote products derived from this software without
specific prior written permission.
*
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------------*/
#include
#include "./arm_extra_lcd_printf.h"
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wcast-qual"
#endif
extern const uint8_t Font_6x8_h[(144-32)*8];
const uint8_t Font_6x8_h[(144-32)*8] = {
/* 0x20: Space ' ' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x21: '!' */
0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, 0x00,
/* 0x22: '"' */
0x0A, 0x0A, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x23: '#' */
0x0A, 0x0A, 0x1F, 0x0A, 0x1F, 0x0A, 0x0A, 0x00,
/* 0x24: '$' */
0x04, 0x1E, 0x05, 0x0E, 0x14, 0x0F, 0x04, 0x00,
/* 0x25: '%' */
0x03, 0x13, 0x08, 0x04, 0x02, 0x19, 0x18, 0x00,
/* 0x26: '&' */
0x02, 0x05, 0x05, 0x02, 0x15, 0x09, 0x16, 0x00,
/* 0x27: ''' */
0x0C, 0x0C, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00,
/* 0x28: '(' */
0x08, 0x04, 0x02, 0x02, 0x02, 0x04, 0x08, 0x00,
/* 0x29: ')' */
0x02, 0x04, 0x08, 0x08, 0x08, 0x04, 0x02, 0x00,
/* 0x2A: '*' */
0x00, 0x04, 0x15, 0x0E, 0x0E, 0x15, 0x04, 0x00,
/* 0x2B: '+' */
0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00, 0x00,
/* 0x2C: ',' */
0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x04, 0x02,
/* 0x2D: '-' */
0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00,
/* 0x2E: '.' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0C, 0x00,
/* 0x2F: '/' */
0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00,
/* 0x30: '0' */
0x0E, 0x11, 0x13, 0x15, 0x19, 0x11, 0x0E, 0x00,
/* 0x31: '1' */
0x04, 0x06, 0x04, 0x04, 0x04, 0x04, 0x0E, 0x00,
/* 0x32: '2' */
0x0E, 0x11, 0x10, 0x0E, 0x01, 0x01, 0x1F, 0x00,
/* 0x33: '3' */
0x1F, 0x10, 0x08, 0x0C, 0x10, 0x11, 0x0E, 0x00,
/* 0x34: '4' */
0x08, 0x0C, 0x0A, 0x09, 0x1F, 0x08, 0x08, 0x00,
/* 0x35: '5' */
0x1F, 0x01, 0x0F, 0x10, 0x10, 0x11, 0x0E, 0x00,
/* 0x36: '6' */
0x1C, 0x02, 0x01, 0x0F, 0x11, 0x11, 0x0E, 0x00,
/* 0x37: '7' */
0x1F, 0x10, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00,
/* 0x38: '8' */
0x0E, 0x11, 0x11, 0x0E, 0x11, 0x11, 0x0E, 0x00,
/* 0x39: '9' */
0x0E, 0x11, 0x11, 0x1E, 0x10, 0x08, 0x07, 0x00,
/* 0x3A: ':' */
0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
/* 0x3B: ';' */
0x00, 0x00, 0x04, 0x00, 0x04, 0x04, 0x02, 0x00,
/* 0x3C: '<' */
0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x00,
/* 0x3D: '=' */
0x00, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x00,
/* 0x3E: '>' */
0x02, 0x04, 0x08, 0x10, 0x08, 0x04, 0x02, 0x00,
/* 0x3F: '?' */
0x0E, 0x11, 0x10, 0x0C, 0x04, 0x00, 0x04, 0x00,
/* 0x40: '@' */
0x0E, 0x11, 0x15, 0x1D, 0x0D, 0x01, 0x1E, 0x00,
/* 0x41: 'A' */
0x04, 0x0A, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x00,
/* 0x42: 'B' */
0x0F, 0x11, 0x11, 0x0F, 0x11, 0x11, 0x0F, 0x00,
/* 0x43: 'C' */
0x0E, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0E, 0x00,
/* 0x44: 'D' */
0x0F, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0F, 0x00,
/* 0x45: 'E' */
0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x1F, 0x00,
/* 0x46: 'F' */
0x1F, 0x01, 0x01, 0x0F, 0x01, 0x01, 0x01, 0x00,
/* 0x47: 'G' */
0x1E, 0x11, 0x01, 0x01, 0x19, 0x11, 0x1E, 0x00,
/* 0x48: 'H' */
0x11, 0x11, 0x11, 0x1F, 0x11, 0x11, 0x11, 0x00,
/* 0x49: 'I' */
0x0E, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0E, 0x00,
/* 0x4A: 'J' */
0x1C, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06, 0x00,
/* 0x4B: 'K' */
0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11, 0x00,
/* 0x4C: 'L' */
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1F, 0x00,
/* 0x4D: 'M' */
0x11, 0x1B, 0x15, 0x15, 0x15, 0x11, 0x11, 0x00,
/* 0x4E: 'N' */
0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x00,
/* 0x4F: 'O' */
0x0E, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00,
/* 0x50: 'P' */
0x0F, 0x11, 0x11, 0x0F, 0x01, 0x01, 0x01, 0x00,
/* 0x51: 'Q' */
0x0E, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16, 0x00,
/* 0x52: 'R' */
0x0F, 0x11, 0x11, 0x0F, 0x05, 0x09, 0x11, 0x00,
/* 0x53: 'S' */
0x0E, 0x11, 0x01, 0x0E, 0x10, 0x11, 0x0E, 0x00,
/* 0x54: 'T' */
0x1F, 0x15, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00,
/* 0x55: 'U' */
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00,
/* 0x56: 'V' */
0x11, 0x11, 0x11, 0x11, 0x11, 0x0A, 0x04, 0x00,
/* 0x57: 'W' */
0x11, 0x11, 0x11, 0x15, 0x15, 0x15, 0x0A, 0x00,
/* 0x58: 'X' */
0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11, 0x00,
/* 0x59: 'Y' */
0x11, 0x11, 0x0A, 0x04, 0x04, 0x04, 0x04, 0x00,
/* 0x5A: 'Z' */
0x1F, 0x10, 0x08, 0x0E, 0x02, 0x01, 0x1F, 0x00,
/* 0x5B: '[' */
0x1E, 0x02, 0x02, 0x02, 0x02, 0x02, 0x1E, 0x00,
/* 0x5C: '\' */
0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x00, 0x00,
/* 0x5D: ']' */
0x1E, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1E, 0x00,
/* 0x5E: '^' */
0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x5F: '_' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00,
/* 0x60: ''' */
0x06, 0x06, 0x04, 0x08, 0x00, 0x00, 0x00, 0x00,
/* 0x61: 'a' */
0x00, 0x00, 0x06, 0x08, 0x0E, 0x09, 0x1E, 0x00,
/* 0x62: 'b' */
0x01, 0x01, 0x0D, 0x13, 0x11, 0x13, 0x0D, 0x00,
/* 0x63: 'c' */
0x00, 0x00, 0x0E, 0x11, 0x01, 0x11, 0x0E, 0x00,
/* 0x64: 'd' */
0x10, 0x10, 0x16, 0x19, 0x11, 0x19, 0x16, 0x00,
/* 0x65: 'e' */
0x00, 0x00, 0x0E, 0x11, 0x1F, 0x01, 0x0E, 0x00,
/* 0x66: 'f' */
0x08, 0x14, 0x04, 0x0E, 0x04, 0x04, 0x04, 0x00,
/* 0x67: 'g' */
0x00, 0x00, 0x0E, 0x19, 0x19, 0x16, 0x10, 0x0E,
/* 0x68: 'h' */
0x01, 0x01, 0x0D, 0x13, 0x11, 0x11, 0x11, 0x00,
/* 0x69: 'i' */
0x04, 0x00, 0x06, 0x04, 0x04, 0x04, 0x0E, 0x00,
/* 0x6A: 'j' */
0x08, 0x00, 0x08, 0x08, 0x08, 0x09, 0x06, 0x00,
/* 0x6B: 'k' */
0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09, 0x00,
/* 0x6C: 'l' */
0x06, 0x04, 0x04, 0x04, 0x04, 0x04, 0x0E, 0x00,
/* 0x6D: 'm' */
0x00, 0x00, 0x0B, 0x15, 0x15, 0x15, 0x15, 0x00,
/* 0x6E: 'n' */
0x00, 0x00, 0x0D, 0x13, 0x11, 0x11, 0x11, 0x00,
/* 0x6F: 'o' */
0x00, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00,
/* 0x70: 'p' */
0x00, 0x00, 0x0D, 0x13, 0x13, 0x0D, 0x01, 0x01,
/* 0x71: 'q' */
0x00, 0x00, 0x16, 0x19, 0x19, 0x16, 0x10, 0x10,
/* 0x72: 'r' */
0x00, 0x00, 0x0D, 0x13, 0x01, 0x01, 0x01, 0x00,
/* 0x73: 's' */
0x00, 0x00, 0x1E, 0x01, 0x0E, 0x10, 0x0F, 0x00,
/* 0x74: 't' */
0x04, 0x04, 0x1F, 0x04, 0x04, 0x14, 0x08, 0x00,
/* 0x75: 'u' */
0x00, 0x00, 0x11, 0x11, 0x11, 0x19, 0x16, 0x00,
/* 0x76: 'v' */
0x00, 0x00, 0x11, 0x11, 0x11, 0x0A, 0x04, 0x00,
/* 0x77: 'w' */
0x00, 0x00, 0x11, 0x11, 0x15, 0x15, 0x0A, 0x00,
/* 0x78: 'x' */
0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00,
/* 0x79: 'y' */
0x00, 0x00, 0x11, 0x11, 0x1E, 0x10, 0x11, 0x0E,
/* 0x7A: 'z' */
0x00, 0x00, 0x1F, 0x08, 0x04, 0x02, 0x1F, 0x00,
/* 0x7B: '{' */
0x08, 0x04, 0x04, 0x02, 0x04, 0x04, 0x08, 0x00,
/* 0x7C: '|' */
0x04, 0x04, 0x04, 0x00, 0x04, 0x04, 0x04, 0x00,
/* 0x7D: '}' */
0x02, 0x04, 0x04, 0x08, 0x04, 0x04, 0x02, 0x00,
/* 0x7E: '~' */
0x02, 0x15, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x7F: ' ' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* Special Symbols starting at character 0x80 */
/* 0x80: Circle - Empty */
0x00, 0x00, 0x0C, 0x12, 0x12, 0x0C, 0x00, 0x00,
/* 0x81: Circle - Full */
0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x0C, 0x00, 0x00,
/* 0x82: Square - Empty */
0x00, 0x00, 0x1E, 0x12, 0x12, 0x1E, 0x00, 0x00,
/* 0x83: Square - Full */
0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00,
/* 0x84: Up - Empty */
0x00, 0x00, 0x0C, 0x0C, 0x12, 0x1E, 0x00, 0x00,
/* 0x85: Up - Full */
0x00, 0x00, 0x0C, 0x0C, 0x1E, 0x1E, 0x00, 0x00,
/* 0x86: Down - Empty */
0x00, 0x00, 0x1E, 0x12, 0x0C, 0x0C, 0x00, 0x00,
/* 0x87: Down - Full */
0x00, 0x00, 0x1E, 0x1E, 0x0C, 0x0C, 0x00, 0x00,
/* 0x88: Left - Empty */
0x00, 0x00, 0x18, 0x16, 0x16, 0x18, 0x00, 0x00,
/* 0x89: Left - Full */
0x00, 0x00, 0x18, 0x1E, 0x1E, 0x18, 0x00, 0x00,
/* 0x8A: Right - Empty */
0x00, 0x00, 0x06, 0x1A, 0x1A, 0x06, 0x00, 0x00,
/* 0x8B: Right - Full */
0x00, 0x00, 0x06, 0x1E, 0x1E, 0x06, 0x00, 0x00,
/* 0x8C: Wait - Empty */
0x00, 0x00, 0x0C, 0x12, 0x12, 0x0C, 0x00, 0x00,
/* 0x8D: Wait - Full */
0x00, 0x00, 0x0C, 0x1E, 0x1E, 0x0C, 0x00, 0x00,
/* 0x8E: Walk - Empty */
0x00, 0x00, 0x1E, 0x12, 0x12, 0x1E, 0x00, 0x00,
/* 0x8F: Walk - Full */
0x00, 0x00, 0x1E, 0x1E, 0x1E, 0x1E, 0x00, 0x00,
};
static const uint8_t Font_16x24_h[(144-32)*48] = {
/* 0x20: Space ' ' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x21: '!' */
0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x22: '"' */
0x00, 0x00, 0x00, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00, 0xCC, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x23: '#' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x0C, 0x60, 0x0C,
0x60, 0x0C, 0x30, 0x06, 0x30, 0x06, 0xFE, 0x1F, 0xFE, 0x1F, 0x30, 0x06, 0x38, 0x07, 0x18, 0x03,
0xFE, 0x1F, 0xFE, 0x1F, 0x18, 0x03, 0x18, 0x03, 0x8C, 0x01, 0x8C, 0x01, 0x8C, 0x01, 0x00, 0x00,
/* 0x24: '$' */
0x00, 0x00, 0x80, 0x00, 0xE0, 0x03, 0xF8, 0x0F, 0x9C, 0x0E, 0x8C, 0x1C, 0x8C, 0x18, 0x8C, 0x00,
0x98, 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0E, 0x80, 0x1C, 0x8C, 0x18, 0x8C, 0x18, 0x9C, 0x18,
0xB8, 0x0C, 0xF0, 0x0F, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x25: '%' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x18, 0x1B, 0x0C, 0x11, 0x0C, 0x11, 0x06, 0x11, 0x06,
0x11, 0x03, 0x11, 0x03, 0x9B, 0x01, 0x8E, 0x01, 0xC0, 0x38, 0xC0, 0x6C, 0x60, 0x44, 0x60, 0x44,
0x30, 0x44, 0x30, 0x44, 0x18, 0x44, 0x18, 0x6C, 0x0C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x26: '&' */
0x00, 0x00, 0xE0, 0x01, 0xF0, 0x03, 0x38, 0x07, 0x18, 0x06, 0x18, 0x06, 0x30, 0x03, 0xF0, 0x01,
0xF0, 0x00, 0xF8, 0x00, 0x9C, 0x31, 0x0E, 0x33, 0x06, 0x1E, 0x06, 0x1C, 0x06, 0x1C, 0x06, 0x3F,
0xFC, 0x73, 0xF0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x27: ''' */
0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x28: '(' */
0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00,
0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x00,
/* 0x29: ')' */
0x00, 0x00, 0x20, 0x00, 0x60, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x03,
0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06,
0x00, 0x03, 0x00, 0x03, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x00, 0x00, 0x00,
/* 0x2A: '*' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xD8, 0x06, 0xF8, 0x07, 0xE0, 0x01, 0x30, 0x03, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x2B: '+' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xFC, 0x3F, 0xFC, 0x3F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x2C: ',' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x2D: '-' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x2E: '.' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x2F: '/' */
0x00, 0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03,
0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x30: '0' */
0x00, 0x00, 0xE0, 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x18, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18,
0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x18, 0x0C, 0x38, 0x0E,
0xF0, 0x07, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x31: '1' */
0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0xC0, 0x01, 0xF0, 0x01, 0x98, 0x01, 0x88, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x32: '2' */
0x00, 0x00, 0xE0, 0x03, 0xF8, 0x0F, 0x18, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x00, 0x18, 0x00, 0x18,
0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00,
0xFC, 0x1F, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x33: '3' */
0x00, 0x00, 0xE0, 0x01, 0xF8, 0x07, 0x18, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x00, 0x0C, 0x00, 0x06,
0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x18, 0x0C,
0xF8, 0x07, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x34: '4' */
0x00, 0x00, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x0D, 0xC0, 0x0C, 0x60, 0x0C,
0x60, 0x0C, 0x30, 0x0C, 0x18, 0x0C, 0x0C, 0x0C, 0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x0C, 0x00, 0x0C,
0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x35: '5' */
0x00, 0x00, 0xF8, 0x0F, 0xF8, 0x0F, 0x18, 0x00, 0x18, 0x00, 0x0C, 0x00, 0xEC, 0x03, 0xFC, 0x07,
0x1C, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x18, 0x1C, 0x0C, 0x18, 0x0E,
0xF8, 0x07, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x36: '6' */
0x00, 0x00, 0xC0, 0x07, 0xF0, 0x0F, 0x38, 0x1C, 0x18, 0x18, 0x18, 0x00, 0x0C, 0x00, 0xCC, 0x03,
0xEC, 0x0F, 0x3C, 0x0E, 0x1C, 0x1C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x18, 0x1C, 0x38, 0x0E,
0xF0, 0x07, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x37: '7' */
0x00, 0x00, 0xFC, 0x1F, 0xFC, 0x1F, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x80, 0x03,
0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x70, 0x00, 0x30, 0x00,
0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x38: '8' */
0x00, 0x00, 0xE0, 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x38, 0x06,
0xF0, 0x07, 0xF0, 0x07, 0x18, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x38, 0x0C,
0xF8, 0x0F, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x39: '9' */
0x00, 0x00, 0xE0, 0x03, 0xF0, 0x07, 0x38, 0x0E, 0x1C, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18,
0x1C, 0x1C, 0x38, 0x1E, 0xF8, 0x1B, 0xE0, 0x19, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0C, 0x1C, 0x0E,
0xF8, 0x07, 0xF0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3A: ':' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3B: ';' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x80, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x01, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3C: '<' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0x00, 0x1C, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x18, 0x00, 0xF8, 0x00, 0xE0, 0x03,
0x80, 0x0F, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3D: '=' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3E: '>' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x00, 0x18, 0x00, 0x1F, 0xC0, 0x07,
0xF0, 0x01, 0x38, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x3F: '?' */
0x00, 0x00, 0xE0, 0x03, 0xF8, 0x0F, 0x18, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x00, 0x18, 0x00, 0x0C,
0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x40: '@' */
0x00, 0x00, 0x00, 0x00, 0xE0, 0x07, 0x18, 0x18, 0x04, 0x20, 0xC2, 0x29, 0x22, 0x4A, 0x11, 0x44,
0x09, 0x44, 0x09, 0x44, 0x09, 0x44, 0x09, 0x22, 0x11, 0x13, 0xE2, 0x0C, 0x02, 0x40, 0x04, 0x20,
0x18, 0x18, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x41: 'A' */
0x00, 0x00, 0x80, 0x03, 0x80, 0x03, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0x60, 0x0C, 0x60, 0x0C,
0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0xF8, 0x3F, 0xF8, 0x3F, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60,
0x06, 0xC0, 0x06, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x42: 'B' */
0x00, 0x00, 0xFC, 0x03, 0xFC, 0x0F, 0x0C, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x0C,
0xFC, 0x07, 0xFC, 0x0F, 0x0C, 0x18, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x18,
0xFC, 0x1F, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x43: 'C' */
0x00, 0x00, 0xC0, 0x07, 0xF0, 0x1F, 0x38, 0x38, 0x1C, 0x30, 0x0C, 0x70, 0x06, 0x60, 0x06, 0x00,
0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x60, 0x0C, 0x70, 0x1C, 0x30,
0xF0, 0x1F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x44: 'D' */
0x00, 0x00, 0xFE, 0x03, 0xFE, 0x0F, 0x06, 0x0E, 0x06, 0x18, 0x06, 0x18, 0x06, 0x30, 0x06, 0x30,
0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x18, 0x06, 0x18, 0x06, 0x0E,
0xFE, 0x0F, 0xFE, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x45: 'E' */
0x00, 0x00, 0xFC, 0x3F, 0xFC, 0x3F, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0xFC, 0x1F, 0xFC, 0x1F, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0xFC, 0x3F, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x46: 'F' */
0x00, 0x00, 0xF8, 0x3F, 0xF8, 0x3F, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
0xF8, 0x1F, 0xF8, 0x1F, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
0x18, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x47: 'G' */
0x00, 0x00, 0xE0, 0x0F, 0xF8, 0x3F, 0x3C, 0x78, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xC0, 0x03, 0x00,
0x03, 0x00, 0x03, 0xFE, 0x03, 0xFE, 0x03, 0xC0, 0x07, 0xC0, 0x06, 0xC0, 0x0E, 0xC0, 0x3C, 0xF0,
0xF8, 0x3F, 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x48: 'H' */
0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30,
0xFC, 0x3F, 0xFC, 0x3F, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30,
0x0C, 0x30, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x49: 'I' */
0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4A: 'J' */
0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06,
0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x18, 0x06, 0x18, 0x06, 0x38, 0x07,
0xF0, 0x03, 0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4B: 'K' */
0x00, 0x00, 0x06, 0x30, 0x06, 0x18, 0x06, 0x0C, 0x06, 0x06, 0x06, 0x03, 0x86, 0x01, 0xC6, 0x00,
0x66, 0x00, 0x76, 0x00, 0xDE, 0x00, 0x8E, 0x01, 0x06, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x06, 0x18,
0x06, 0x30, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4C: 'L' */
0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00,
0xF8, 0x1F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4D: 'M' */
0x00, 0x00, 0x0E, 0xE0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x36, 0xD8, 0x36, 0xD8, 0x36, 0xD8,
0x36, 0xD8, 0x66, 0xCC, 0x66, 0xCC, 0x66, 0xCC, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6,
0x86, 0xC3, 0x86, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4E: 'N' */
0x00, 0x00, 0x0C, 0x30, 0x1C, 0x30, 0x3C, 0x30, 0x3C, 0x30, 0x6C, 0x30, 0x6C, 0x30, 0xCC, 0x30,
0xCC, 0x30, 0x8C, 0x31, 0x0C, 0x33, 0x0C, 0x33, 0x0C, 0x36, 0x0C, 0x36, 0x0C, 0x3C, 0x0C, 0x3C,
0x0C, 0x38, 0x0C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x4F: 'O' */
0x00, 0x00, 0xE0, 0x07, 0xF8, 0x1F, 0x1C, 0x38, 0x0E, 0x70, 0x06, 0x60, 0x03, 0xC0, 0x03, 0xC0,
0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x06, 0x60, 0x0E, 0x70, 0x1C, 0x38,
0xF8, 0x1F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x50: 'P' */
0x00, 0x00, 0xFC, 0x0F, 0xFC, 0x1F, 0x0C, 0x38, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30,
0x0C, 0x18, 0xFC, 0x1F, 0xFC, 0x07, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00,
0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x51: 'Q' */
0x00, 0x00, 0xE0, 0x07, 0xF8, 0x1F, 0x1C, 0x38, 0x0E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x03, 0xC0,
0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x63, 0x0E, 0x3F, 0x1C, 0x3C,
0xF8, 0x3F, 0xE0, 0xF7, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x52: 'R' */
0x00, 0x00, 0xFE, 0x0F, 0xFE, 0x1F, 0x06, 0x38, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x38,
0xFE, 0x1F, 0xFE, 0x07, 0x06, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x06, 0x18, 0x06, 0x18, 0x06, 0x30,
0x06, 0x30, 0x06, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x53: 'S' */
0x00, 0x00, 0xE0, 0x03, 0xF8, 0x0F, 0x1C, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x00, 0x1C, 0x00,
0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x06, 0x30, 0x06, 0x30, 0x0E, 0x30, 0x1C, 0x1C,
0xF8, 0x0F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x54: 'T' */
0x00, 0x00, 0xFE, 0x7F, 0xFE, 0x7F, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x55: 'U' */
0x00, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30,
0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x18, 0x18,
0xF8, 0x1F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x56: 'V' */
0x00, 0x00, 0x03, 0x60, 0x06, 0x30, 0x06, 0x30, 0x06, 0x30, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x18,
0x18, 0x0C, 0x18, 0x0C, 0x38, 0x0E, 0x30, 0x06, 0x30, 0x06, 0x70, 0x07, 0x60, 0x03, 0x60, 0x03,
0xC0, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x57: 'W' */
0x00, 0x00, 0x03, 0x60, 0xC3, 0x61, 0xC3, 0x61, 0xC3, 0x61, 0x66, 0x33, 0x66, 0x33, 0x66, 0x33,
0x66, 0x33, 0x66, 0x33, 0x66, 0x33, 0x6C, 0x1B, 0x6C, 0x1B, 0x6C, 0x1B, 0x2C, 0x1A, 0x3C, 0x1E,
0x38, 0x0E, 0x38, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x58: 'X' */
0x00, 0x00, 0x0F, 0xE0, 0x0C, 0x70, 0x18, 0x30, 0x30, 0x18, 0x70, 0x0C, 0x60, 0x0E, 0xC0, 0x07,
0x80, 0x03, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x06, 0x70, 0x0C, 0x30, 0x1C, 0x18, 0x18, 0x0C, 0x30,
0x0E, 0x60, 0x07, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x59: 'Y' */
0x00, 0x00, 0x03, 0xC0, 0x06, 0x60, 0x0C, 0x30, 0x1C, 0x38, 0x38, 0x18, 0x30, 0x0C, 0x60, 0x06,
0xE0, 0x07, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x5A: 'Z' */
0x00, 0x00, 0xFC, 0x7F, 0xFC, 0x7F, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06,
0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00,
0xFE, 0x7F, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x5B: '[' */
0x00, 0x00, 0xE0, 0x03, 0xE0, 0x03, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00,
0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xE0, 0x03, 0xE0, 0x03, 0x00, 0x00,
/* 0x5C: '\' */
0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x5D: ']' */
0x00, 0x00, 0xE0, 0x03, 0xE0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03,
0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0x00, 0x00,
/* 0x5E: '^' */
0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x30, 0x06,
0x30, 0x06, 0x18, 0x0C, 0x18, 0x0C, 0x00, 0x00, 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: '_' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x60: ''' */
0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x61: 'a' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0xF8, 0x07,
0x1C, 0x0C, 0x0C, 0x0C, 0x00, 0x0F, 0xF0, 0x0F, 0xF8, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0F,
0xF8, 0x0F, 0xF0, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x62: 'b' */
0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xD8, 0x03, 0xF8, 0x0F,
0x38, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x0C,
0xF8, 0x0F, 0xD8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x63: 'c' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0xF0, 0x07,
0x30, 0x0E, 0x18, 0x0C, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x0C, 0x30, 0x0E,
0xF0, 0x07, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x64: 'd' */
0x00, 0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0xC0, 0x1B, 0xF0, 0x1F,
0x30, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x1C,
0xF0, 0x1F, 0xC0, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x65: 'e' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0xF0, 0x0F,
0x30, 0x0C, 0x18, 0x18, 0xF8, 0x1F, 0xF8, 0x1F, 0x18, 0x00, 0x18, 0x00, 0x38, 0x18, 0x30, 0x1C,
0xF0, 0x0F, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x66: 'f' */
0x00, 0x00, 0x80, 0x0F, 0xC0, 0x0F, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF0, 0x07, 0xF0, 0x07,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x67: 'g' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x0D, 0xF8, 0x0F,
0x18, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x0E,
0xF8, 0x0F, 0xE0, 0x0D, 0x00, 0x0C, 0x0C, 0x0C, 0x1C, 0x06, 0xF8, 0x07, 0xF0, 0x01, 0x00, 0x00,
/* 0x68: 'h' */
0x00, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0xD8, 0x07, 0xF8, 0x0F,
0x38, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x69: 'i' */
0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x6A: 'j' */
0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x00, 0x00,
/* 0x6B: 'k' */
0x00, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x0C, 0x0C, 0x06,
0x0C, 0x03, 0x8C, 0x01, 0xCC, 0x00, 0x6C, 0x00, 0xFC, 0x00, 0x9C, 0x01, 0x8C, 0x03, 0x0C, 0x03,
0x0C, 0x06, 0x0C, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x6C: 'l' */
0x00, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x6D: 'm' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x3C, 0xFF, 0x7E,
0xC7, 0xE3, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1, 0x83, 0xC1,
0x83, 0xC1, 0x83, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x6E: 'n' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x07, 0xF8, 0x0F,
0x38, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x6F: 'o' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0xF0, 0x0F,
0x30, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x0C,
0xF0, 0x0F, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x70: 'p' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0x03, 0xF8, 0x0F,
0x38, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x0C,
0xF8, 0x0F, 0xD8, 0x03, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00, 0x00,
/* 0x71: 'q' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x1B, 0xF0, 0x1F,
0x30, 0x1C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x1C,
0xF0, 0x1F, 0xC0, 0x1B, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x00,
/* 0x72: 'r' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x07, 0xF0, 0x03,
0x70, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x73: 's' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x03, 0xF0, 0x03,
0x38, 0x0E, 0x18, 0x0C, 0x38, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x0C, 0x18, 0x0C, 0x38, 0x0E,
0xF0, 0x07, 0xE0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x74: 't' */
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xF0, 0x07, 0xF0, 0x07,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x07, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x75: 'u' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, 0x1C,
0xF0, 0x1F, 0xE0, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x76: 'v' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x18, 0x18, 0x0C,
0x18, 0x0C, 0x18, 0x0C, 0x30, 0x06, 0x30, 0x06, 0x30, 0x06, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03,
0xC0, 0x01, 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x77: 'w' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x41, 0xC1, 0x41,
0xC3, 0x61, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x1C, 0x1C,
0x1C, 0x1C, 0x1C, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x78: 'x' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x38, 0x38, 0x1C,
0x30, 0x0C, 0x60, 0x06, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0x60, 0x06, 0x30, 0x0C,
0x38, 0x1C, 0x1C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x79: 'y' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x30, 0x18,
0x30, 0x18, 0x70, 0x18, 0x60, 0x0C, 0x60, 0x0C, 0xE0, 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0x80, 0x03,
0x80, 0x03, 0x80, 0x03, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x01, 0xF0, 0x00, 0x70, 0x00, 0x00, 0x00,
/* 0x7A: 'z' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0xFC, 0x1F,
0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00,
0xFC, 0x1F, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x7B: '{' */
0x00, 0x00, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x30, 0x00, 0x60, 0x00, 0x40, 0x00, 0xC0, 0x00, 0xC0, 0x00,
0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
/* 0x7C: '|' */
0x00, 0x00, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x00,
/* 0x7D: '}' */
0x00, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x00, 0x03, 0x00, 0x03, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, 0x01,
0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x7E: '~' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF0, 0x10, 0xF8, 0x1F, 0x08, 0x0F, 0x00, 0x00, 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: ' ' */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* Special Symbols starting at character 0x80 */
/* 0x80: Circle - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0x30, 0x0C, 0x08, 0x10,
0x04, 0x20, 0x04, 0x20, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x02, 0x40, 0x04, 0x20,
0x04, 0x20, 0x08, 0x10, 0x30, 0x0C, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x81: Circle - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x03, 0xF0, 0x0F, 0xF8, 0x1F,
0xFC, 0x3F, 0xFC, 0x3F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFC, 0x3F,
0xFC, 0x3F, 0xF8, 0x1F, 0xF0, 0x0F, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x82: Square - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07,
0xF0, 0x0F, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xF0, 0x0F,
0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x83: Square - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x07,
0xF0, 0x0F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF0, 0x0F,
0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x84: Up - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0x60, 0x06, 0x30, 0x0C,
0x18, 0x18, 0x18, 0x18, 0xF8, 0x1F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x85: Up - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0xC0, 0x03, 0xE0, 0x07, 0xF0, 0x0F,
0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x86: Down - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, 0x18, 0x18, 0x18, 0x18,
0x30, 0x0C, 0x60, 0x06, 0xC0, 0x03, 0x80, 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,
/* 0x87: Down - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F,
0xF0, 0x0F, 0xE0, 0x07, 0xC0, 0x03, 0x80, 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,
/* 0x88: Left - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01,
0xF0, 0x01, 0x98, 0x01, 0x8C, 0x01, 0x86, 0x01, 0x86, 0x01, 0x8C, 0x01, 0x98, 0x01, 0xF0, 0x01,
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x89: Left - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x01,
0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x01, 0xF8, 0x01, 0xF0, 0x01,
0xE0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x8A: Right - Empty */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
0x80, 0x0F, 0x80, 0x19, 0x80, 0x31, 0x80, 0x61, 0x80, 0x61, 0x80, 0x31, 0x80, 0x19, 0x80, 0x0F,
0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x8B: Right - Full */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07,
0x80, 0x0F, 0x80, 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x7F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x0F,
0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0x8C: Wait - Empty */
0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x40, 0x01, 0x30, 0x06, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02,
0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x00, 0x00,
/* 0x8D: Wait - Full */
0x00, 0x00, 0xC0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xF0, 0x07, 0xD8, 0x0D, 0xD8, 0x0D,
0xD8, 0x0D, 0xD8, 0x0D, 0xD8, 0x0D, 0xD8, 0x0D, 0xD8, 0x0D, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03,
0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x60, 0x03, 0x00, 0x00,
/* 0x8E: Walk - Empty */
0x00, 0x00, 0xC0, 0x01, 0x20, 0x02, 0x20, 0x02, 0x40, 0x01, 0x30, 0x06, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x04, 0x10, 0x02, 0x20, 0x02, 0x20, 0x40, 0x01, 0x20, 0x02, 0x20, 0x02, 0x10, 0x04,
0x08, 0x08, 0x08, 0x08, 0x04, 0x10, 0x04, 0x10, 0x04, 0x20, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00,
/* 0x8F: Walk - Full */
0x00, 0x00, 0xC0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xF0, 0x07, 0xD8, 0x0D, 0xD8, 0x0D,
0xD8, 0x0D, 0xCC, 0x19, 0xC6, 0x31, 0xC2, 0x61, 0xC0, 0x01, 0x60, 0x03, 0x60, 0x03, 0x70, 0x06,
0x38, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0C, 0x18, 0x0C, 0x30, 0x0C, 0x60, 0x00, 0x00, 0x00, 0x00,
};
extern const arm_2d_a1_font_t ARM_2D_FONT_6x8;
const arm_2d_a1_font_t ARM_2D_FONT_6x8 = {
.use_as__arm_2d_font_t = {
.tileFont = {
.tRegion = {
.tSize = {
.iWidth = 6,
.iHeight = 8 * 112,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_BIN,
},
},
.pchBuffer = (uint8_t *)Font_6x8_h, //!< Characters bitmaps
},
.tCharSize = {
.iWidth = 6,
.iHeight = 8,
},
.nCount = 112, //!< Character count
.fnGetCharDescriptor = &ARM_2D_A1_FONT_GET_CHAR_DESCRIPTOR_HANDLER,
},
.nOffset = 32, //!< Character offset
};
extern const arm_2d_a1_font_t ARM_2D_FONT_16x24;
const arm_2d_a1_font_t ARM_2D_FONT_16x24 = {
.use_as__arm_2d_font_t = {
.tileFont = {
.tRegion = {
.tSize = {
.iWidth = 16,
.iHeight = 24 * 112,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_BIN,
},
},
.pchBuffer = (uint8_t *)Font_16x24_h, //!< Characters bitmaps
},
.tCharSize = {
.iWidth = 16,
.iHeight = 24,
},
.nCount = 112, //!< Character count
.fnGetCharDescriptor = &ARM_2D_A1_FONT_GET_CHAR_DESCRIPTOR_HANDLER,
},
.nOffset = 32, //!< Character offset
};
================================================
FILE: project/mdk/RTE/Acceleration/alarm_clock_font32.c
================================================
#include "arm_2d_helper.h"
#include "arm_extra_lcd_printf.h"
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-variable-declarations"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wgnu-variable-sized-type-not-at-end"
# pragma clang diagnostic ignored "-Wimplicit-int-conversion"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
#elif defined(__IS_COMPILER_GCC__)
# pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
# pragma GCC diagnostic ignored "-Wunused-variable"
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_suppress=1296
#endif
typedef struct {
uint16_t hwIndex;
arm_2d_size_t tCharSize;
int16_t iAdvance;
int16_t iBearingX;
int16_t iBearingY;
uint8_t chCodeLength;
uint8_t chUTF8[4];
} __ttf_char_descriptor_t;
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA1Font[] = {
// Glyph for character {0x2b}
0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00,
0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xfe, 0x07, 0x00, 0x60, 0x00, 0x00, 0x60,
0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00,
0x30, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0xfe, 0x07, 0x00,
// Glyph for character {0x2e}
0x06, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x00,
// Glyph for character {0x30}
0xf0, 0x7f, 0x00, 0xf8, 0xff, 0x00, 0x18, 0xc0, 0x00, 0x18, 0xc0, 0x00, 0x18, 0xc0, 0x00, 0x0c, 0xc0,
0x00, 0x0c, 0xc0, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x04, 0x60, 0x00, 0x00,
0x00, 0x00, 0x04, 0x20, 0x00, 0x06, 0x60, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00,
0x06, 0x30, 0x00, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x38, 0x00, 0xfd, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x31}
0x10, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1c, 0x00,
0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04,
0x00, 0x00, 0x0c, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00,
0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0xf0, 0x7f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0,
0x00, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xf8, 0x3f, 0x00, 0xf8,
0x1f, 0x00, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x00,
0x06, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xfd, 0x0f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x33}
0xf0, 0x7f, 0x00, 0xe0, 0xff, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0,
0x00, 0x00, 0xe0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0xf8, 0x3f, 0x00, 0xf8,
0x1f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00,
0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x34}
0x04, 0x00, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x60,
0x00, 0x06, 0x70, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0xfc, 0x1f, 0x00, 0xfc,
0x1f, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00,
0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0xf0, 0x7f, 0x00, 0xf8, 0x7f, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0c, 0x00,
0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xf8,
0x1f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00,
0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x0c, 0x00,
0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0xf8,
0x1f, 0x00, 0x04, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00,
0x06, 0x30, 0x00, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x38, 0x00, 0xfd, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x37}
0xf8, 0x3f, 0x00, 0xfc, 0x7f, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x06, 0x60,
0x00, 0x06, 0x70, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x02, 0x30, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00,
0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x00,
// Glyph for character {0x38}
0xf0, 0x7f, 0x00, 0xf8, 0xff, 0x00, 0x18, 0xc0, 0x00, 0x18, 0xc0, 0x00, 0x1c, 0xc0, 0x00, 0x0c, 0xc0,
0x00, 0x0c, 0xe0, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0xf8, 0x3f, 0x00, 0xf8,
0x1f, 0x00, 0x04, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00, 0x06, 0x30, 0x00,
0x06, 0x30, 0x00, 0x07, 0x30, 0x00, 0x03, 0x30, 0x00, 0x03, 0x38, 0x00, 0xfd, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x39}
0xf0, 0x7f, 0x00, 0xf8, 0xff, 0x00, 0x18, 0xc0, 0x00, 0x18, 0xc0, 0x00, 0x1c, 0xc0, 0x00, 0x0c, 0xc0,
0x00, 0x0c, 0xe0, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0x0c, 0x60, 0x00, 0xf8, 0x3f, 0x00, 0xf8,
0x1f, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00,
0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x1f, 0x00, 0xfe, 0x0f,
0x00,
// Glyph for character {0x3a}
0x06, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,
0x00, 0x00, 0x0f, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x06, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA1[] = {
{ 0, { 12, 18, }, 19, 2, 20, 1, {0x2b} },
{ 18, { 12, 3, }, 19, 2, 13, 1, {0x2d} },
{ 21, { 4, 4, }, 9, 2, 4, 1, {0x2e} },
{ 25, { 17, 23, }, 19, 0, 23, 1, {0x30} },
{ 48, { 6, 22, }, 19, 11, 22, 1, {0x31} },
{ 70, { 17, 23, }, 19, 0, 23, 1, {0x32} },
{ 93, { 17, 23, }, 19, 0, 23, 1, {0x33} },
{ 116, { 16, 22, }, 19, 1, 22, 1, {0x34} },
{ 138, { 16, 23, }, 19, 0, 23, 1, {0x35} },
{ 161, { 15, 23, }, 19, 0, 23, 1, {0x36} },
{ 184, { 16, 23, }, 19, 1, 23, 1, {0x37} },
{ 207, { 17, 23, }, 19, 0, 23, 1, {0x38} },
{ 230, { 17, 23, }, 19, 0, 23, 1, {0x39} },
{ 253, { 4, 15, }, 9, 2, 15, 1, {0x3a} },
{ 268, { 17, 23, }, 19, 0, 23, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA1Mask")
static arm_2d_tile_t c_tileUTF8UserFontA1Mask = {
.tRegion = {
.tSize = {
.iWidth = 17,
.iHeight = 322,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_1BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA1Font,
};
#define __UTF8_FONT_SIZE_1__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a1_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a1_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a1_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA1[dimof(c_tUTF8LookUpTableA1)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA1, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_32_A1 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA1Mask,
0, /* x offset */
0, /* y offset */
17, /* width */
322 /* height */
),
.tCharSize = {
.iWidth = 17,
.iHeight = 23,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a1_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a1_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_1__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA2Font[] = {
// Glyph for character {0x2b}
0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xfc, 0xef, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00, 0x00,
0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xef, 0x7f, 0x00, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0x00,
// Glyph for character {0x2e}
0x28, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0xaf, 0x00, 0xc0, 0x03, 0x00, 0xf0, 0x01, 0xd0, 0x02,
0x00, 0xf0, 0x00, 0xd0, 0x02, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf4, 0x00, 0xf0, 0x00, 0x00, 0xb4,
0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xb4, 0x00, 0x00, 0x3c, 0x00, 0x70,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00,
0x2d, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00,
0x2d, 0x00, 0x00, 0x0f, 0x00, 0x2e, 0x00, 0x40, 0x0f, 0x00, 0x1e, 0x00, 0x40, 0x0b, 0x00, 0x1f, 0x00,
0x80, 0x0b, 0x00, 0xf6, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03,
0x00, 0x00, 0x00, 0xd0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,
0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x3d, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0xb8,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80,
0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x2d, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00,
0x00, 0x00, 0x00, 0xf6, 0xff, 0xbf, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfd, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0xb8,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80,
0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00,
0x2d, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00,
0x80, 0x0b, 0x00, 0xf4, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x34}
0x20, 0x00, 0x00, 0x10, 0x00, 0xb0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x3c, 0x00, 0xb4, 0x00,
0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3d, 0x00, 0x78, 0x00, 0x00, 0x2d, 0x00, 0x3c, 0x00, 0x00, 0x2e,
0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x2c, 0x00, 0x00, 0x0f, 0x00, 0xf4,
0xff, 0xff, 0x02, 0x00, 0xe0, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00, 0x80,
0x0b, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x00,
0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0x2f, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xd0, 0x02,
0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x90,
0xff, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00,
0x2d, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00,
0x80, 0x0b, 0x00, 0xf4, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x36}
0x40, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xd0, 0x02,
0x00, 0x00, 0x00, 0xe0, 0x02, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x90,
0xff, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x34, 0x00, 0x00, 0x2d, 0x00, 0x78, 0x00, 0x00,
0x2d, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00,
0x2d, 0x00, 0x00, 0x0f, 0x00, 0x2e, 0x00, 0x40, 0x0f, 0x00, 0x1e, 0x00, 0x40, 0x0b, 0x00, 0x1f, 0x00,
0x80, 0x0b, 0x00, 0xf6, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x37}
0xc0, 0xff, 0xff, 0x1f, 0x00, 0xb0, 0xff, 0xff, 0x2b, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xb4, 0x00,
0x00, 0x3c, 0x00, 0xb4, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3d, 0x00, 0x3c, 0x00, 0x00, 0x2e,
0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x00, 0x0f, 0x00, 0x1c,
0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x40,
0x0b, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xd0, 0x03, 0x00, 0x00, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x00,
0xd0, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xf0, 0x00, 0xd0, 0x02,
0x00, 0xf0, 0x00, 0xe0, 0x02, 0x00, 0xf4, 0x00, 0xe0, 0x01, 0x00, 0xb4, 0x00, 0xf0, 0x00, 0x00, 0xb8,
0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xb4, 0x00, 0x00, 0x3c, 0x00, 0x90,
0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x34, 0x00, 0x00, 0x2d, 0x00, 0x78, 0x00, 0x00,
0x2d, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00,
0x2d, 0x00, 0x00, 0x0f, 0x00, 0x2e, 0x00, 0x40, 0x0f, 0x00, 0x1e, 0x00, 0x40, 0x0b, 0x00, 0x1f, 0x00,
0x80, 0x0b, 0x00, 0xf6, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0xff, 0x01, 0xc0, 0x03, 0x00, 0xf0, 0x00, 0xd0, 0x02,
0x00, 0xf0, 0x00, 0xe0, 0x02, 0x00, 0xf4, 0x00, 0xe0, 0x01, 0x00, 0xb4, 0x00, 0xf0, 0x00, 0x00, 0xb8,
0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xb4, 0x00, 0x00, 0x3c, 0x00, 0x90,
0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00,
0x2d, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x00,
0x80, 0x0b, 0x00, 0xf4, 0xff, 0xbf, 0x07, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x3a}
0x28, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00,
0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA2[] = {
{ 0, { 12, 18, }, 19, 2, 20, 1, {0x2b} },
{ 18, { 12, 3, }, 19, 2, 13, 1, {0x2d} },
{ 21, { 4, 4, }, 9, 2, 4, 1, {0x2e} },
{ 25, { 17, 23, }, 19, 0, 23, 1, {0x30} },
{ 48, { 6, 22, }, 19, 11, 22, 1, {0x31} },
{ 70, { 17, 23, }, 19, 0, 23, 1, {0x32} },
{ 93, { 17, 23, }, 19, 0, 23, 1, {0x33} },
{ 116, { 16, 22, }, 19, 1, 22, 1, {0x34} },
{ 138, { 16, 23, }, 19, 0, 23, 1, {0x35} },
{ 161, { 15, 23, }, 19, 0, 23, 1, {0x36} },
{ 184, { 16, 23, }, 19, 1, 23, 1, {0x37} },
{ 207, { 17, 23, }, 19, 0, 23, 1, {0x38} },
{ 230, { 17, 23, }, 19, 0, 23, 1, {0x39} },
{ 253, { 4, 15, }, 9, 2, 15, 1, {0x3a} },
{ 268, { 17, 23, }, 19, 0, 23, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA2Mask")
static arm_2d_tile_t c_tileUTF8UserFontA2Mask = {
.tRegion = {
.tSize = {
.iWidth = 17,
.iHeight = 322,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_2BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA2Font,
};
#define __UTF8_FONT_SIZE_2__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a2_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a2_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a2_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA2[dimof(c_tUTF8LookUpTableA2)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA2, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_32_A2 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA2Mask,
0, /* x offset */
0, /* y offset */
17, /* width */
322 /* height */
),
.tCharSize = {
.iWidth = 17,
.iHeight = 23,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a2_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a2_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_2__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA4Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x9f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x53, 0x09, 0x33,
0x02, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xfb, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x90, 0xff, 0xef, 0xfd,
0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3,
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf9, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x33, 0x33, 0x32, 0x33, 0x02, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xfb, 0xff, 0x5f, 0x00, 0x00,
0x00, 0x90, 0xff, 0xef, 0xfd, 0xff, 0x1d, 0x00, 0x00, 0x00,
// Glyph for character {0x2e}
0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
// Glyph for character {0x30}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xba,
0x03, 0x00, 0xf2, 0x3d, 0x33, 0x33, 0x33, 0x33, 0xfd, 0x04, 0x00, 0xf5, 0x0b, 0x00, 0x00, 0x00, 0x10,
0xff, 0x01, 0x00, 0xf7, 0x09, 0x00, 0x00, 0x00, 0x30, 0xff, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00,
0x50, 0xcf, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00,
0x00, 0xa0, 0x7f, 0x00, 0x20, 0xef, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x5f, 0x00, 0x40, 0xbf, 0x00, 0x00,
0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x0a, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x05, 0x00, 0xb0, 0x4f,
0x00, 0x00, 0x00, 0x00, 0xf6, 0x0a, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x07, 0x00, 0xf1,
0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x05, 0x00, 0xf3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00,
0xf6, 0x0b, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x60, 0xaf, 0x00, 0x00, 0xfd, 0x34, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x10, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf1, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf5, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5d, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x7f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf4, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x05, 0x00, 0x00, 0x30, 0x33, 0x33, 0x33, 0x33, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xb0, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x04, 0x00, 0x00, 0xc2, 0xff,
0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x60, 0x3f, 0x33, 0x33, 0x33, 0x33, 0x01, 0x00, 0x00, 0xb0, 0x4f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1,
0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf6, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x34, 0x33, 0x33, 0x33, 0x03, 0x00,
0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x01, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x05, 0x00, 0x00, 0x30, 0x33, 0x33, 0x33, 0x33, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xb0, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x04, 0x00, 0x00, 0xc0, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0xf5, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf7, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0x00, 0x31, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x50, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x10, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5f,
0x00, 0x30, 0xcf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x2f, 0x00, 0x60, 0xaf, 0x00, 0x00, 0x00, 0x00, 0xf2,
0x0f, 0x00, 0x90, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0d, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x00, 0x00,
0xf7, 0x0b, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x08, 0x00, 0xf1, 0x0f, 0x00, 0x00, 0x00,
0x00, 0xfb, 0x06, 0x00, 0xf3, 0x0c, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf3, 0x39, 0x33, 0x33,
0x33, 0x23, 0xee, 0x01, 0x00, 0x40, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0xf9, 0xff,
0xff, 0xff, 0xdf, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xaf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x6f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x06,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x09,
0x00, 0x00, 0xf2, 0x3d, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0xf5, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0xf5, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf7, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0x00, 0x31, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x50, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0x0a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xaf, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa7, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc2, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x3f, 0x33, 0x33, 0x33, 0x33, 0xf5, 0x09, 0x00, 0xb0, 0x4f,
0x00, 0x00, 0x00, 0x00, 0xf7, 0x09, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0xf1,
0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0xf3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0xf6, 0x0b, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0xfd, 0x34, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x37}
0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x00, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x3b,
0x00, 0x20, 0xdf, 0x33, 0x33, 0x33, 0x33, 0xd3, 0x4f, 0x00, 0x50, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xf1,
0x1f, 0x00, 0x70, 0x9f, 0x00, 0x00, 0x00, 0x00, 0xf3, 0x0f, 0x00, 0xa0, 0x6f, 0x00, 0x00, 0x00, 0x00,
0xf5, 0x0c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0a, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00,
0x00, 0xfa, 0x07, 0x00, 0xf2, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x05, 0x00, 0xf4, 0x0b, 0x00, 0x00,
0x00, 0x00, 0xfe, 0x02, 0x00, 0xc0, 0x05, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x5d, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x7f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xc0, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0d, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x05, 0x00, 0xf2, 0x3d, 0x33, 0x33, 0x33, 0x33, 0xff, 0x03, 0x00, 0xf5, 0x0b, 0x00, 0x00, 0x00, 0x20,
0xff, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x40, 0xef, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00,
0x60, 0xbf, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
0x00, 0xb0, 0x6f, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4f, 0x00, 0x40, 0xaf, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xa7, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x04, 0x00, 0x00, 0xc2, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x3f, 0x33, 0x33, 0x33, 0x33, 0xf5, 0x09, 0x00, 0xb0, 0x4f,
0x00, 0x00, 0x00, 0x00, 0xf7, 0x09, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0xf1,
0x0f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0xf3, 0x0d, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0xf6, 0x0b, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0xfd, 0x34, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xe0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x05, 0x00, 0xf2, 0x3d, 0x33, 0x33, 0x33, 0x33, 0xff, 0x03, 0x00, 0xf5, 0x0b, 0x00, 0x00, 0x00, 0x20,
0xff, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x00, 0x00, 0x40, 0xef, 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0x00,
0x60, 0xbf, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x80, 0x9f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
0x00, 0xb0, 0x6f, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x4f, 0x00, 0x40, 0xaf, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xa7, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x04, 0x00, 0x00, 0xc0, 0xff,
0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x33, 0xf5, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf7, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xdf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xaf, 0x00, 0x00, 0x00, 0x31, 0x33, 0x33, 0x33, 0x83, 0x8f,
0x00, 0x00, 0x50, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x4c, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xef,
0x02, 0x00, 0x00,
// Glyph for character {0x3a}
0xb0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf9, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0x9f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA4[] = {
{ 0, { 12, 18, }, 19, 2, 20, 1, {0x2b} },
{ 18, { 12, 3, }, 19, 2, 13, 1, {0x2d} },
{ 21, { 4, 4, }, 9, 2, 4, 1, {0x2e} },
{ 25, { 17, 23, }, 19, 0, 23, 1, {0x30} },
{ 48, { 6, 22, }, 19, 11, 22, 1, {0x31} },
{ 70, { 17, 23, }, 19, 0, 23, 1, {0x32} },
{ 93, { 17, 23, }, 19, 0, 23, 1, {0x33} },
{ 116, { 16, 22, }, 19, 1, 22, 1, {0x34} },
{ 138, { 16, 23, }, 19, 0, 23, 1, {0x35} },
{ 161, { 15, 23, }, 19, 0, 23, 1, {0x36} },
{ 184, { 16, 23, }, 19, 1, 23, 1, {0x37} },
{ 207, { 17, 23, }, 19, 0, 23, 1, {0x38} },
{ 230, { 17, 23, }, 19, 0, 23, 1, {0x39} },
{ 253, { 4, 15, }, 9, 2, 15, 1, {0x3a} },
{ 268, { 17, 23, }, 19, 0, 23, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA4Mask")
static arm_2d_tile_t c_tileUTF8UserFontA4Mask = {
.tRegion = {
.tSize = {
.iWidth = 17,
.iHeight = 322,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_4BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA4Font,
};
#define __UTF8_FONT_SIZE_4__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a4_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a4_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a4_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA4[dimof(c_tUTF8LookUpTableA4)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA4, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_32_A4 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA4Mask,
0, /* x offset */
0, /* y offset */
17, /* width */
322 /* height */
),
.tCharSize = {
.iWidth = 17,
.iHeight = 23,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a4_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a4_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_4__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA8Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xff, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x05, 0x37, 0x38, 0x38, 0x5b, 0x9d, 0x06, 0x38, 0x38, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x9e, 0xff, 0xff, 0xff, 0xea, 0xd3, 0xff, 0xff, 0xff, 0xd7, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x67, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xb9, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe2, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0c, 0xfe, 0xfd, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x34, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x05, 0x37, 0x38, 0x38, 0x38, 0x2a, 0x38, 0x38, 0x38, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xfe, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x9e, 0xff, 0xff, 0xff, 0xea, 0xd3, 0xff, 0xff, 0xff, 0xd7, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2e}
0x08, 0xaf, 0xad, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb4, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9e, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0xae, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x54, 0x00,
0x00, 0x00, 0x03, 0xec, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xb5, 0x35,
0x00, 0x00, 0x26, 0xff, 0xd1, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x33, 0xd6, 0xff, 0x43,
0x00, 0x00, 0x50, 0xff, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xff, 0xff, 0x1c,
0x00, 0x00, 0x7a, 0xff, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xf3, 0x00,
0x00, 0x00, 0xa3, 0xff, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xcc, 0x00,
0x00, 0x00, 0xcd, 0xff, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xa5, 0x00,
0x00, 0x01, 0xf5, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xff, 0x7d, 0x00,
0x00, 0x20, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xff, 0x56, 0x00,
0x00, 0x49, 0xff, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xff, 0x2e, 0x00,
0x00, 0x0e, 0xcc, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xa6, 0x04, 0x00,
0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x6d, 0xf3, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xd5, 0x59, 0x00, 0x00,
0x00, 0xbd, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xff, 0xa9, 0x00, 0x00,
0x00, 0xe7, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xff, 0x7f, 0x00, 0x00,
0x10, 0xff, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0x55, 0x00, 0x00,
0x39, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0x2c, 0x00, 0x00,
0x62, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xfb, 0x06, 0x00, 0x00,
0x8c, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xff, 0xd8, 0x00, 0x00, 0x00,
0xb5, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0xff, 0xae, 0x00, 0x00, 0x00,
0xde, 0xf4, 0x4d, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x85, 0x00, 0x00, 0x00,
0xb7, 0x7f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc9, 0x4c, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x00, 0x00, 0x11, 0xb3, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xd9, 0xff, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x16, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x39, 0xff, 0xf3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5c, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa3, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc6, 0xff, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe9, 0xff, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xb1, 0xa4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1b, 0xd8, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x6e, 0xff, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x99, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc4, 0xff, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xee, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1a, 0xff, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x45, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x70, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7f, 0xff, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x08, 0xc8, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0x00, 0x00, 0x01, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x76, 0x03,
0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xf7, 0x50,
0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37, 0xfb, 0xff, 0x34,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xe4, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xbd, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0x95, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xff, 0x46, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x00,
0x00, 0x00, 0x06, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x91, 0x46, 0x00, 0x00,
0x00, 0x00, 0x20, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x3c, 0x00, 0x00, 0x00,
0x00, 0x6d, 0xf3, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1d, 0x00, 0x00, 0x00, 0x00,
0x00, 0xbd, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe7, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xff, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x39, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x62, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x8c, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xde, 0xf4, 0x4d, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb7, 0x7f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x1e, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0x00, 0x00, 0x01, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x76, 0x03,
0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xf7, 0x50,
0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37, 0xfb, 0xff, 0x34,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xe4, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xbd, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0x95, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6e, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xff, 0x46, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x00,
0x00, 0x00, 0x06, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x91, 0x46, 0x00, 0x00,
0x00, 0x00, 0x0a, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7b, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x5b, 0xfc, 0x96, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0x9b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x73, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x4b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x23, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf7, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xd2, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xaa, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00,
0x00, 0x50, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc8, 0x4a, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x00, 0x92, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x11, 0x00,
0x00, 0x16, 0xff, 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xff, 0x51, 0x00,
0x00, 0x3f, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xfe, 0xff, 0x2a, 0x00,
0x00, 0x69, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xfc, 0x06, 0x00,
0x00, 0x93, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xff, 0xdb, 0x00, 0x00,
0x00, 0xbd, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xb4, 0x00, 0x00,
0x00, 0xe6, 0xff, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xff, 0x8c, 0x00, 0x00,
0x10, 0xff, 0xf6, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0xff, 0x64, 0x00, 0x00,
0x3a, 0xff, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xff, 0x3d, 0x00, 0x00,
0x30, 0xf9, 0x99, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x2d, 0xe4, 0xe9, 0x11, 0x00, 0x00,
0x00, 0x48, 0xcb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x89, 0x1f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd8, 0x96, 0x1e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xaa, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0x8f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb3, 0xff, 0x65, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xde, 0xff, 0x3b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xfe, 0xff, 0x12, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xff, 0xe8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xff, 0x95, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0xf4, 0x6b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x0f, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x54, 0x00,
0x00, 0x00, 0x04, 0xec, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0x05, 0x00,
0x00, 0x00, 0x29, 0xff, 0xd1, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x32, 0x00, 0x00, 0x00,
0x00, 0x00, 0x54, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xab, 0xff, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd6, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x06, 0xfb, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2d, 0xff, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x41, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x72, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x35, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0a, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7b, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x5b, 0xfc, 0x96, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0x9b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x73, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x4b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x23, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf7, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xd2, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xaa, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00,
0x00, 0x50, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc8, 0x4a, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0c, 0xff, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x36, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xb3, 0xff, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xdd, 0xff, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x09, 0xfd, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x31, 0xff, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0xff, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x35, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7b, 0x07, 0x00, 0x00,
0x00, 0x6d, 0xf3, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x5b, 0xfc, 0x96, 0x00, 0x00,
0x00, 0xbd, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0x9b, 0x00, 0x00,
0x00, 0xe7, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x73, 0x00, 0x00,
0x10, 0xff, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x4b, 0x00, 0x00,
0x39, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x23, 0x00, 0x00,
0x62, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf7, 0x02, 0x00, 0x00,
0x8c, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xd2, 0x00, 0x00, 0x00,
0xb5, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xaa, 0x00, 0x00, 0x00,
0xde, 0xf4, 0x4d, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00,
0xb7, 0x7f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc8, 0x4a, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x37}
0x00, 0x00, 0x0f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x54, 0x00, 0x00,
0x00, 0x03, 0xec, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0xbd, 0x37, 0x00,
0x00, 0x27, 0xff, 0xd1, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x33, 0xdb, 0xff, 0x42, 0x00,
0x00, 0x50, 0xff, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xff, 0xff, 0x1a, 0x00,
0x00, 0x7a, 0xff, 0x93, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0xff, 0xf2, 0x00, 0x00,
0x00, 0xa4, 0xff, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xff, 0xcb, 0x00, 0x00,
0x00, 0xce, 0xff, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xa3, 0x00, 0x00,
0x01, 0xf5, 0xff, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0x7c, 0x00, 0x00,
0x21, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xff, 0x54, 0x00, 0x00,
0x49, 0xff, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xff, 0x2d, 0x00, 0x00,
0x0d, 0xc8, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xa0, 0x03, 0x00, 0x00,
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xda, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xa7, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xff, 0x7e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0xff, 0x54, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0x2a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xfb, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xff, 0xd7, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc5, 0x4a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x76, 0x03,
0x00, 0x00, 0x04, 0xec, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xf7, 0x50,
0x00, 0x00, 0x29, 0xff, 0xd1, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37, 0xfb, 0xff, 0x34,
0x00, 0x00, 0x54, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x80, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xe4, 0x00,
0x00, 0x00, 0xab, 0xff, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xbd, 0x00,
0x00, 0x00, 0xd6, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0x95, 0x00,
0x00, 0x06, 0xfb, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6e, 0x00,
0x00, 0x2d, 0xff, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xff, 0x46, 0x00,
0x00, 0x41, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x00,
0x00, 0x00, 0x72, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x91, 0x46, 0x00, 0x00,
0x00, 0x00, 0x20, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7b, 0x07, 0x00, 0x00,
0x00, 0x6d, 0xf3, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x5b, 0xfc, 0x96, 0x00, 0x00,
0x00, 0xbd, 0xff, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0x9b, 0x00, 0x00,
0x00, 0xe7, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x73, 0x00, 0x00,
0x10, 0xff, 0xfa, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x4b, 0x00, 0x00,
0x39, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x23, 0x00, 0x00,
0x62, 0xff, 0xb2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf7, 0x02, 0x00, 0x00,
0x8c, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xd2, 0x00, 0x00, 0x00,
0xb5, 0xff, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xaa, 0x00, 0x00, 0x00,
0xde, 0xf4, 0x4d, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00,
0xb7, 0x7f, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc8, 0x4a, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x76, 0x03,
0x00, 0x00, 0x04, 0xec, 0x8e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xf7, 0x50,
0x00, 0x00, 0x29, 0xff, 0xd1, 0x33, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x37, 0xfb, 0xff, 0x34,
0x00, 0x00, 0x54, 0xff, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x80, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xff, 0xe4, 0x00,
0x00, 0x00, 0xab, 0xff, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xbd, 0x00,
0x00, 0x00, 0xd6, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0x95, 0x00,
0x00, 0x06, 0xfb, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6e, 0x00,
0x00, 0x2d, 0xff, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xff, 0x46, 0x00,
0x00, 0x41, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x00,
0x00, 0x00, 0x72, 0xad, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x91, 0x46, 0x00, 0x00,
0x00, 0x00, 0x0a, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf1, 0x7b, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x5b, 0xfc, 0x96, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0x9b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0xff, 0x73, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xff, 0x4b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf4, 0xff, 0x23, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xf7, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xd2, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xff, 0xaa, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x8a, 0xff, 0x82, 0x00, 0x00, 0x00,
0x00, 0x50, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xac, 0xc8, 0x4a, 0x00, 0x00, 0x00,
0x0e, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x3a}
0x09, 0xb2, 0xaf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9e, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0xae, 0xa0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xaf, 0xad, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb4, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9e, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0xae, 0xa0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA8[] = {
{ 0, { 12, 18, }, 19, 2, 20, 1, {0x2b} },
{ 18, { 12, 3, }, 19, 2, 13, 1, {0x2d} },
{ 21, { 4, 4, }, 9, 2, 4, 1, {0x2e} },
{ 25, { 17, 23, }, 19, 0, 23, 1, {0x30} },
{ 48, { 6, 22, }, 19, 11, 22, 1, {0x31} },
{ 70, { 17, 23, }, 19, 0, 23, 1, {0x32} },
{ 93, { 17, 23, }, 19, 0, 23, 1, {0x33} },
{ 116, { 16, 22, }, 19, 1, 22, 1, {0x34} },
{ 138, { 16, 23, }, 19, 0, 23, 1, {0x35} },
{ 161, { 15, 23, }, 19, 0, 23, 1, {0x36} },
{ 184, { 16, 23, }, 19, 1, 23, 1, {0x37} },
{ 207, { 17, 23, }, 19, 0, 23, 1, {0x38} },
{ 230, { 17, 23, }, 19, 0, 23, 1, {0x39} },
{ 253, { 4, 15, }, 9, 2, 15, 1, {0x3a} },
{ 268, { 17, 23, }, 19, 0, 23, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA8Mask")
static arm_2d_tile_t c_tileUTF8UserFontA8Mask = {
.tRegion = {
.tSize = {
.iWidth = 17,
.iHeight = 322,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_8BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA8Font,
};
#define __UTF8_FONT_SIZE_8__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a8_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a8_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a8_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA8[dimof(c_tUTF8LookUpTableA8)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA8, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_32_A8 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA8Mask,
0, /* x offset */
0, /* y offset */
17, /* width */
322 /* height */
),
.tCharSize = {
.iWidth = 17,
.iHeight = 23,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a8_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a8_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_8__
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_warning=1296
#endif
================================================
FILE: project/mdk/RTE/Acceleration/alarm_clock_font64.c
================================================
#include "arm_2d_helper.h"
#include "arm_extra_lcd_printf.h"
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-variable-declarations"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wgnu-variable-sized-type-not-at-end"
# pragma clang diagnostic ignored "-Wimplicit-int-conversion"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
#elif defined(__IS_COMPILER_GCC__)
# pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
# pragma GCC diagnostic ignored "-Wunused-variable"
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_suppress=1296
#endif
typedef struct {
uint16_t hwIndex;
arm_2d_size_t tCharSize;
int16_t iAdvance;
int16_t iBearingX;
int16_t iBearingY;
uint8_t chCodeLength;
uint8_t chUTF8[4];
} __ttf_char_descriptor_t;
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA1Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0x00, 0xfe, 0xf7, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0x1f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00,
0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x1f, 0x00, 0x00, 0xfe, 0xf7, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0x1f, 0x00, 0x00, 0xfc, 0xff, 0x0f, 0x00, 0x00,
// Glyph for character {0x2e}
0x18, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0xbf, 0x00, 0xc0, 0xfd, 0xff, 0xdf, 0x01, 0xc0, 0x03, 0x00, 0xf0, 0x01, 0xc0, 0x03, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00,
0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0xe0, 0x01, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x00, 0x78, 0x00, 0xf0,
0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0x78, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3c,
0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x08, 0x00, 0x38, 0x00, 0x00, 0x1c, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x78, 0x00,
0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00,
0x3e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1f, 0x00, 0x80,
0x07, 0x00, 0x0f, 0x00, 0x80, 0x07, 0x00, 0xf7, 0xff, 0x7f, 0x07, 0x00, 0xfa, 0xff, 0xff, 0x02, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00,
0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0,
0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x3c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00,
0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xdf, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00,
0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00,
0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x80, 0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0xd0, 0xff, 0xff, 0x03, 0x00, 0xb8, 0xff, 0xff, 0x01, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00,
0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x3e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00,
0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x7f, 0x00, 0x00, 0xfa, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xfe, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1e,
0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xc0, 0xff, 0xff, 0x0d, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0,
0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf8, 0xff, 0xbf, 0x03, 0x00, 0xfc, 0xff, 0x7f, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x7c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00,
0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e,
0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x1f, 0x00, 0x80, 0x07, 0x00, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x0e, 0x00, 0x80, 0x07,
0x00, 0xf4, 0xff, 0x7f, 0x03, 0x00, 0xf8, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0xbf, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x60, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xfe, 0xff, 0x0f, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00,
0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x78,
0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00,
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0,
0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf8, 0xff, 0xbf, 0x03, 0x00, 0xfc, 0xff, 0x7f, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00,
0x00, 0xa0, 0xff, 0xff, 0x03, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0xd0, 0xff, 0xff, 0x03, 0x00, 0xb8, 0xff, 0xff, 0x0d, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00,
0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x3e, 0x00, 0x00, 0x0f, 0x00,
0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1f, 0x00, 0x80, 0x07, 0x00, 0x0f, 0x00, 0x80,
0x07, 0x00, 0xf7, 0xff, 0x7f, 0x07, 0x00, 0xfa, 0xff, 0xff, 0x02, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x37}
0xc0, 0xff, 0xff, 0x07, 0x00, 0xe0, 0xff, 0xff, 0x0f, 0x00, 0xd8, 0xff, 0xff, 0x17, 0x00, 0xb8, 0xff, 0xff, 0x3b, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x7c, 0x00, 0x00,
0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x3e, 0x00, 0x00, 0x0f, 0x00, 0x1e,
0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x80, 0x07, 0x00, 0x0f, 0x00, 0x80, 0x07,
0x00, 0x0e, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00,
0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0xfe, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xfe, 0xff, 0x3f, 0x00, 0xc0, 0xfd, 0xff, 0xdf, 0x01, 0xc0, 0x03, 0x00, 0xe0, 0x01, 0xc0, 0x03, 0x00, 0xf0, 0x00, 0xe0, 0x03, 0x00,
0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0xe0, 0x01, 0x00, 0xf8, 0x00, 0xf0, 0x01, 0x00, 0x78, 0x00, 0xf0,
0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3c,
0x00, 0x70, 0x00, 0x00, 0x3c, 0x00, 0xa0, 0xff, 0xff, 0x1b, 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0xd0, 0xff, 0xff, 0x03, 0x00, 0xb8, 0xff, 0xff, 0x0d, 0x00, 0x78, 0x00, 0x00, 0x1e, 0x00, 0x78, 0x00,
0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x1f, 0x00, 0x3c, 0x00, 0x00, 0x0f, 0x00,
0x3e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x0f, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1e, 0x00, 0x80, 0x07, 0x00, 0x1f, 0x00, 0x80,
0x07, 0x00, 0x0f, 0x00, 0x80, 0x07, 0x00, 0xf7, 0xff, 0x7f, 0x07, 0x00, 0xfa, 0xff, 0xff, 0x02, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0xff, 0xff, 0x1f, 0x00, 0x80, 0xff, 0xff, 0x3f, 0x00, 0x60, 0xff, 0xff, 0x1f, 0x00, 0xe0, 0xfe, 0xff, 0xef, 0x00, 0xe0, 0x01, 0x00, 0xf0, 0x00, 0xe0, 0x01, 0x00, 0x78, 0x00, 0xf0, 0x01, 0x00,
0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xf0, 0x00, 0x00, 0x7c, 0x00, 0xf8, 0x00, 0x00, 0x3c, 0x00, 0x78,
0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x00, 0x3e, 0x00, 0x7c, 0x00, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x00, 0x1e,
0x00, 0x38, 0x00, 0x00, 0x1e, 0x00, 0xd0, 0xff, 0xff, 0x0d, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0xc0, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0,
0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0xf8, 0xff, 0xbf, 0x03, 0x00, 0xfc, 0xff, 0x7f, 0x01, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00,
// Glyph for character {0x3a}
0x18, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00,
0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA1[] = {
{ 0, { 23, 36, }, 38, 5, 41, 1, {0x2b} },
{ 36, { 23, 5, }, 38, 5, 25, 1, {0x2d} },
{ 41, { 8, 8, }, 17, 4, 8, 1, {0x2e} },
{ 49, { 33, 45, }, 38, 0, 45, 1, {0x30} },
{ 94, { 11, 42, }, 38, 22, 43, 1, {0x31} },
{ 136, { 33, 45, }, 38, 0, 45, 1, {0x32} },
{ 181, { 32, 45, }, 38, 1, 45, 1, {0x33} },
{ 226, { 30, 43, }, 37, 3, 44, 1, {0x34} },
{ 269, { 31, 45, }, 37, 1, 45, 1, {0x35} },
{ 314, { 30, 44, }, 38, 0, 44, 1, {0x36} },
{ 358, { 30, 44, }, 38, 3, 45, 1, {0x37} },
{ 402, { 33, 45, }, 38, 0, 45, 1, {0x38} },
{ 447, { 32, 45, }, 37, 1, 45, 1, {0x39} },
{ 492, { 8, 30, }, 17, 4, 30, 1, {0x3a} },
{ 522, { 33, 45, }, 38, 0, 45, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA1Mask")
static arm_2d_tile_t c_tileUTF8UserFontA1Mask = {
.tRegion = {
.tSize = {
.iWidth = 33,
.iHeight = 630,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_1BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA1Font,
};
#define __UTF8_FONT_SIZE_1__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a1_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a1_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a1_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA1[dimof(c_tUTF8LookUpTableA1)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA1, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_64_A1 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA1Mask,
0, /* x offset */
0, /* y offset */
33, /* width */
630 /* height */
),
.tCharSize = {
.iWidth = 33,
.iHeight = 45,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a1_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a1_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_1__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA2Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xbf,
0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xbf, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x40, 0x55, 0x45, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbf,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x40, 0x55, 0x15, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x7f, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x7f, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xbf, 0xff, 0xff, 0x07,
0x00, 0x00, 0x00, 0xf0, 0xff, 0xbf, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
// Glyph for character {0x2e}
0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xcb, 0x00, 0x00, 0xf0, 0xf7, 0xff, 0xff, 0xff,
0xff, 0xf6, 0x02, 0x00, 0xf0, 0x5b, 0x55, 0x55, 0x55, 0x55, 0xfe, 0x02, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x07,
0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00,
0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
0xc0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x80, 0x7f, 0x00,
0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x02, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x07, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x0f, 0x00,
0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00,
0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80,
0xbf, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x54, 0x55,
0x55, 0x55, 0xc5, 0x3f, 0x00, 0x00, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x1d, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0xf0, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xff, 0xff,
0xff, 0xf2, 0x02, 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x55, 0xfc, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0xe1, 0x0b, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x02, 0x00,
0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xc0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x54, 0x55,
0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0xf0, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x12, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xff,
0xbf, 0xbc, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x15, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0xf8, 0x02, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00,
0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x55, 0x55,
0x55, 0x55, 0xf1, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x07, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
0xfc, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0b, 0x00, 0xc0, 0x1f, 0x00, 0x00, 0x00, 0x00,
0xf0, 0x0b, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x1f, 0x00,
0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x02, 0x00,
0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40,
0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00,
0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfc, 0x54, 0x55, 0x55, 0x55, 0x85, 0x2f, 0x00, 0x00, 0x64, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x0b, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
0x80, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0xfc, 0xfd, 0xff, 0xff, 0xff,
0xbf, 0x00, 0x00, 0x00, 0xfc, 0x56, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x4f, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x40, 0xf6, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00,
0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x55, 0x55,
0x55, 0x55, 0xf1, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x07, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
0xfc, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00,
0x00, 0xe6, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0xc0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x01, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00,
0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00,
0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x80,
0x7f, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x54, 0x55, 0x55, 0x55, 0xc5, 0x3f, 0x00, 0x00, 0x2f, 0xff, 0xff,
0xff, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x1d, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00,
// Glyph for character {0x37}
0x00, 0xf4, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x03, 0x00, 0xc0, 0xdf, 0xff, 0xff, 0xff, 0xff,
0xdb, 0x0b, 0x00, 0xc0, 0x6f, 0x55, 0x55, 0x55, 0x55, 0xf9, 0x0b, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00,
0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00,
0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40,
0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0xfe, 0x01, 0x00,
0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00, 0x00, 0x40, 0x1f, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0x00, 0xfd, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xf0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0xf0, 0xf7, 0xff, 0xff, 0xff,
0xff, 0xf2, 0x02, 0x00, 0xf0, 0x5b, 0x55, 0x55, 0x55, 0x55, 0xfc, 0x02, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0xf8, 0x07,
0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00,
0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0xc0, 0xbf, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
0xc0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x2f, 0x00, 0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00, 0x80, 0xbf, 0x00,
0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x3f, 0x55, 0x55, 0x55, 0x55, 0xe1, 0x0b, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x02, 0x00,
0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00, 0xc0, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xe7, 0x01, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x07, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0xf0, 0x0f, 0x00,
0x00, 0x00, 0x00, 0xfd, 0x03, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x02, 0x00, 0xf4, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00,
0xf8, 0x0b, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0x80,
0xbf, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xfd, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x54, 0x55,
0x55, 0x55, 0xc5, 0x3f, 0x00, 0x00, 0x2f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x00, 0x00, 0xc9, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x1d, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
0xf0, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x00, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x3c, 0xff, 0xff, 0xff, 0xff, 0xff, 0x12, 0x00, 0x00, 0xfc, 0xfd, 0xff, 0xff, 0xff,
0xbf, 0xbc, 0x00, 0x00, 0xfc, 0x56, 0x55, 0x55, 0x55, 0x15, 0xbf, 0x00, 0x00, 0xfd, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x02, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00, 0xfe, 0x01,
0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x3f, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x2f, 0x00,
0x40, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x2f, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00,
0xf0, 0x0f, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0f, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x0b, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0b, 0x00, 0xe0, 0x2f, 0x00,
0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07, 0x00, 0xc0, 0x4f, 0x55, 0x55, 0x55, 0x55, 0xf8, 0x02, 0x00, 0x40, 0xf6, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00,
0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x17, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x40, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x7f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x55, 0x55,
0x55, 0x55, 0xf1, 0x0f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x07, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00,
0xfc, 0xff, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00,
// Glyph for character {0x3a}
0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA2[] = {
{ 0, { 23, 36, }, 38, 5, 41, 1, {0x2b} },
{ 36, { 23, 5, }, 38, 5, 25, 1, {0x2d} },
{ 41, { 8, 8, }, 17, 4, 8, 1, {0x2e} },
{ 49, { 33, 45, }, 38, 0, 45, 1, {0x30} },
{ 94, { 11, 42, }, 38, 22, 43, 1, {0x31} },
{ 136, { 33, 45, }, 38, 0, 45, 1, {0x32} },
{ 181, { 32, 45, }, 38, 1, 45, 1, {0x33} },
{ 226, { 30, 43, }, 37, 3, 44, 1, {0x34} },
{ 269, { 31, 45, }, 37, 1, 45, 1, {0x35} },
{ 314, { 30, 44, }, 38, 0, 44, 1, {0x36} },
{ 358, { 30, 44, }, 38, 3, 45, 1, {0x37} },
{ 402, { 33, 45, }, 38, 0, 45, 1, {0x38} },
{ 447, { 32, 45, }, 37, 1, 45, 1, {0x39} },
{ 492, { 8, 30, }, 17, 4, 30, 1, {0x3a} },
{ 522, { 33, 45, }, 38, 0, 45, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA2Mask")
static arm_2d_tile_t c_tileUTF8UserFontA2Mask = {
.tRegion = {
.tSize = {
.iWidth = 33,
.iHeight = 630,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_2BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA2Font,
};
#define __UTF8_FONT_SIZE_2__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a2_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a2_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a2_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA2[dimof(c_tUTF8LookUpTableA2)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA2, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_64_A2 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA2Mask,
0, /* x offset */
0, /* y offset */
33, /* width */
630 /* height */
),
.tCharSize = {
.iWidth = 33,
.iHeight = 45,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a2_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a2_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_2__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA4Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xdf, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xaa, 0x6a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff,
0xff, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xff, 0xff, 0xff, 0x8f, 0xff, 0xff, 0xff, 0xff, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xac, 0xff,
0xff, 0xff, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x55, 0x55, 0x55, 0x43, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff,
0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6,
0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x70, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x50, 0x55, 0x55, 0x55, 0x25, 0x55, 0x55, 0x55, 0x55, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xff, 0xff, 0x9e, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xbc, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2e}
0x00, 0xd2, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe2, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfb, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x31, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x00, 0x00, 0xed, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xc3, 0x02, 0x00, 0x00, 0x10, 0xff, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x59,
0xff, 0x0b, 0x00, 0x00, 0x30, 0xff, 0x9f, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0xf8, 0xff, 0x09, 0x00, 0x00, 0x60, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0x06, 0x00, 0x00, 0x90, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x04, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0xff, 0xff, 0x01, 0x00, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xff, 0xcf, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xaf, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0x30, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0x00, 0x60, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x08, 0x00, 0x00, 0x90, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x00, 0x90, 0xff, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfd, 0x0b, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xfa, 0xff,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0c, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0x00, 0x50,
0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x70, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00,
0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00,
0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xcf, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xaf, 0x00,
0x00, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f,
0x00, 0x00, 0x00, 0xfa, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfc, 0xef, 0x53, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xe2, 0xff,
0x0f, 0x00, 0x00, 0x00, 0xfe, 0x2b, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3d, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x87, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f,
0xf4, 0x07, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xaf, 0x01, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x00, 0x00, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xfe, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfd, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff,
0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb,
0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x20, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
0xfc, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0xe3, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7a, 0xfb, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xfa, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xef, 0x53, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfe, 0x2b, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xaf, 0x01, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xc1,
0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x34, 0xfe, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf3, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf8, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xb3, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfd, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x0a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xfe, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x49,
0x7f, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00,
0x00, 0x00, 0xf0, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb1, 0x9f, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xfe, 0xaf,
0x00, 0x00, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff,
0x5f, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5,
0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0d, 0x00, 0x00, 0x20, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfa, 0xff, 0x0b, 0x00, 0x00, 0x50, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x08, 0x00, 0x00, 0x80, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfe, 0xff, 0x06, 0x00, 0x00, 0xa0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0xd0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xef, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xc0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xf2, 0xef, 0x52, 0x55, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0xb3, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x40, 0x4b, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xdf, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00,
0x00, 0x00, 0x00, 0xc0, 0x3e, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x49, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xef, 0x52, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x4b, 0xfd, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x0a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xfe, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x49,
0x7f, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0x2e, 0x55, 0x55, 0x55,
0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xd4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7a, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0xc5, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xf9, 0x07, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x09,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0xff,
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0x00, 0x20, 0xff,
0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0x00, 0x50, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x08, 0x00, 0x00, 0x70,
0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00,
0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xdf, 0x00, 0x00,
0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xaf, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x7f, 0x00,
0x00, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f,
0x00, 0x00, 0x00, 0xfc, 0xef, 0x53, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xe3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfe, 0x2b, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3d, 0xff,
0x0d, 0x00, 0x00, 0x00, 0x87, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf4, 0x07, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x37}
0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x10, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x00,
0x00, 0x00, 0xd0, 0x3e, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3b, 0x3d, 0x00, 0x00, 0x00, 0xf1, 0xcf, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xf5, 0xbf,
0x00, 0x00, 0x00, 0xf3, 0xff, 0x49, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x84, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff,
0x6f, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4,
0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0f, 0x00, 0x00, 0x10, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0xff, 0x0c, 0x00, 0x00, 0x30, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x0a, 0x00, 0x00, 0x60, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfd, 0xff, 0x07, 0x00, 0x00, 0x90, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x05, 0x00, 0x00, 0xb0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0xe0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xaf, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0x9f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0x06, 0x00, 0x00, 0x00, 0x10, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0x0f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x0a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x6f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0d,
0x00, 0x00, 0x00, 0x00, 0xec, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbf, 0x71, 0x00, 0x00, 0x00, 0x00, 0xff, 0x5c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19,
0xfc, 0x09, 0x00, 0x00, 0x30, 0xff, 0x9f, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0xe3, 0xff, 0x0a, 0x00, 0x00, 0x60, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfe, 0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x05, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xff, 0xff, 0x02, 0x00, 0x00, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xc0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0e, 0x00, 0x00, 0x30, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0b, 0x00, 0x00, 0x50, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x09, 0x00, 0x00, 0x80, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x06, 0x00, 0x00, 0xa0, 0xff, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x04, 0x00, 0x00, 0x20, 0xfe, 0x2e, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xfb, 0xbf, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xd4, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc4, 0x09, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x10, 0x7a, 0xfb, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x47, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0xc5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0xf9, 0x07, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfa, 0xff,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff,
0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0d, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x0a, 0x00, 0x00, 0x50,
0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x08, 0x00, 0x00, 0x70, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00,
0xa0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0xc0, 0xff, 0x5f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00,
0x00, 0xf0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xff, 0xdf, 0x00, 0x00, 0x00, 0xf2, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xaf, 0x00,
0x00, 0x00, 0xf4, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xf7, 0xff, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x5f,
0x00, 0x00, 0x00, 0xfa, 0xff, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfc, 0xef, 0x53, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xe3, 0xff,
0x0f, 0x00, 0x00, 0x00, 0xfe, 0x2b, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3d, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x87, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f,
0xf4, 0x07, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xaf, 0x01, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0x00, 0x00, 0x70, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0x00,
0x00, 0x00, 0x00, 0xc0, 0x3e, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x07, 0x00, 0x00, 0x00, 0xf0, 0xcf, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xc1,
0x9f, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x49, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x34, 0xfe, 0xaf, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
0xff, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0x5f, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf3, 0xff, 0x2f, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xf8, 0xff, 0x0d, 0x00, 0x00, 0x30, 0xff, 0xef, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x0b, 0x00, 0x00, 0x50, 0xff, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfc, 0xff, 0x08, 0x00, 0x00, 0x80, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05, 0x00, 0x00, 0xb0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x00, 0x00, 0xd0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xff, 0xef, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xff, 0xbf, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0x9f, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xfa, 0xff, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xe2, 0xef, 0x52, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xb3, 0xff, 0x0b, 0x00, 0x00, 0x00, 0x40, 0x4b, 0xfd, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4f, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x96, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0x5f, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf9, 0xff, 0x0a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x35, 0xfe, 0xff,
0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xf3, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x49,
0x7f, 0x00, 0x00, 0x00, 0x00, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x1a, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x3a}
0x00, 0xd2, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe2, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xfb, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xfe, 0xdf, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xff, 0xff, 0xaf,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1,
0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA4[] = {
{ 0, { 23, 36, }, 38, 5, 41, 1, {0x2b} },
{ 36, { 23, 5, }, 38, 5, 25, 1, {0x2d} },
{ 41, { 8, 8, }, 17, 4, 8, 1, {0x2e} },
{ 49, { 33, 45, }, 38, 0, 45, 1, {0x30} },
{ 94, { 11, 42, }, 38, 22, 43, 1, {0x31} },
{ 136, { 33, 45, }, 38, 0, 45, 1, {0x32} },
{ 181, { 32, 45, }, 38, 1, 45, 1, {0x33} },
{ 226, { 30, 43, }, 37, 3, 44, 1, {0x34} },
{ 269, { 31, 45, }, 37, 1, 45, 1, {0x35} },
{ 314, { 30, 44, }, 38, 0, 44, 1, {0x36} },
{ 358, { 30, 44, }, 38, 3, 45, 1, {0x37} },
{ 402, { 33, 45, }, 38, 0, 45, 1, {0x38} },
{ 447, { 32, 45, }, 37, 1, 45, 1, {0x39} },
{ 492, { 8, 30, }, 17, 4, 30, 1, {0x3a} },
{ 522, { 33, 45, }, 38, 0, 45, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA4Mask")
static arm_2d_tile_t c_tileUTF8UserFontA4Mask = {
.tRegion = {
.tSize = {
.iWidth = 33,
.iHeight = 630,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_4BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA4Font,
};
#define __UTF8_FONT_SIZE_4__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a4_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a4_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a4_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA4[dimof(c_tUTF8LookUpTableA4)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA4, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_64_A4 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA4Mask,
0, /* x offset */
0, /* y offset */
33, /* width */
630 /* height */
),
.tCharSize = {
.iWidth = 33,
.iHeight = 45,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a4_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a4_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_4__
ARM_SECTION("arm2d.asset.FONT")
const static uint8_t c_bmpUTF8UserA8Font[] = {
// Glyph for character {0x2b}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x7f, 0x7f, 0x7f, 0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9d, 0xff, 0xff, 0xff, 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, 0xc6, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xff, 0xff, 0xff, 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, 0xc0, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xff, 0xff, 0xff, 0x31, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xaf, 0xaf, 0xaf, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x05, 0x8d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1e, 0xc8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf3, 0x88, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb7, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x2c, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x3e, 0x42, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xff, 0xff, 0xff, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc5, 0xff, 0xff, 0xff, 0x46, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x1d, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xf3, 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, 0x48, 0xff, 0xff, 0xff, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xff, 0xff, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xff, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf5, 0xff, 0xff, 0xff, 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, 0x23, 0xff, 0xff, 0xff, 0xfa, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4f, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0xff, 0xff, 0xff, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2d}
0x00, 0x00, 0x0c, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x2c, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2e, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe6, 0x94, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x09, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc2, 0xb7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x2e}
0x00, 0x00, 0x23, 0xd3, 0xc9, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0xe5, 0xff, 0xff, 0xd9, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2e, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xd6, 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,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x15, 0xd9, 0xff, 0xff, 0xb7, 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, 0x1e, 0xd5, 0xb0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x30}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x31, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xe8, 0x32, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x38, 0xc5, 0x2b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0xc9, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x53, 0xf1, 0xff, 0xb4,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0xff, 0xff, 0xff, 0x98, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x81, 0xfe, 0xff, 0xff, 0x97,
0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xf8, 0xff, 0xff, 0xff, 0x6e,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0x46,
0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0x1d,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe5, 0xff, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0xff, 0xff, 0xff, 0xf4, 0x01,
0x00, 0x00, 0x00, 0x00, 0x10, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8b, 0xff, 0xff, 0xff, 0xcc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3b, 0xff, 0xff, 0xff, 0xdd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xaf, 0xff, 0xff, 0xff, 0xa4, 0x00,
0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd3, 0xff, 0xff, 0xff, 0x7b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf5, 0xff, 0xff, 0xff, 0x53, 0x00,
0x00, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe5, 0xff, 0xff, 0xff, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xfc, 0x06, 0x00,
0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xfb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3a, 0xff, 0xff, 0xff, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00,
0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xff, 0xff, 0x88, 0x00, 0x00,
0x00, 0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00,
0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x36, 0x00, 0x00,
0x00, 0x00, 0x00, 0x09, 0xc8, 0xff, 0xa9, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0xfb, 0x6e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x16, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x42, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xac, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x9b, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0xe6, 0xff, 0xfd, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xd9, 0xff, 0xba, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x53, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x69, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x4d, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa8, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0xff, 0xff, 0xff, 0x23, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0xf6, 0x02, 0x00, 0x00, 0x00,
0x00, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xce, 0x00, 0x00, 0x00, 0x00,
0x00, 0x26, 0xff, 0xff, 0xff, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xa3, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00,
0x00, 0xa5, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0xff, 0xff, 0xff, 0xff, 0x24, 0x00, 0x00, 0x00, 0x00,
0x00, 0xcf, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xf7, 0x02, 0x00, 0x00, 0x00, 0x00,
0x02, 0xf6, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6a, 0xff, 0xff, 0xff, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4e, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xff, 0xff, 0xff, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x78, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0xff, 0xff, 0xff, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa2, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xff, 0xff, 0xff, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00,
0xcc, 0xff, 0xff, 0xe1, 0x38, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x2f, 0xe0, 0xff, 0xff, 0xf7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0xef, 0xff, 0xbe, 0x2b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x36, 0xf3, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x8d, 0x30, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4d, 0xf9, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x31}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0xc1, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0xef, 0xff, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xfe, 0xff, 0xff, 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, 0x01, 0xf7, 0xff, 0xff, 0xff, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xff, 0xff, 0xff, 0xf4, 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, 0x8a, 0xff, 0xff, 0xff, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xae, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3e, 0xff, 0xff, 0xff, 0xfc, 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, 0x62, 0xff, 0xff, 0xff, 0xda, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x86, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xaa, 0xff, 0xff, 0xff, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xce, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x79, 0xff, 0xfc, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x97, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xd7, 0xff, 0xb8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xff, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xde, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x0b, 0xfe, 0xff, 0xff, 0xff, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0xf6, 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, 0x00,
0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x8f, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xbb, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x12, 0xff, 0xff, 0xff, 0xff, 0x24, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0xf7, 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, 0x00, 0x00,
0x00, 0x6b, 0xff, 0xff, 0xff, 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, 0x97, 0xff, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xc3, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xee, 0xff, 0xff, 0xff, 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,
0x1c, 0xff, 0xff, 0xff, 0xff, 0x24, 0x00, 0x00, 0x00, 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, 0xdc, 0xff, 0xff, 0xf7, 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, 0x00, 0x00, 0x00,
0x00, 0x2a, 0xf1, 0xff, 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, 0x4a, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x32}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x17, 0x75, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x1c, 0xc1, 0xff, 0x9c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x3b, 0xe6, 0xff, 0xff, 0xa3,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0x7b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xff, 0xff, 0xff, 0x52,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xff, 0x2a,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xfb, 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, 0x80, 0xff, 0xff, 0xff, 0xd9, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xff, 0xff, 0xb0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xff, 0xff, 0xff, 0x88, 0x00,
0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 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, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xbd, 0x00, 0x00,
0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0xff, 0x6c, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0xb7, 0xff, 0xff, 0xba, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x49, 0xce, 0x92, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x13, 0xac, 0x7c, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0xe6, 0xff, 0xfd, 0x50, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x53, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa8, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x45, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x26, 0xff, 0xff, 0xff, 0xf6, 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, 0x50, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xa5, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xcf, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x02, 0xf6, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4e, 0xff, 0xff, 0xff, 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,
0x78, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa2, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xcc, 0xff, 0xff, 0xe1, 0x38, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xef, 0xff, 0xbe, 0x2b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x8d, 0x30, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x33}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x17, 0x75, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x1c, 0xc1, 0xff, 0x9c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x3b, 0xe6, 0xff, 0xff, 0xa3, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0x7b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xff, 0xff, 0xff, 0x52, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xfb, 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, 0x80, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xff, 0xff, 0xff, 0x88, 0x00, 0x00,
0x00, 0x00, 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, 0xff, 0xff, 0xff, 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, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xbd, 0x00, 0x00, 0x00,
0x00, 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, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0xff, 0x6c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0xb7, 0xff, 0xff, 0xba, 0x0b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x49, 0xce, 0x92, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9d, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xfc, 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, 0x58, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xff, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x56, 0x00, 0x00, 0x00, 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, 0xfe, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x30, 0xe1, 0xff, 0xff, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x16, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x38, 0xf3, 0xff, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4e, 0xfa, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x34}
0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x87, 0xb4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x71, 0x0a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x05, 0xfa, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xbe, 0xff, 0x9b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xe4, 0xff, 0xff, 0xa4, 0x00, 0x00, 0x00,
0x00, 0x00, 0x56, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0xff, 0xff, 0xff, 0x7b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xff, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00,
0x00, 0x00, 0xab, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd6, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5b, 0xff, 0xff, 0xff, 0xfc, 0x06, 0x00, 0x00, 0x00,
0x00, 0x05, 0xfb, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2b, 0xff, 0xff, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00,
0x00, 0x56, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xff, 0xff, 0xff, 0x88, 0x00, 0x00, 0x00, 0x00,
0x00, 0x81, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0xac, 0xff, 0xff, 0xff, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0xd6, 0xff, 0xff, 0xff, 0x3d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00,
0x05, 0xfb, 0xff, 0xff, 0xff, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2c, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x00,
0x57, 0xff, 0xff, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00,
0x81, 0xff, 0xff, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0xff, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa5, 0xff, 0xff, 0xff, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2a, 0xf0, 0xff, 0xe6, 0x2e, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0xba, 0xff, 0xff, 0xbd, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x43, 0xba, 0x45, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x4a, 0xcf, 0x93, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x04, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x78, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x09, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9a, 0xff, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xff, 0xff, 0xfe, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd1, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xff, 0xff, 0xff, 0xfd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xad, 0xff, 0xff, 0xff, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd9, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 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, 0xfc, 0xff, 0xff, 0xff, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xff, 0xff, 0xff, 0xfd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xff, 0xff, 0xb1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0xff, 0xff, 0xff, 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, 0xe2, 0xff, 0xff, 0xff, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0xff, 0xff, 0xff, 0xff, 0x32, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xfd, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x5b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x35}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x2f, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xe6, 0x31, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x12, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc6, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0x95, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0xff, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xff, 0xff, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x0b, 0xfe, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x34, 0xff, 0xff, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x88, 0xff, 0xff, 0xff, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 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, 0xfd, 0xff, 0xff, 0xfe, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5a, 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x83, 0xff, 0xff, 0xff, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa5, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x28, 0xef, 0xff, 0xe2, 0x2b, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x42, 0xb8, 0x43, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9d, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xfc, 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, 0x58, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xff, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x56, 0x00, 0x00, 0x00, 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, 0xfe, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x30, 0xe1, 0xff, 0xff, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x16, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x38, 0xf3, 0xff, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4e, 0xfa, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x36}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xb4, 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,
0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xfa, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xfe, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x9c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xab, 0xff, 0xff, 0xff, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00, 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, 0xfb, 0xff, 0xff, 0xff, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xec, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x56, 0xff, 0xff, 0xff, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x81, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xac, 0xff, 0xff, 0xff, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xd6, 0xff, 0xff, 0xff, 0x3d, 0x00, 0x00, 0x00, 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, 0xfb, 0xff, 0xff, 0xff, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x2c, 0xff, 0xff, 0xff, 0xe5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x81, 0xff, 0xff, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xa5, 0xff, 0xff, 0xff, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x2a, 0xf0, 0xff, 0xe6, 0x2e, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x43, 0xba, 0x45, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x13, 0xac, 0x7c, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0xe6, 0xff, 0xfd, 0x50, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9d, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x53, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x5a, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa8, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xfc, 0x07, 0x00, 0x00, 0x00,
0x00, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x26, 0xff, 0xff, 0xff, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xff, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00,
0x00, 0xa5, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00,
0x00, 0xcf, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00,
0x02, 0xf6, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4e, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x78, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa2, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
0xcc, 0xff, 0xff, 0xe1, 0x38, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x30, 0xe1, 0xff, 0xff, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0xef, 0xff, 0xbe, 0x2b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x38, 0xf3, 0xff, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x8d, 0x30, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4e, 0xfa, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x37}
0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x11, 0x31, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xd2, 0xe8, 0x32, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x3f, 0xd0, 0x31, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0xff, 0xff, 0xc9, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x5f, 0xf5, 0xff, 0xb5, 0x00, 0x00, 0x00,
0x00, 0x00, 0x3b, 0xff, 0xff, 0xff, 0x98, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x8c, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00,
0x00, 0x00, 0x66, 0xff, 0xff, 0xff, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0x6c, 0x00, 0x00, 0x00,
0x00, 0x00, 0x90, 0xff, 0xff, 0xff, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0xbb, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xff, 0xff, 0xff, 0xff, 0x1b, 0x00, 0x00, 0x00,
0x00, 0x00, 0xe6, 0xff, 0xff, 0xff, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xff, 0xff, 0xff, 0xfd, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0xff, 0xff, 0xff, 0xca, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3b, 0xff, 0xff, 0xff, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0xff, 0xff, 0xff, 0xa2, 0x00, 0x00, 0x00, 0x00,
0x00, 0x66, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd4, 0xff, 0xff, 0xff, 0x79, 0x00, 0x00, 0x00, 0x00,
0x00, 0x91, 0xff, 0xff, 0xff, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf6, 0xff, 0xff, 0xff, 0x51, 0x00, 0x00, 0x00, 0x00,
0x00, 0xbc, 0xff, 0xff, 0xff, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00,
0x00, 0xe6, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0xfb, 0x05, 0x00, 0x00, 0x00, 0x00,
0x11, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xff, 0xff, 0xff, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3c, 0xff, 0xff, 0xff, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0xff, 0xff, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00,
0x67, 0xff, 0xff, 0xff, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xac, 0xff, 0xff, 0xff, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00,
0x91, 0xff, 0xff, 0xff, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x8d, 0xff, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00,
0x06, 0xc1, 0xff, 0x9e, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6b, 0xff, 0xf9, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x12, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xa7, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0xe0, 0xff, 0xc2, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xff, 0xff, 0xff, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xff, 0xff, 0xff, 0xff, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0xf4, 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, 0x65, 0xff, 0xff, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbe, 0xff, 0xff, 0xff, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xea, 0xff, 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xff, 0xff, 0xff, 0xff, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xff, 0xff, 0xff, 0xf5, 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, 0x6e, 0xff, 0xff, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9a, 0xff, 0xff, 0xff, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xff, 0xff, 0xff, 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, 0xf1, 0xff, 0xff, 0xff, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x22, 0x00, 0x00, 0x00, 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, 0xd4, 0xff, 0xff, 0xf5, 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, 0x00, 0x00, 0x00, 0x00, 0x21, 0xec, 0xff, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xf0, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x38}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x2f, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xe6, 0x31, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x17, 0x75, 0x0b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc6, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x1c, 0xc1, 0xff, 0x9c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0x95, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x3b, 0xe6, 0xff, 0xff, 0xa3,
0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0x7b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0xff, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xff, 0xff, 0xff, 0x52,
0x00, 0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xff, 0xff, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xff, 0x2a,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xfb, 0x06,
0x00, 0x00, 0x00, 0x00, 0x0b, 0xfe, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xd9, 0x00,
0x00, 0x00, 0x00, 0x00, 0x34, 0xff, 0xff, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xff, 0xff, 0xb0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xff, 0xff, 0xff, 0x88, 0x00,
0x00, 0x00, 0x00, 0x00, 0x88, 0xff, 0xff, 0xff, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0x5f, 0x00,
0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00,
0x00, 0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00,
0x00, 0x00, 0x00, 0x08, 0xfd, 0xff, 0xff, 0xfe, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xbd, 0x00, 0x00,
0x00, 0x00, 0x00, 0x5a, 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00,
0x00, 0x00, 0x00, 0x83, 0xff, 0xff, 0xff, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0xff, 0x6c, 0x00, 0x00,
0x00, 0x00, 0x00, 0xa5, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00,
0x00, 0x00, 0x00, 0x28, 0xef, 0xff, 0xe2, 0x2b, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0xb7, 0xff, 0xff, 0xba, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x42, 0xb8, 0x43, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x49, 0xce, 0x92, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x13, 0xac, 0x7c, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1c, 0xe6, 0xff, 0xfd, 0x50, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9d, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x53, 0xff, 0xff, 0xff, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7d, 0xff, 0xff, 0xff, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x5a, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa8, 0xff, 0xff, 0xff, 0x6b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00,
0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xfc, 0x07, 0x00, 0x00, 0x00,
0x00, 0x03, 0xf8, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x26, 0xff, 0xff, 0xff, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xff, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xff, 0xff, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00,
0x00, 0x7b, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x56, 0x00, 0x00, 0x00, 0x00,
0x00, 0xa5, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xfe, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00,
0x00, 0xcf, 0xff, 0xff, 0xff, 0x5b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00,
0x02, 0xf6, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00,
0x23, 0xff, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4e, 0xff, 0xff, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbf, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x78, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00,
0xa2, 0xff, 0xff, 0xff, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00,
0xcc, 0xff, 0xff, 0xe1, 0x38, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x30, 0xe1, 0xff, 0xff, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0xef, 0xff, 0xbe, 0x2b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x38, 0xf3, 0xff, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7d, 0x8d, 0x30, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4e, 0xfa, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x39}
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x74, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x6a, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x2f, 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xda, 0x0b, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xe6, 0x31, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xbd, 0x17, 0x75, 0x0b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xc6, 0x51, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x94, 0x1c, 0xc1, 0xff, 0x9c, 0x00,
0x00, 0x00, 0x00, 0x00, 0x39, 0xff, 0xff, 0xff, 0x95, 0x47, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x43, 0x3b, 0xe6, 0xff, 0xff, 0xa3, 0x00,
0x00, 0x00, 0x00, 0x00, 0x63, 0xff, 0xff, 0xff, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xff, 0xff, 0xff, 0x7b, 0x00,
0x00, 0x00, 0x00, 0x00, 0x8d, 0xff, 0xff, 0xff, 0x8e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xff, 0xff, 0xff, 0xff, 0x52, 0x00,
0x00, 0x00, 0x00, 0x00, 0xb7, 0xff, 0xff, 0xff, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xff, 0x2a, 0x00,
0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0xff, 0xff, 0xff, 0xfb, 0x06, 0x00,
0x00, 0x00, 0x00, 0x0b, 0xfe, 0xff, 0xff, 0xff, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00,
0x00, 0x00, 0x00, 0x34, 0xff, 0xff, 0xff, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xff, 0xff, 0xff, 0xb0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x5e, 0xff, 0xff, 0xff, 0xb6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc7, 0xff, 0xff, 0xff, 0x88, 0x00, 0x00,
0x00, 0x00, 0x00, 0x88, 0xff, 0xff, 0xff, 0x8b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xeb, 0xff, 0xff, 0xff, 0x5f, 0x00, 0x00,
0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x37, 0x00, 0x00,
0x00, 0x00, 0x00, 0xdc, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00,
0x00, 0x00, 0x08, 0xfd, 0xff, 0xff, 0xfe, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0xff, 0xff, 0xff, 0xbd, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5a, 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xff, 0xff, 0xff, 0x95, 0x00, 0x00, 0x00,
0x00, 0x00, 0x83, 0xff, 0xff, 0xff, 0x89, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xff, 0xff, 0xff, 0x6c, 0x00, 0x00, 0x00,
0x00, 0x00, 0xa5, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0x44, 0x00, 0x00, 0x00,
0x00, 0x00, 0x28, 0xef, 0xff, 0xe2, 0x2b, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x34, 0xb7, 0xff, 0xff, 0xba, 0x0b, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x42, 0xb8, 0x43, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x49, 0xce, 0x92, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3d, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x79, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x69, 0x9d, 0xff, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd2, 0xff, 0xff, 0xff, 0x5a, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xf9, 0xff, 0xff, 0xff, 0x2f, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0xff, 0xff, 0xff, 0xfc, 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, 0x58, 0xff, 0xff, 0xff, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xff, 0xff, 0xff, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb2, 0xff, 0xff, 0xff, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdf, 0xff, 0xff, 0xff, 0x56, 0x00, 0x00, 0x00, 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, 0xfe, 0xff, 0xff, 0xff, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfa, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xff, 0xff, 0xff, 0xd5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xff, 0xff, 0xff, 0xa9, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00, 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, 0xff, 0xff, 0xff, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xff, 0xff, 0xff, 0xff, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x08, 0x56, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x30, 0xe1, 0xff, 0xff, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x16, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd1, 0x38, 0xf3, 0xff, 0xd1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x2c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9e, 0x4e, 0xfa, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x31, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x5e, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0xc4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xa7, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Glyph for character {0x3a}
0x00, 0x00, 0x23, 0xd3, 0xc9, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0xe5, 0xff, 0xff, 0xd9, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2e, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xd6, 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,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x15, 0xd9, 0xff, 0xff, 0xb7, 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, 0x1e, 0xd5, 0xb0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x23, 0xd3, 0xc9, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x28, 0xe5, 0xff, 0xff, 0xd9, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2e, 0xe9, 0xff, 0xff, 0xff, 0xff, 0xd6, 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,
0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xb5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0d, 0xcd, 0xff, 0xff, 0xff, 0xff, 0xaf, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x15, 0xd9, 0xff, 0xff, 0xb7, 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, 0x1e, 0xd5, 0xb0, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// a white space
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
ARM_SECTION("arm2d.asset.FONT")
const static __ttf_char_descriptor_t c_tUTF8LookUpTableA8[] = {
{ 0, { 23, 36, }, 38, 5, 41, 1, {0x2b} },
{ 36, { 23, 5, }, 38, 5, 25, 1, {0x2d} },
{ 41, { 8, 8, }, 17, 4, 8, 1, {0x2e} },
{ 49, { 33, 45, }, 38, 0, 45, 1, {0x30} },
{ 94, { 11, 42, }, 38, 22, 43, 1, {0x31} },
{ 136, { 33, 45, }, 38, 0, 45, 1, {0x32} },
{ 181, { 32, 45, }, 38, 1, 45, 1, {0x33} },
{ 226, { 30, 43, }, 37, 3, 44, 1, {0x34} },
{ 269, { 31, 45, }, 37, 1, 45, 1, {0x35} },
{ 314, { 30, 44, }, 38, 0, 44, 1, {0x36} },
{ 358, { 30, 44, }, 38, 3, 45, 1, {0x37} },
{ 402, { 33, 45, }, 38, 0, 45, 1, {0x38} },
{ 447, { 32, 45, }, 37, 1, 45, 1, {0x39} },
{ 492, { 8, 30, }, 17, 4, 30, 1, {0x3a} },
{ 522, { 33, 45, }, 38, 0, 45, 1, {0x20} },
};
ARM_SECTION("arm2d.tile.c_tileUTF8UserFontA8Mask")
static arm_2d_tile_t c_tileUTF8UserFontA8Mask = {
.tRegion = {
.tSize = {
.iWidth = 33,
.iHeight = 630,
},
},
.tInfo = {
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {
.chScheme = ARM_2D_COLOUR_8BIT,
},
},
.pchBuffer = (uint8_t *)c_bmpUTF8UserA8Font,
};
#define __UTF8_FONT_SIZE_8__
static
IMPL_FONT_DRAW_CHAR(__utf8_font_a8_draw_char)
{
#if defined(__UTF8_FONT_SIZE_8__)
static arm_2d_op_fill_cl_msk_opa_trans_t s_tOP;
const bool bIsNewFrame = true;
static const arm_2d_location_t c_tCentre = {7,8};
if (fScale == 0.0f) {
if (chOpacity == 255) {
return arm_2d_fill_colour_with_mask(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour});
}
return arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
}
arm_2d_location_t tTargetCenter = ptRegion->tLocation;
tTargetCenter.iX += ptRegion->tSize.iWidth >> 1;
tTargetCenter.iY += ptRegion->tSize.iHeight >> 1;
return arm_2dp_fill_colour_with_mask_opacity_and_transform(
&s_tOP,
ptileChar,
ptTile,
NULL,
c_tCentre,
0.0f,
fScale,
tForeColour,
chOpacity,
&tTargetCenter);
#elif defined(__UTF8_FONT_SIZE_1__)
return arm_2d_draw_pattern( ptileChar,
ptTile,
ptRegion,
ARM_2D_DRW_PATN_MODE_COPY,
tForeColour,
GLCD_COLOR_BLACK);
#else
return arm_2d_fill_colour_with_a8_mask_and_opacity(
ptTile,
ptRegion,
ptileChar,
(__arm_2d_color_t){tForeColour},
chOpacity);
#endif
}
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a8_font_get_char_descriptor)
{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8LookUpTableA8[dimof(c_tUTF8LookUpTableA8)-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8LookUpTableA8, ptChar) {
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}
}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_64_A8 = {
.use_as__arm_2d_user_font_t = {
.use_as__arm_2d_font_t = {
.tileFont = impl_child_tile(
c_tileUTF8UserFontA8Mask,
0, /* x offset */
0, /* y offset */
33, /* width */
630 /* height */
),
.tCharSize = {
.iWidth = 33,
.iHeight = 45,
},
.nCount = 14, //!< Character count
.fnGetCharDescriptor = &__utf8_a8_font_get_char_descriptor,
.fnDrawChar = &__utf8_font_a8_draw_char,
},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
},
.tUTF8Table = {
.hwCount = 14,
.hwOffset = 0,
},
};
#undef __UTF8_FONT_SIZE_8__
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_warning=1296
#endif
================================================
FILE: project/mdk/RTE/Acceleration/arm_2d_cfg.h
================================================
/*
* Copyright (c) 2009-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ARM_2D_USER_CFG_H__
#define __ARM_2D_USER_CFG_H__
/*============================ INCLUDES ======================================*/
#if defined(_RTE_)
# include "RTE_Components.h"
#endif
#if defined(__ARM_2D_USER_APP_CFG_H__)
# include __ARM_2D_USER_APP_CFG_H__
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*============================ MACROS ========================================*/
/*============================ MACROFIED FUNCTIONS ===========================*/
//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
//
// Arm-2D General Configurations
// =======================
//
// Enable Asynchronous Programmers' model support
// Note that if you don't have any hardware accelerator, disable this feature can reduce code size and gain a small performance uplift.
// This feature is enabled by default.
#ifndef __ARM_2D_HAS_ASYNC__
# define __ARM_2D_HAS_ASYNC__ 0
#endif
// Enable Anti-Alias support for all transform operations.
// <0=> No Anti-Alias
// <1=> Use 4x Supersampling Anti-Alias (4xSSAA)
// Note that enabling this feature suffers a non-negligible performance drop.
// This feature is disabled by default.
#ifndef __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__
# define __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__ 1
#endif
// Enable support for accessing individual colour channels
// Note that enabling this feature will add the support for a special colour type: ARM_2D_CHANNEL_8in32
// This feature is disabled by default to save code size
#ifndef __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__
# define __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__ 1
#endif
// Enable ccca8888(ARGB8888) implicit conversion
// This feature is disabled by default to save code size
#ifndef __ARM_2D_CFG_SUPPORT_CCCA8888_IMPLICIT_CONVERSION__
# define __ARM_2D_CFG_SUPPORT_CCCA8888_IMPLICIT_CONVERSION__ 1
#endif
// Improve the Quality of IIR Blur
// Note that enabling this feature will half the performance of IIR Blur and only works correctly in Full framebuffer mode
// This feature is disabled by default to improve performance
#ifndef __ARM_2D_CFG_USE_IIR_BLUR_REVERSE_PATH__
# define __ARM_2D_CFG_USE_IIR_BLUR_REVERSE_PATH__ 0
#endif
// Support Scaling for A1, A2 and A4 fonts
// Note that enabling this feature will reduces performance when using A1, A2 and A4 fonts when using scaling.
#ifndef __ARM_2D_CFG_SUPPORT_TRANSFORM_FOR_NON_A8_FONTS__
# define __ARM_2D_CFG_SUPPORT_TRANSFORM_FOR_NON_A8_FONTS__ 1
#endif
//
// Log and Debug
// =======================
// Enable Log
// This feature is disabled by default.
#ifndef __ARM_2D_CFG_ENABLE_LOG__
# define __ARM_2D_CFG_ENABLE_LOG__ 0
#endif
// The terminal support colour
// The terminal is compatible with VT100 and support colour display. This feature is disabled by default.
#ifndef __ARM_2D_CFG_LOG_OUTPUT_SUPPORT_COLOUR__
# define __ARM_2D_CFG_LOG_OUTPUT_SUPPORT_COLOUR__ 0
#endif
// The maximum length of log string <64-65535>
// The number of bytes requested from heap during log output
// Default: 256
#ifndef __ARM_2D_LOG_MAX_STRING_LEN__
# define __ARM_2D_LOG_MAX_STRING_LEN__ 256
#endif
/* The filter of log channels. Please comment the channels that you want to mask.
*/
#ifndef __ARM_2D_LOG_CHANNEL_MASK_FILTER__
# define __ARM_2D_LOG_CHANNEL_MASK_FILTER__ \
( ARM_2D_LOG_CHN_TYPE_USER \
| ARM_2D_LOG_CHN_TYPE_INFO \
| ARM_2D_LOG_CHN_TYPE_WARNING \
| ARM_2D_LOG_CHN_TYPE_ERROR \
| ARM_2D_LOG_CHN_PIPELINE \
| ARM_2D_LOG_CHN_OPCODE \
| ARM_2D_LOG_CHN_HELPER \
| ARM_2D_LOG_CHN_HELPER_PFB \
| ARM_2D_LOG_CHN_SCENE_PLAYER \
| ARM_2D_LOG_CHN_DIRTY_REGION_OPTIMISATION \
| ARM_2D_LOG_CHN_STATISTICS \
| ARM_2D_LOG_CHN_CONTROLS \
| ARM_2D_LOG_CHN_GUI_STACK \
| ARM_2D_LOG_CHN_APP)
#endif
// Enable The Layout Debug Mode
// Arm-2D will mark the layout areas.
#ifndef __ARM_2D_HELPER_CFG_LAYOUT_DEBUG_MODE__
# define __ARM_2D_HELPER_CFG_LAYOUT_DEBUG_MODE__ 0
#endif
//
// Patches for improving performance or memory footprint
// =======================
//
// Do NOT treat alpha value 255 as completely opaque in mask related operations
// When define this macro, alpha value 0xFF will not be treated as opaque in mask related operations and you can barely see the background. Defining this macro improves performance.
//#define __ARM_2D_CFG_UNSAFE_IGNORE_ALPHA_255_COMPENSATION__
//
// Ignore calibrartion for small angles in transform operations
// This option is used to speed up M-cores without DSP support. It skips saturation in the QADD/QDADD/QDSUB involved in the rotation. The chances of overflow remain low as elements involved are using non-accumulating Q15.16 format and integer parts are in the range of the screen size providing enough margin.
//#define __ARM_2D_CFG_UNSAFE_IGNORE_CALIB_IN_TRANSFORM__
//
// Ignore satuation protection in fixed-point operations
// This option is used to remove calibration in angle computations to gain a better performance, small error might be noticible for angles like 90, 180, 270 etc.
//#define __ARM_2D_CFG_UNSAFE_NO_SATURATION_IN_FIXED_POINT__
//
// Remove the Helium RGB565 Patch in IIR Blur operations
// This option is used to remove helium rgb565 patch in IIR Blur to gain a better performance, a ghost-shadow effects might noticible when background is white or light.
//#define __ARM_2D_CFG_UNSAFE_NO_HELIUM_RGB565_PATCH_IN_IIR_BLUR__
//
// Remove the PFB support in IIR Blur Helium acceleration
// This option is used to remove the PFB support in IIR Blur Helium backend to gain a better performance.
//#define __ARM_2D_CFG_UNSAFE_NO_PFB_SUPPORT_IN_IIR_BLUR_HELIUM__
//
// Disable Dirty Region Optimization Algorithm permanently in PFB helper service
// This option is used to remove dirty region optimization in PFB helper service. Warning: Some of the application behaviours would be affected, and the dirty region debug mode is no longer available. Disable the dirty region optimization can reduce memory footprint.
//#define __ARM_2D_CFG_PFB_DISABLE_DIRTY_REGION_OPTIMIZATION__
//
// When opacity is 255, call the non-opacity version of API implicitily
// This option is used to improve the performance and reduce the application complexity in API selection. Disable this feature allows linker to remove unused APIs further.
// This option is enabled by default
#ifndef __ARM_2D_CFG_CALL_NON_OPACITY_VERSION_IMPLICITILY_FOR_255__
# define __ARM_2D_CFG_CALL_NON_OPACITY_VERSION_IMPLICITILY_FOR_255__ 1
#endif
// Optimize the scaler version of transform operations for pointer-like resources
// This feature is enabled by default. There is no guarantee that the performance will increase or decrease. It is all depends your applications. In most of the case, enabling it helps.
// This feature has no meaning when the anti-alias transform is disabled or the helium acceleration is available.
#ifndef __ARM_2D_CFG_OPTIMIZE_FOR_POINTER_LIKE_SHAPES_IN_TRANSFORM__
# define __ARM_2D_CFG_OPTIMIZE_FOR_POINTER_LIKE_SHAPES_IN_TRANSFORM__ 1
#endif
// Optimize the scaler version of transform operations for hollow out masks
// This feature is disabled by default. There is no guarantee that the performance will increase or decrease. It is all depends your applications. If your application uses a lot of hollow out masks, it might help.
// This feature has no meaning when the anti-alias transform is disabled or the helium acceleration is available.
#ifndef __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__
# define __ARM_2D_CFG_OPTIMIZE_FOR_HOLLOW_OUT_MASK_IN_TRANSFORM__ 0
#endif
// Improve the User Application Performance with optimization in Layout Assistant.
// Ignore the user application code when a PFB is output of the areas that generated with the layout assistant. Enabling this feature can improve the user application performance. This feature is disabled by default. It is recommended when you trys to optimize the application performance.
// If you see some visual elements are imcomplete, you can choose those layout assistants with "_open" as posfix in corresonding area. For example, arm_2d_align_centre() can be changed to arm_2d_align_centre_open().
#ifndef __ARM_2D_CFG_OPTIMIZE_FOR_PFB_IN_LAYOUT_ASSISTANT__
# define __ARM_2D_CFG_OPTIMIZE_FOR_PFB_IN_LAYOUT_ASSISTANT__ 0
#endif
//
// Extra Components
// =======================
//
#ifndef __GLCD_CFG_COLOUR_DEPTH__
// Select the screen colour depth
// <8=> 8 Bits
// <16=> 16Bits
// <32=> 32Bits
// The colour depth of your LCD
// Default: 16
# define __GLCD_CFG_COLOUR_DEPTH__ 8
#endif
// The size of the LCD printf text buffer <16-65535>
// The text buffer size for the lcd printf service. It determins how many character you can use in one printf string.
#ifndef __LCD_PRINTF_CFG_TEXT_BUFFER_SIZE__
# define __LCD_PRINTF_CFG_TEXT_BUFFER_SIZE__ 64
#endif
// Benchmark
// Width of the screen <8-32767>
// The width of your screen for running benchmark
// Default: 320
#ifndef __GLCD_CFG_SCEEN_WIDTH__
# define __GLCD_CFG_SCEEN_WIDTH__ 296
#endif
// Height of the screen <8-32767>
// The height of your screen for running benchmark
// Default: 240
#ifndef __GLCD_CFG_SCEEN_HEIGHT__
# define __GLCD_CFG_SCEEN_HEIGHT__ 128
#endif
// Number of iterations <1-2000>
// run number of iterations in arm-2d benchmark before calculating the result.
#ifndef ITERATION_CNT
# define ITERATION_CNT 1000
#endif
// Use Tiny mode to run benchmark
// Enable this mode to reduce the benchmark memory footprint (removing background picture etc.)
// This feature is disabled by default.
#ifndef __ARM_2D_CFG_BENCHMARK_TINY_MODE__
# define __ARM_2D_CFG_BENCHMARK_TINY_MODE__ 0
#endif
// Enable Stopwatch mode in the Benchmark:Watch-panel
// Only update the second-hand (i.e. red pointer) every second in the watch-panel demo
// This feature is disabled by default.
#ifndef __ARM_2D_CFG_WATCH_PANEL_STOPWATCH_MODE__
# define __ARM_2D_CFG_WATCH_PANEL_STOPWATCH_MODE__ 0
#endif
// Enable the nebula effect mode in the Benchmark:Watch-panel
// This feature is disabled by default and it is only available in the Tiny mode.
#ifndef __ARM_2D_CFG_BENCHMARK_WATCH_PANEL_USE_NEBULA__
# define __ARM_2D_CFG_BENCHMARK_WATCH_PANEL_USE_NEBULA__ 0
#endif
// Exit benchmark when finished
// Exit the arm_2d_run_benchmark() after running specified iterations
// This feature is disabled by default.
#ifndef __ARM_2D_CFG_BENCHMARK_EXIT_WHEN_FINISH__
# define __ARM_2D_CFG_BENCHMARK_EXIT_WHEN_FINISH__ 0
#endif
// Enable Context in Text Box
// When your PFB is small (< 1/10 FB) and the text box visual area is big, you can enable the context feature and see whether the performance is improved or not.
// This feature is disabled by default to save memory footprint
#ifndef __ARM_2D_CFG_CONTROL_USE_CONTEXT__
# define __ARM_2D_CFG_CONTROL_USE_CONTEXT__ 0
#endif
//
//
// <<< end of configuration section >>>
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ PROTOTYPES ====================================*/
#ifdef __cplusplus
}
#endif
#endif
================================================
FILE: project/mdk/RTE/Acceleration/arm_2d_disp_adapter_0.c
================================================
/*
* Copyright (c) 2009-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*============================ INCLUDES ======================================*/
#include "arm_2d_disp_adapter_0.h"
#ifdef RTE_Acceleration_Arm_2D_Helper_Disp_Adapter0
#include
#include
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wsign-conversion"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wcast-align"
# pragma clang diagnostic ignored "-Wmissing-field-initializers"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wmissing-prototypes"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic ignored "-Wgnu-statement-expression"
# pragma clang diagnostic ignored "-Wdouble-promotion"
# pragma clang diagnostic ignored "-Wembedded-directive"
#elif __IS_COMPILER_ARM_COMPILER_5__
#elif __IS_COMPILER_IAR__
# pragma diag_suppress=Pa089,Pe188,Pe177,Pe174
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Wunused-function"
# pragma GCC diagnostic ignored "-Wunused-variable"
# pragma GCC diagnostic ignored "-Wunused-value"
#endif
/*============================ MACROS ========================================*/
#ifndef __DISP0_CFG_ITERATION_CNT__
# define __DISP0_CFG_ITERATION_CNT__ 30
#endif
#if __DISP0_CFG_OPTIMIZE_DIRTY_REGIONS__
# if !defined(__DISP0_CFG_DIRTY_REGION_POOL_SIZE__) \
|| __DISP0_CFG_DIRTY_REGION_POOL_SIZE__ < 4
# undef __DISP0_CFG_DIRTY_REGION_POOL_SIZE__
# define __DISP0_CFG_DIRTY_REGION_POOL_SIZE__ 4
# endif
#endif
#if __DISP0_CFG_USE_CONSOLE__
#ifndef __DISP0_CONSOLE_WIDTH__
# if __DISP0_CFG_SCEEN_WIDTH__ < 204
# define __DISP0_CONSOLE_WIDTH__ __DISP0_CFG_SCEEN_WIDTH__
# else
# define __DISP0_CONSOLE_WIDTH__ 204
# endif
#endif
#ifndef __DISP0_CONSOLE_HEIGHT__
# if __DISP0_CFG_SCEEN_HEIGHT__ < 200
# define __DISP0_CONSOLE_HEIGHT__ __DISP0_CFG_SCEEN_HEIGHT__
# else
# define __DISP0_CONSOLE_HEIGHT__ 192
# endif
#endif
#endif
/*============================ MACROFIED FUNCTIONS ===========================*/
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
extern uint32_t SystemCoreClock;
/*============================ PROTOTYPES ====================================*/
extern
int32_t Disp0_DrawBitmap(int16_t x,
int16_t y,
int16_t width,
int16_t height,
const uint8_t *bitmap);
/*============================ LOCAL VARIABLES ===============================*/
#if __DISP0_CFG_NAVIGATION_LAYER_MODE__ == 2
/* the round mode */
IMPL_ARM_2D_REGION_LIST(s_tNavDirtyRegionList, static)
/* a region for the status bar on the bottom of the screen */
ADD_LAST_REGION_TO_LIST(s_tNavDirtyRegionList,
.tSize = {
.iWidth = 100,
.iHeight = 24,
},
),
END_IMPL_ARM_2D_REGION_LIST(s_tNavDirtyRegionList)
#endif
ARM_NOINIT
arm_2d_scene_player_t DISP0_ADAPTER;
#if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
ARM_NOINIT
static
arm_2d_helper_3fb_t s_tDirectModeHelper;
#endif
#if __DISP0_CFG_USE_CONSOLE__
static
struct {
console_box_t tConsole;
int64_t lTimestamp;
arm_2d_region_list_item_t tBackground;
uint32_t Signature;
bool bShowConsole;
uint8_t chOpacity;
} DISP0_CONSOLE;
#endif
/*============================ IMPLEMENTATION ================================*/
static void __on_frame_start(arm_2d_scene_t *ptScene)
{
ARM_2D_UNUSED(ptScene);
}
static void __on_frame_complete(arm_2d_scene_t *ptScene)
{
ARM_2D_UNUSED(ptScene);
}
#if !__DISP0_CFG_DISABLE_DEFAULT_SCENE__
static
IMPL_PFB_ON_DRAW(__pfb_draw_handler)
{
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(ptTile);
arm_2d_canvas(ptTile, __top_container) {
#if __DISP0_CFG_COLOR_SOLUTION__ != 1 /* as long as it is not monochrome */
arm_2d_align_centre(__top_container, 100, 100) {
draw_round_corner_box( ptTile,
&__centre_region,
GLCD_COLOR_BLACK,
64);
}
#endif
busy_wheel2_show(ptTile, bIsNewFrame);
}
arm_2d_op_wait_async(NULL);
return arm_fsm_rt_cpl;
}
#endif
#if __DISP0_CFG_NAVIGATION_LAYER_MODE__
__WEAK
IMPL_PFB_ON_DRAW(__disp_adapter0_user_draw_navigation)
{
ARM_2D_PARAM(ptTile);
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(bIsNewFrame);
return arm_fsm_rt_cpl;
}
__WEAK
IMPL_PFB_ON_DRAW(__disp_adapter0_draw_navigation)
{
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(bIsNewFrame);
while( arm_fsm_rt_cpl !=
__disp_adapter0_user_draw_navigation( pTarget,
ptTile,
bIsNewFrame));
#if __DISP0_CFG_USE_CONSOLE__
if (bIsNewFrame) {
if (console_box_on_frame_start(&DISP0_CONSOLE.tConsole)) {
DISP0_CONSOLE.lTimestamp = 0;
if (!DISP0_CONSOLE.bShowConsole) {
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, false);
} else {
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, true);
}
DISP0_CONSOLE.bShowConsole = true;
DISP0_CONSOLE.chOpacity = 255;
} else {
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, true);
}
#if __DISP0_CFG_CONSOLE_DISPALY_TIME__ >= 1000 \
&& __DISP0_CFG_CONSOLE_DISPALY_TIME__ != 0xFFFFFFFF
if (DISP0_CONSOLE.bShowConsole) {
if (arm_2d_helper_is_time_out(__DISP0_CFG_CONSOLE_DISPALY_TIME__, &DISP0_CONSOLE.lTimestamp)) {
DISP0_CONSOLE.bShowConsole = false;
DISP0_CONSOLE.chOpacity = 0;
} else {
int64_t lTimeElapsedInMs = -arm_2d_helper_time_elapsed(&DISP0_CONSOLE.lTimestamp);
if (lTimeElapsedInMs > 255) {
DISP0_CONSOLE.chOpacity = 255;
} else {
DISP0_CONSOLE.chOpacity = lTimeElapsedInMs;
}
}
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, false);
} else {
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, true);
}
#endif
}
arm_2d_canvas(ptTile, __navigation_canvas) {
arm_2d_align_top_left( __navigation_canvas,
__DISP0_CONSOLE_WIDTH__ + 8,
__DISP0_CONSOLE_HEIGHT__ + 8) {
draw_round_corner_box( ptTile,
&__top_left_region,
GLCD_COLOR_DARK_GREY,
(128 * DISP0_CONSOLE.chOpacity) >> 8);
console_box_show(&DISP0_CONSOLE.tConsole,
ptTile,
&__top_left_region,
bIsNewFrame,
DISP0_CONSOLE.chOpacity);
}
}
#endif
arm_lcd_text_set_scale(0.0f);
arm_lcd_text_set_opacity(255);
arm_lcd_text_set_char_spacing(0);
arm_lcd_text_set_line_spacing(0);
arm_lcd_text_set_display_mode(ARM_2D_DRW_PATN_MODE_COPY);
#if __DISP0_CFG_NAVIGATION_LAYER_MODE__ == 2
/* round mode */
arm_lcd_text_set_target_framebuffer((arm_2d_tile_t *)ptTile);
arm_lcd_text_set_font(&ARM_2D_FONT_6x8.use_as__arm_2d_font_t);
arm_lcd_text_set_draw_region(&(s_tNavDirtyRegionList[0].tRegion));
if (__DISP0_CFG_ITERATION_CNT__) {
draw_round_corner_box( ptTile,
&(s_tNavDirtyRegionList[0].tRegion),
__RGB(64,64,64),
255-32);
ARM_2D_OP_WAIT_ASYNC();
#if __DISP0_CFG_COLOUR_DEPTH__ == 8
arm_lcd_text_set_colour(GLCD_COLOR_LIGHT_GREY, GLCD_COLOR_BLACK);
#else
arm_lcd_text_set_colour(GLCD_COLOR_GREEN, GLCD_COLOR_BLACK);
#endif
arm_lcd_text_location(0,0);
if (DISP0_ADAPTER.Benchmark.wAverage) {
arm_lcd_printf(
" FPS:%3"PRIu32":%"PRIu32"ms\r\n",
MIN(arm_2d_helper_get_reference_clock_frequency() / DISP0_ADAPTER.Benchmark.wAverage, 999),
(uint32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wAverage));
}
arm_lcd_printf(
" CPU:%2.2f%% \r\n",
DISP0_ADAPTER.Benchmark.fCPUUsage);
arm_lcd_printf(
" LCD:%2"PRIu32"ms",
(uint32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wLCDLatency) );
}
#else
arm_lcd_text_set_target_framebuffer((arm_2d_tile_t *)ptTile);
arm_lcd_text_set_font(&ARM_2D_FONT_6x8.use_as__arm_2d_font_t);
arm_lcd_text_set_draw_region(NULL);
/* draw real-time FPS info */
if (__DISP0_CFG_ITERATION_CNT__) {
arm_2dp_fill_colour_with_opacity(
NULL,
ptTile,
(arm_2d_region_t []){
{
.tLocation = {
.iX = 0,
.iY = ((__DISP0_CFG_SCEEN_HEIGHT__ + 7) / 8 - 2) * 8},
.tSize = {
.iWidth = __DISP0_CFG_SCEEN_WIDTH__,
.iHeight = 8,
},
},
},
(__arm_2d_color_t){__RGB(64,64,64)},
255 - 32);
ARM_2D_OP_WAIT_ASYNC();
#if __DISP0_CFG_COLOUR_DEPTH__ == 8
arm_lcd_text_set_colour(GLCD_COLOR_LIGHT_GREY, GLCD_COLOR_BLACK);
#else
arm_lcd_text_set_colour(GLCD_COLOR_GREEN, GLCD_COLOR_BLACK);
#endif
arm_lcd_text_location((__DISP0_CFG_SCEEN_HEIGHT__ + 7) / 8 - 2,
0);
if (DISP0_ADAPTER.Benchmark.wAverage) {
arm_lcd_printf(
"FPS:%3"PRIu32":%"PRIu32"ms ",
MIN(arm_2d_helper_get_reference_clock_frequency() / DISP0_ADAPTER.Benchmark.wAverage, 999),
(uint32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wAverage));
}
#if __DISP0_CFG_SCEEN_WIDTH__ >= 240
arm_lcd_printf(
"CPU:%2.2f%% LCD-Latency:%2"PRIu32"ms",
DISP0_ADAPTER.Benchmark.fCPUUsage,
(uint32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wLCDLatency));
#else
arm_lcd_printf(
"LCD:%2"PRIu32"ms",
(uint32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wLCDLatency) );
#endif
}
#if __DISP0_CFG_SCEEN_WIDTH__ >= 320
/* draw verion info on the bottom right corner */
arm_lcd_text_set_colour(GLCD_COLOR_LIGHT_GREY, GLCD_COLOR_WHITE);
arm_lcd_text_location( (__DISP0_CFG_SCEEN_HEIGHT__ + 7) / 8 - 2,
(__DISP0_CFG_SCEEN_WIDTH__ / 6) - 12);
arm_lcd_printf("v"
ARM_TO_STRING(ARM_2D_VERSION_MAJOR)
"."
ARM_TO_STRING(ARM_2D_VERSION_MINOR)
"."
ARM_TO_STRING(ARM_2D_VERSION_PATCH)
" "
ARM_2D_VERSION_STR
);
#endif
#endif
ARM_2D_OP_WAIT_ASYNC();
return arm_fsm_rt_cpl;
}
#endif
#if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
__WEAK
IMPL_PFB_ON_LOW_LV_RENDERING(__disp_adapter0_pfb_render_handler)
{
const arm_2d_tile_t *ptTile = &(ptPFB->tTile);
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(bIsNewFrame);
if (__arm_2d_helper_3fb_draw_bitmap(&s_tDirectModeHelper,
ptPFB)) {
arm_2d_helper_pfb_report_rendering_complete(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
}
}
void *disp_adapter0_3fb_get_flush_pointer(void)
{
return arm_2d_helper_3fb_get_flush_pointer(&s_tDirectModeHelper);
}
# if __DISP0_CFG_ENABLE_ASYNC_FLUSHING__
/* using asynchronous flushing, e.g. using DMA + ISR to offload CPU etc.
* It can significantly reduce the LCD Latency hence improve the overrall
* framerate.
*/
void disp_adapter0_insert_2d_copy_complete_event_handler(void)
{
arm_2d_helper_pfb_report_rendering_complete(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
}
/* using asynchronous flushing, e.g. using DMA + ISR to offload CPU etc.
* It can significantly reduce the LCD Latency hence improve the overrall
* framerate.
*/
void disp_adapter0_insert_dma_copy_complete_event_handler(void)
{
arm_2d_helper_3fb_report_dma_copy_complete(&s_tDirectModeHelper);
}
# endif
#else
# if __DISP0_CFG_ENABLE_ASYNC_FLUSHING__
/* using asynchronous flushing, e.g. using DMA + ISR to offload CPU etc.
* It can significantly reduce the LCD Latency hence improve the overrall
* framerate.
*/
void disp_adapter0_insert_async_flushing_complete_event_handler(void)
{
arm_2d_helper_pfb_report_rendering_complete(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
}
__WEAK
IMPL_PFB_ON_LOW_LV_RENDERING(__disp_adapter0_pfb_render_handler)
{
const arm_2d_tile_t *ptTile = &(ptPFB->tTile);
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(bIsNewFrame);
/* request an asynchronous flushing */
__disp_adapter0_request_async_flushing(
pTarget,
bIsNewFrame,
ptTile->tRegion.tLocation.iX,
ptTile->tRegion.tLocation.iY,
ptTile->tRegion.tSize.iWidth,
ptTile->tRegion.tSize.iHeight,
(const COLOUR_INT *)ptTile->pchBuffer);
}
# else
/* using asynchronous flushing, i.e. use CPU to flush LCD.
* The LCD Latency will be high and reduce the overral framerate.
* Meanwhile, in developing stage, this method can ensure a robust flushing.
*/
__WEAK
IMPL_PFB_ON_LOW_LV_RENDERING(__disp_adapter0_pfb_render_handler)
{
const arm_2d_tile_t *ptTile = &(ptPFB->tTile);
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(bIsNewFrame);
Disp0_DrawBitmap(ptTile->tRegion.tLocation.iX,
ptTile->tRegion.tLocation.iY,
ptTile->tRegion.tSize.iWidth,
ptTile->tRegion.tSize.iHeight,
(const uint8_t *)ptTile->pchBuffer);
arm_2d_helper_pfb_report_rendering_complete(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
}
# endif
#endif
__WEAK
void __disp_adapter0_user_on_frame_complete(void *ptTarget,
bool bIsFrameSkipped)
{
ARM_2D_UNUSED(ptTarget);
ARM_2D_UNUSED(bIsFrameSkipped);
}
static bool __on_each_frame_complete(void *ptTarget)
{
ARM_2D_PARAM(ptTarget);
int64_t lTimeStamp = arm_2d_helper_get_system_timestamp();
bool bIsFrameSkipped
= arm_2d_helper_is_frame_skipped(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
#if __DISP0_CFG_FPS_CACULATION_MODE__ == ARM_2D_FPS_MODE_REAL
static int64_t s_lLastTimeStamp = 0;
int32_t nElapsed = 0;
if (0 != s_lLastTimeStamp) {
nElapsed = (int32_t)(lTimeStamp - s_lLastTimeStamp);
}
s_lLastTimeStamp = lTimeStamp;
#else /* __DISP0_CFG_FPS_CACULATION_MODE__ == ARM_2D_FPS_MODE_RENDER_ONLY */
int32_t nElapsed = DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t.Statistics.nTotalCycle;
#endif
int32_t nTotalLCDCycCount = DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t.Statistics.nRenderingCycle;
DISP0_ADAPTER.Benchmark.wLCDLatency = nTotalLCDCycCount;
/* calculate real-time FPS */
if (__DISP0_CFG_ITERATION_CNT__) {
if (DISP0_ADAPTER.Benchmark.hwIterations) {
int32_t nRenderCycle = DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t.Statistics.nTotalCycle;
DISP0_ADAPTER.Benchmark.wMin = MIN((uint32_t)nElapsed, DISP0_ADAPTER.Benchmark.wMin);
DISP0_ADAPTER.Benchmark.wMax = MAX(nElapsed, (int32_t)DISP0_ADAPTER.Benchmark.wMax);
DISP0_ADAPTER.Benchmark.dwTotal += nElapsed;
DISP0_ADAPTER.Benchmark.dwRenderTotal += nRenderCycle;
DISP0_ADAPTER.Benchmark.hwIterations--;
DISP0_ADAPTER.Benchmark.hwFrameCounter += (nRenderCycle != 0) ? 1 : 0;
if (0 == DISP0_ADAPTER.Benchmark.hwIterations) {
if (0 == DISP0_ADAPTER.Benchmark.hwFrameCounter) {
DISP0_ADAPTER.Benchmark.wAverage = 0;
} else {
DISP0_ADAPTER.Benchmark.wAverage =
(uint32_t)(DISP0_ADAPTER.Benchmark.dwTotal / (uint64_t)DISP0_ADAPTER.Benchmark.hwFrameCounter);
DISP0_ADAPTER.Benchmark.wAverage = MAX(1, DISP0_ADAPTER.Benchmark.wAverage);
}
int64_t lElapsed = lTimeStamp - DISP0_ADAPTER.Benchmark.lTimestamp;
if (lElapsed) {
DISP0_ADAPTER.Benchmark.fCPUUsage = (float)((double)DISP0_ADAPTER.Benchmark.dwRenderTotal / (double)lElapsed) * 100.0f;
}
/* log statistics */
if (DISP0_ADAPTER.Benchmark.wAverage) {
ARM_2D_LOG_INFO(
STATISTICS,
0,
"DISP_ADAPTER0",
"FPS:%3d(%dms)\tCPU:%2.2f%%\tLCD-Latency:%2dms",
MIN(arm_2d_helper_get_reference_clock_frequency() / DISP0_ADAPTER.Benchmark.wAverage, 999),
(int32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wAverage),
DISP0_ADAPTER.Benchmark.fCPUUsage,
(int32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wLCDLatency)
);
} else {
ARM_2D_LOG_INFO(
STATISTICS,
0,
"DISP_ADAPTER0",
"FPS: SKIPPED\tCPU:%2.2f%%\tLCD-Latency:%2dms",
DISP0_ADAPTER.Benchmark.fCPUUsage,
(int32_t)arm_2d_helper_convert_ticks_to_ms(DISP0_ADAPTER.Benchmark.wLCDLatency)
);
}
DISP0_ADAPTER.Benchmark.wMin = UINT32_MAX;
DISP0_ADAPTER.Benchmark.wMax = 0;
DISP0_ADAPTER.Benchmark.dwTotal = 0;
DISP0_ADAPTER.Benchmark.dwRenderTotal = 0;
DISP0_ADAPTER.Benchmark.hwIterations = __DISP0_CFG_ITERATION_CNT__;
DISP0_ADAPTER.Benchmark.hwFrameCounter = 0;
DISP0_ADAPTER.Benchmark.lTimestamp = arm_2d_helper_get_system_timestamp();
}
}
}
#if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
if (!bIsFrameSkipped) {
arm_2d_helper_3fb_flush_frame(&s_tDirectModeHelper);
}
#endif
__disp_adapter0_user_on_frame_complete(ptTarget, bIsFrameSkipped);
return true;
}
#if __DISP0_CFG_ROTATE_SCREEN__
/*!
* \brief before-flushing event handler
* \param[in] ptOrigin the original PFB
* \param[in] ptScratch A scratch PFB
* \return true the new content is stored in ptScratch
* \return false the new content is stored in ptOrigin
*/
static IMPL_PFB_BEFORE_FLUSHING(__before_flushing)
{
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(ptOrigin);
ARM_2D_PARAM(ptScratch);
#if __DISP0_CFG_COLOUR_DEPTH__ == 8
# define __COLOUR_NAME__ c8bit
#elif __DISP0_CFG_COLOUR_DEPTH__ == 16
# define __COLOUR_NAME__ rgb16
#elif __DISP0_CFG_COLOUR_DEPTH__ == 32
# define __COLOUR_NAME__ rgb32
#endif
#if __DISP0_CFG_ROTATE_SCREEN__ == 1
# define __ROTATE__ 90
#elif __DISP0_CFG_ROTATE_SCREEN__ == 2
# define __ROTATE__ 180
#elif __DISP0_CFG_ROTATE_SCREEN__ == 3
# define __ROTATE__ 270
#endif
ARM_CONNECT(__arm_2d_helper_pfb_rotate, __ROTATE__,_, __COLOUR_NAME__)(
ptOrigin,
ptScratch,
(arm_2d_size_t []) {
{
__DISP0_CFG_SCEEN_WIDTH__,
__DISP0_CFG_SCEEN_HEIGHT__
}
});
return true;
}
#endif
static void __user_scene_player_init(void)
{
memset(&DISP0_ADAPTER, 0, sizeof(DISP0_ADAPTER));
#if __DISP0_CFG_OPTIMIZE_DIRTY_REGIONS__
ARM_NOINIT
static arm_2d_region_list_item_t s_tDirtyRegionList[__DISP0_CFG_DIRTY_REGION_POOL_SIZE__];
#endif
//! initialise FPB helper
if (ARM_2D_HELPER_PFB_INIT(
&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t, //!< FPB Helper object
__DISP0_CFG_SCEEN_WIDTH__, //!< screen width
__DISP0_CFG_SCEEN_HEIGHT__, //!< screen height
COLOUR_INT, //!< colour date type
__DISP0_COLOUR_FORMAT__, //!< colour format
__DISP0_CFG_PFB_BLOCK_WIDTH__, //!< PFB block width
__DISP0_CFG_PFB_BLOCK_HEIGHT__, //!< PFB block height
__DISP0_CFG_PFB_HEAP_SIZE__ //!< number of PFB in the PFB pool
#if __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ \
&& !__DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__
+ __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ - 1
#else
+ (__DISP0_CFG_ROTATE_SCREEN__ > 0)
#endif
,{
.evtOnLowLevelRendering = {
//! callback for low level rendering
.fnHandler = &__disp_adapter0_pfb_render_handler,
},
.evtOnEachFrameCPL = {
.fnHandler = &__on_each_frame_complete,
},
#if __DISP0_CFG_ROTATE_SCREEN__
.evtBeforeFlushing = {
.fnHandler = &__before_flushing,
},
#endif
},
#if __DISP0_CFG_SWAP_RGB16_HIGH_AND_LOW_BYTES__
.FrameBuffer.bSwapRGB16 = true,
#endif
#if __DISP0_CFG_DEBUG_DIRTY_REGIONS__
.FrameBuffer.bDebugDirtyRegions = true,
#endif
.FrameBuffer.u3PixelWidthAlign = __DISP0_CFG_PFB_PIXEL_ALIGN_WIDTH__,
.FrameBuffer.u3PixelHeightAlign = __DISP0_CFG_PFB_PIXEL_ALIGN_HEIGHT__,
#if __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ \
&& !__DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__
// reserve PFB blocks for the virtual resource service
.FrameBuffer.u4PoolReserve = __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ - 1,
#endif
#if __DISP0_CFG_OPTIMIZE_DIRTY_REGIONS__
.DirtyRegion.ptRegions = s_tDirtyRegionList,
.DirtyRegion.chCount = dimof(s_tDirtyRegionList),
#endif
) < 0) {
//! error detected
assert(false);
}
#if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
do {
extern uintptr_t __DISP_ADAPTER0_3FB_FB0_ADDRESS__;
extern uintptr_t __DISP_ADAPTER0_3FB_FB1_ADDRESS__;
extern uintptr_t __DISP_ADAPTER0_3FB_FB2_ADDRESS__;
extern arm_2d_helper_2d_copy_handler_t __disp_adapter0_request_2d_copy;
extern arm_2d_helper_dma_copy_handler_t __disp_adapter0_request_dma_copy;
arm_2d_helper_3fb_cfg_t tCFG = {
.tScreenSize = {
__DISP0_CFG_SCEEN_WIDTH__,
__DISP0_CFG_SCEEN_HEIGHT__,
},
.chPixelBits = __DISP0_CFG_COLOUR_DEPTH__,
.pnAddress = {
[0] = ((uintptr_t)__DISP_ADAPTER0_3FB_FB0_ADDRESS__),
[1] = ((uintptr_t)__DISP_ADAPTER0_3FB_FB1_ADDRESS__),
[2] = ((uintptr_t)__DISP_ADAPTER0_3FB_FB2_ADDRESS__),
},
#if __DISP0_CFG_ENABLE_ASYNC_FLUSHING__
.evtOn2DCopy = {
.fnHandler = __disp_adapter0_request_2d_copy,
},
.evtOnDMACopy = {
.fnHandler = __disp_adapter0_request_dma_copy,
},
#endif
};
arm_2d_helper_3fb_init(&s_tDirectModeHelper, &tCFG);
} while(0);
#endif
#if defined(RTE_Acceleration_Arm_2D_Extra_LCD_printf)
arm_lcd_text_init((arm_2d_region_t []) {
{ .tSize = {
.iWidth = __DISP0_CFG_SCEEN_WIDTH__,
.iHeight = __DISP0_CFG_SCEEN_HEIGHT__,
}}});
#endif
DISP0_ADAPTER.Benchmark.wMin = UINT32_MAX;
DISP0_ADAPTER.Benchmark.hwIterations = __DISP0_CFG_ITERATION_CNT__;
DISP0_ADAPTER.Benchmark.hwFrameCounter = 0;
}
#if __DISP0_CFG_NAVIGATION_LAYER_MODE__
__WEAK
void disp_adapter0_navigator_init(void)
{
static const arm_2d_region_t tScreen = {
.tSize = {
.iWidth = __DISP0_CFG_SCEEN_WIDTH__,
.iHeight = __DISP0_CFG_SCEEN_HEIGHT__,
},
};
ARM_2D_UNUSED(tScreen);
#if __DISP0_CFG_NAVIGATION_LAYER_MODE__ == 2
arm_2d_align_bottom_centre(tScreen, s_tNavDirtyRegionList[0].tRegion.tSize) {
s_tNavDirtyRegionList[0].tRegion = __bottom_centre_region;
s_tNavDirtyRegionList[0].tRegion.tLocation.iY -= 16;
}
#else
/*! define dirty regions for the navigation layer */
IMPL_ARM_2D_REGION_LIST(s_tNavDirtyRegionList, static)
/* a region for the status bar on the bottom of the screen */
ADD_LAST_REGION_TO_LIST(s_tNavDirtyRegionList,
.tLocation = {
.iX = 0,
.iY = ((__DISP0_CFG_SCEEN_HEIGHT__ + 7) / 8 - 2) * 8},
.tSize = {
.iWidth = __DISP0_CFG_SCEEN_WIDTH__,
.iHeight = 8,
},
),
END_IMPL_ARM_2D_REGION_LIST(s_tNavDirtyRegionList)
#endif
#if __DISP0_CFG_USE_CONSOLE__
do {
#if __DISP0_CFG_CONSOLE_INPUT_BUFFER__
static uint8_t s_chInputBuffer[__DISP0_CFG_CONSOLE_INPUT_BUFFER__];
#endif
static uint8_t s_chConsoleBuffer[ (__DISP0_CONSOLE_WIDTH__ / 6)
* (__DISP0_CONSOLE_HEIGHT__ / 8)];
console_box_cfg_t tCFG = {
.tBoxSize = {
.iWidth = __DISP0_CONSOLE_WIDTH__,
.iHeight = __DISP0_CONSOLE_HEIGHT__,
},
.pchConsoleBuffer = s_chConsoleBuffer,
.hwConsoleBufferSize = sizeof(s_chConsoleBuffer),
#if __DISP0_CFG_CONSOLE_INPUT_BUFFER__
.pchInputBuffer = s_chInputBuffer,
.hwInputBufferSize = sizeof(s_chInputBuffer),
#endif
#if __DISP0_CFG_COLOUR_DEPTH__ == 8
.tColor = GLCD_COLOR_WHITE,
#else
.tColor = GLCD_COLOR_GREEN,
#endif
.bUseDirtyRegion = true,
.ppDirtyRegionList = (arm_2d_region_list_item_t **)&s_tNavDirtyRegionList,
};
console_box_init( &DISP0_CONSOLE.tConsole,
NULL,
&tCFG);
} while(0);
arm_2d_dirty_region_item_ignore_set(&DISP0_CONSOLE.tBackground, true);
arm_2d_align_top_left(tScreen, 220, 200) {
DISP0_CONSOLE.tBackground.tRegion = __top_left_region;
}
arm_2d_helper_pfb_append_dirty_regions_to_list(
(arm_2d_region_list_item_t **)&s_tNavDirtyRegionList,
&DISP0_CONSOLE.tBackground,
1);
DISP0_CONSOLE.lTimestamp = 0;
DISP0_CONSOLE.Signature = ARM_2D_VERSION;
#endif
/* register event handler for evtOnDrawNavigation */
arm_2d_scene_player_register_on_draw_navigation_event_handler(
&DISP0_ADAPTER,
__disp_adapter0_draw_navigation,
NULL,
(arm_2d_region_list_item_t *)s_tNavDirtyRegionList);
}
#else
__WEAK
void disp_adapter0_navigator_init(void)
{
}
#endif
#if __DISP0_CFG_USE_CONSOLE__
#include
#if defined(__IS_COMPILER_IAR__) && __IS_COMPILER_IAR__
#define __va_list va_list
#endif
ARM_NONNULL(1)
int disp_adapter0_printf(const char *format, ...)
{
int real_size, n;
char s_chBuffer[128];
char *pchSrc = s_chBuffer;
__va_list ap;
va_start(ap, format);
real_size = vsnprintf(s_chBuffer, sizeof(s_chBuffer)-1, format, ap);
va_end(ap);
real_size = MIN(sizeof(s_chBuffer)-1, real_size);
s_chBuffer[real_size] = '\0';
n = real_size;
do {
if (!console_box_putchar(&DISP0_CONSOLE.tConsole, *pchSrc++)) {
break;
}
} while(--n);
return real_size;
}
bool disp_adapter0_putchar(uint8_t chChar)
{
if (DISP0_CONSOLE.Signature != ARM_2D_VERSION) {
return false;
}
return console_box_putchar(&DISP0_CONSOLE.tConsole,chChar);
}
#endif
/*----------------------------------------------------------------------------*
* Display Adapter Entry *
*----------------------------------------------------------------------------*/
void disp_adapter0_init(void)
{
__user_scene_player_init();
arm_2d_helper_init();
#if defined(RTE_Acceleration_Arm_2D_Extra_Controls)
extern
void arm_extra_controls_init(void);
arm_extra_controls_init();
#endif
disp_adapter0_navigator_init();
DISP0_ADAPTER.Benchmark.lTimestamp = arm_2d_helper_get_system_timestamp();
#if !__DISP0_CFG_DISABLE_DEFAULT_SCENE__
do {
static arm_2d_scene_t s_tScenes[] = {
[0] = {
#if __DISP0_CFG_COLOR_SOLUTION__ == 1
/* the canvas colour */
.tCanvas = {GLCD_COLOR_BLACK},
#else
/* the canvas colour */
.tCanvas = {GLCD_COLOR_WHITE},
#endif
.fnScene = &__pfb_draw_handler,
//.ptDirtyRegion = (arm_2d_region_list_item_t *)s_tDirtyRegions,
.fnOnFrameStart = &__on_frame_start,
.fnOnFrameCPL = &__on_frame_complete,
.fnDepose = NULL,
},
};
arm_2d_scene_player_append_scenes(
&DISP0_ADAPTER,
(arm_2d_scene_t *)s_tScenes,
dimof(s_tScenes));
} while(0);
#endif
}
arm_fsm_rt_t __disp_adapter0_task(void)
{
return arm_2d_scene_player_task(&DISP0_ADAPTER);
}
/*----------------------------------------------------------------------------*
* Virtual Resource Helper *
*----------------------------------------------------------------------------*/
#if __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__
__WEAK
void * __disp_adapter0_aligned_malloc(size_t nSize, size_t nAlign)
{
ARM_2D_UNUSED(nAlign);
/* ensure nAlign is 2^n */
assert((((~nAlign) + 1) & nAlign) == nAlign);
void * pMem = __arm_2d_allocate_scratch_memory(nSize, 4, ARM_2D_MEM_TYPE_UNSPECIFIED);
assert( 0 == ((uintptr_t)pMem & (nAlign - 1)));
return pMem;
}
__WEAK
void __disp_adapter0_free(void *pMem)
{
if (NULL != pMem) {
__arm_2d_free_scratch_memory(ARM_2D_MEM_TYPE_UNSPECIFIED, pMem);
}
}
__WEAK
void __disp_adapter0_vres_asset_2dcopy( uintptr_t pObj,
arm_2d_vres_t *ptVRES,
arm_2d_region_t *ptRegion,
uintptr_t pSrc,
uintptr_t pDes,
int16_t iTargetStride,
int16_t iSourceStride,
int16_t iPixelSize)
{
assert(NULL != ptRegion);
assert(NULL != ptVRES);
int16_t iSourceWidth = ptRegion->tSize.iWidth;
int16_t iSourceHeight = ptRegion->tSize.iHeight;
/* calculate offset */
pSrc += (ptRegion->tLocation.iY * iSourceStride + ptRegion->tLocation.iX) * iPixelSize;
for (int_fast16_t y = 0; y < iSourceHeight; y++) {
__disp_adapter0_vres_read_memory(
pObj,
(void *)pDes,
(uintptr_t)pSrc,
iPixelSize * iSourceWidth);
pDes += iTargetStride * iPixelSize;
pSrc += iSourceStride * iPixelSize;
}
}
intptr_t __disp_adapter0_vres_asset_loader (uintptr_t pObj,
arm_2d_vres_t *ptVRES,
arm_2d_region_t *ptRegion)
{
COLOUR_INT *pBuffer = NULL;
size_t nPixelSize = sizeof(COLOUR_INT);
size_t tBufferSize;
uint32_t nBytesPerLine = ptRegion->tSize.iWidth * nPixelSize;
size_t nBitsPerPixel = sizeof(COLOUR_INT) << 3;
if (0 != ptVRES->tTile.tColourInfo.chScheme) {
nBitsPerPixel = (1 << ptVRES->tTile.tColourInfo.u3ColourSZ);
if (ptVRES->tTile.tColourInfo.u3ColourSZ >= 3) {
nPixelSize = (1 << (ptVRES->tTile.tColourInfo.u3ColourSZ - 3));
nBytesPerLine = ptRegion->tSize.iWidth * nPixelSize;
} else {
/* for A1, A2 and A4 */
size_t nPixelPerByte = 1 << (3 - ptVRES->tTile.tColourInfo.u3ColourSZ);
int16_t iOffset = ptRegion->tLocation.iX & (nPixelPerByte - 1);
uint32_t nBitsPerLine = nBitsPerPixel * (iOffset + ptRegion->tSize.iWidth);
nBytesPerLine = (nBitsPerLine + 7) >> 3;
}
}
/* background load mode */
do {
if (ptVRES->tTile.tInfo.u3ExtensionID != ARM_2D_TILE_EXTENSION_VRES) {
break;
}
assert ((uintptr_t)NULL != ptVRES->tTile.nAddress);
uintptr_t pSrc = __disp_adapter0_vres_get_asset_address(pObj, ptVRES);
uintptr_t pDes = (uintptr_t)ptVRES->tTile.nAddress;
int16_t iTargetStride = ptVRES->tTile.tInfo.Extension.VRES.iTargetStride;
int16_t iSourceStride = ptVRES->tTile.tRegion.tSize.iWidth;
__disp_adapter0_vres_asset_2dcopy( pObj,
ptVRES,
ptRegion,
pSrc,
pDes,
iTargetStride,
iSourceStride,
nPixelSize);
return ptVRES->tTile.nAddress;
} while(0);
/* default condition */
tBufferSize = ptRegion->tSize.iHeight * nBytesPerLine;
#if __DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__
pBuffer = __disp_adapter0_aligned_malloc(tBufferSize, nPixelSize);
assert(NULL != pBuffer);
if (NULL == pBuffer) {
return (intptr_t)NULL;
}
#else
arm_2d_pfb_t *ptPFB = __arm_2d_helper_pfb_new(&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t);
assert(NULL != ptPFB);
assert(ptPFB->u24Size >= tBufferSize);
if (tBufferSize > ptPFB->u24Size) {
return (intptr_t)NULL;
}
pBuffer = (COLOUR_INT *)((uintptr_t)ptPFB + sizeof(arm_2d_pfb_t));
#endif
/* load content into the buffer */
if (nBitsPerPixel < 8) {
/* A1, A2 and A4 support */
uintptr_t pSrc = __disp_adapter0_vres_get_asset_address(pObj, ptVRES);
uintptr_t pDes = (uintptr_t)pBuffer;
uint32_t iBitsperLineInSource = ptVRES->tTile.tRegion.tSize.iWidth * nBitsPerPixel;
int16_t iSourceStride = (int16_t)((uint32_t)(iBitsperLineInSource + 7) >> 3);
/* calculate offset */
pSrc += (ptRegion->tLocation.iY * iSourceStride);
pSrc += (ptRegion->tLocation.iX * nBitsPerPixel) >> 3;
for (int_fast16_t y = 0; y < ptRegion->tSize.iHeight; y++) {
__disp_adapter0_vres_read_memory( pObj,
(void *)pDes,
(uintptr_t)pSrc,
nBytesPerLine);
pDes += nBytesPerLine;
pSrc += iSourceStride;
}
} else {
uintptr_t pSrc = __disp_adapter0_vres_get_asset_address(pObj, ptVRES);
uintptr_t pDes = (uintptr_t)pBuffer;
int16_t iTargetStride = ptRegion->tSize.iWidth;
int16_t iSourceStride = ptVRES->tTile.tRegion.tSize.iWidth;
__disp_adapter0_vres_asset_2dcopy( pObj,
ptVRES,
ptRegion,
pSrc,
pDes,
iTargetStride,
iSourceStride,
nPixelSize);
} while(0);
return (intptr_t)pBuffer;
}
void __disp_adapter0_vres_buffer_deposer (
uintptr_t pTarget,
arm_2d_vres_t *ptVRES,
intptr_t pBuffer )
{
#if __DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__
ARM_2D_UNUSED(pTarget);
ARM_2D_UNUSED(ptVRES);
if ((intptr_t)NULL != pBuffer) {
__disp_adapter0_free((void *)pBuffer);
}
#else
ARM_2D_UNUSED(pTarget);
ARM_2D_UNUSED(ptVRES);
if ((intptr_t)NULL == pBuffer) {
return ;
}
arm_2d_pfb_t *ptPFB = (arm_2d_pfb_t *)((uintptr_t)pBuffer - sizeof(arm_2d_pfb_t));
__arm_2d_helper_pfb_free(&DISP0_ADAPTER.use_as__arm_2d_helper_pfb_t, ptPFB);
#endif
}
#endif
#if defined(__clang__)
# pragma clang diagnostic pop
#endif
#endif
================================================
FILE: project/mdk/RTE/Acceleration/arm_2d_disp_adapter_0.h
================================================
/*
* Copyright (c) 2009-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ARM_2D_DISP_ADAPTER0_H__
#define __ARM_2D_DISP_ADAPTER0_H__
#include "arm_2d_helper.h"
#ifdef RTE_Acceleration_Arm_2D_Helper_Disp_Adapter0
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
#endif
/*============================ INCLUDES ======================================*/
/*============================ MACROS ========================================*/
//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
// Screen and Framebuffer
// =======================
// Select the screen colour solution
// <0=> None
// <1=> Monochrome
// When specifying a colour solution, the __DISP0_CFG_COLOUR_DEPTH__ and other corresponding options will be configured (overriden) accordingly.
#ifndef __DISP0_CFG_COLOR_SOLUTION__
# define __DISP0_CFG_COLOR_SOLUTION__ 1
#endif
// Select the screen colour depth
// <8=> 8 Bits
// <16=> 16Bits
// <32=> 32Bits
// The colour depth of your screen
#ifndef __DISP0_CFG_COLOUR_DEPTH__
# define __DISP0_CFG_COLOUR_DEPTH__ 8
#endif
// Width of the screen <8-32767>
// The width of your screen
// Default: 320
#ifndef __DISP0_CFG_SCEEN_WIDTH__
# define __DISP0_CFG_SCEEN_WIDTH__ 296
#endif
// Height of the screen <8-32767>
// The height of your screen
// Default: 240
#ifndef __DISP0_CFG_SCEEN_HEIGHT__
# define __DISP0_CFG_SCEEN_HEIGHT__ 128
#endif
/*
ARM_SCREEN_NO_ROTATION 0
ARM_SCREEN_ROTATE_90 1
ARM_SCREEN_ROTATE_180 2
ARM_SCREEN_ROTATE_270 3
*/
// Rotate the Screen
// <0=> NO Rotation
// <1=> 90 Degree
// <2=> 180 Degree
// <3=> 270 Degree
// Rotate the Screen for specified degrees.
// NOTE: This is extremely slow. Please avoid using it whenever it is possible.
#ifndef __DISP0_CFG_ROTATE_SCREEN__
# define __DISP0_CFG_ROTATE_SCREEN__ 0
#endif
// Width of the PFB block
// The width of your PFB block size used in disp0
#ifndef __DISP0_CFG_PFB_BLOCK_WIDTH__
# define __DISP0_CFG_PFB_BLOCK_WIDTH__ 296
#endif
// Height of the PFB block
// The height of your PFB block size used in disp0
#ifndef __DISP0_CFG_PFB_BLOCK_HEIGHT__
# define __DISP0_CFG_PFB_BLOCK_HEIGHT__ 16
#endif
// Width Alignment of generated PFBs
// <0=> 1 pixel
// <1=> 2 pixel
// <2=> 4 pixel
// <3=> 8 pixel
// <4=> 16 pixel
// <5=> 32 pixel
// <6=> 64 pixel
// <7=> 128 pixel
// Make sure the x and width of the PFB is always aligned to 2^n pixels
#ifndef __DISP0_CFG_PFB_PIXEL_ALIGN_WIDTH__
# define __DISP0_CFG_PFB_PIXEL_ALIGN_WIDTH__ 3
#endif
// Height Alignment of generated PFBs
// <0=> 1 pixel
// <1=> 2 pixel
// <2=> 4 pixel
// <3=> 8 pixel
// <4=> 16 pixel
// <5=> 32 pixel
// <6=> 64 pixel
// <7=> 128 pixel
// Make sure the y and height of the PFB is always aligned to 2^n pixels
#ifndef __DISP0_CFG_PFB_PIXEL_ALIGN_HEIGHT__
# define __DISP0_CFG_PFB_PIXEL_ALIGN_HEIGHT__ 3
#endif
// PFB Block Count <1-65535>
// The number of blocks in the PFB pool.
#ifndef __DISP0_CFG_PFB_HEAP_SIZE__
# define __DISP0_CFG_PFB_HEAP_SIZE__ 1
#endif
//
// Navigation Layer
// =======================
// Navigation Layer Mode
// <0=> Disable Navigation Layer
// <1=> Normal Mode (Bottom)
// <2=> Tiny Mode (Bottom Centre)
// Configure the default navigation layer of this display adapter.
// NOTE: Disable the navigation layer will also remove the real-time FPS display.
#ifndef __DISP0_CFG_NAVIGATION_LAYER_MODE__
# define __DISP0_CFG_NAVIGATION_LAYER_MODE__ 1
#endif
// Number of iterations <0-2000>
// run number of iterations before calculate the FPS.
#ifndef __DISP0_CFG_ITERATION_CNT__
# define __DISP0_CFG_ITERATION_CNT__ 30
#endif
// FPS Calculation Mode
// <0=> Render-Only FPS
// <1=> Real FPS
// Decide the meaning of the real time FPS display
#ifndef __DISP0_CFG_FPS_CACULATION_MODE__
# define __DISP0_CFG_FPS_CACULATION_MODE__ 1
#endif
// Enable Console
// Add a simple console to the display adapter in a floating window.
// This feature is disabled by default.
#ifndef __DISP0_CFG_USE_CONSOLE__
# define __DISP0_CFG_USE_CONSOLE__ 0
#endif
// Console Input Buffer Size
// The size of console input buffer, 0 means no input buffer
#ifndef __DISP0_CFG_CONSOLE_INPUT_BUFFER__
# define __DISP0_CFG_CONSOLE_INPUT_BUFFER__ 255
#endif
// Console Display Time in ms <1000-0xFFFFFFFF>
// The time before the console disappear for each content update.
#ifndef __DISP0_CFG_CONSOLE_DISPALY_TIME__
# define __DISP0_CFG_CONSOLE_DISPALY_TIME__ 3000
#endif
//
// Optimization and Misc
// =======================
// Enable Dirty Region Debug Mode
// Draw dirty regions on the screen for debug.
#ifndef __DISP0_CFG_DEBUG_DIRTY_REGIONS__
# define __DISP0_CFG_DEBUG_DIRTY_REGIONS__ 0
#endif
// Enable Dirty Region Optimization Service
// Optimize dirty regions to avoid fresh overlapped areas
#ifndef __DISP0_CFG_OPTIMIZE_DIRTY_REGIONS__
# define __DISP0_CFG_OPTIMIZE_DIRTY_REGIONS__ 1
#endif
// Dirty Region Pool Size <4-255>
// The number of dirty region items available for the dirty region optimization service
#ifndef __DISP0_CFG_DIRTY_REGION_POOL_SIZE__
# define __DISP0_CFG_DIRTY_REGION_POOL_SIZE__ 8
#endif
// Swap the high and low bytes
// Swap the high and low bytes of the 16bit-pixels
#ifndef __DISP0_CFG_SWAP_RGB16_HIGH_AND_LOW_BYTES__
# define __DISP0_CFG_SWAP_RGB16_HIGH_AND_LOW_BYTES__ 0
#endif
// Enable the helper service for Asynchronous Flushing
// Please select this option when using asynchronous flushing, e.g. DMA + ISR
#ifndef __DISP0_CFG_ENABLE_ASYNC_FLUSHING__
# define __DISP0_CFG_ENABLE_ASYNC_FLUSHING__ 0
#endif
// Enable the helper service for 3FB (LCD Direct Mode)
// You can select this option when your LCD controller supports direct mode
#ifndef __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
# define __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__ 0
#endif
// Disable the default scene
// Remove the default scene for this display adapter. We highly recommend you to disable the default scene when creating real applications.
#ifndef __DISP0_CFG_DISABLE_DEFAULT_SCENE__
# define __DISP0_CFG_DISABLE_DEFAULT_SCENE__ 0
#endif
// Maximum number of Virtual Resources used per API
// <0=> NO Virtual Resource
// <1=> Background Loading Mode
// <2=> 1 Per API
// <3=> 2 Per API
// <4=> 3 Per API
// Introduce a helper service for loading virtual resources.
// This feature is disabled by default.
// NOTE: When selecting the background loading mode, you can ONLY use virtual resource as the source tile in the tile-copy-only APIs.
#ifndef __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__
# define __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ 0
#endif
// Use heap to allocate buffer in the virtual resource helper service
// Use malloc and free in the virtual resource helper service. When disabled, a static buffer in the size of current display adapter PFB will be used.
// This feature is disabled by default.
#ifndef __DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__
# define __DISP0_CFG_USE_HEAP_FOR_VIRTUAL_RESOURCE_HELPER__ 0
#endif
//
// <<< end of configuration section >>>
#if __DISP0_CFG_COLOR_SOLUTION__ == 1
/* the colour solution for monochrome screen */
# undef __DISP0_CFG_COLOUR_DEPTH__
# define __DISP0_CFG_COLOUR_DEPTH__ 8
#endif
#ifndef __DISP0_COLOUR_FORMAT__
# if __DISP0_CFG_COLOUR_DEPTH__ == 8
# define __DISP0_COLOUR_FORMAT__ ARM_2D_COLOUR_GRAY8
# elif __DISP0_CFG_COLOUR_DEPTH__ == 16
# define __DISP0_COLOUR_FORMAT__ ARM_2D_COLOUR_RGB565
# elif __DISP0_CFG_COLOUR_DEPTH__ == 32
# define __DISP0_COLOUR_FORMAT__ ARM_2D_COLOUR_CCCN888
# endif
#endif
/*============================ MACROFIED FUNCTIONS ===========================*/
#if __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__
#define disp_adapter0_impl_vres(__COLOUR_FORMAT, __WIDTH, __HEIGHT,...) \
{ \
.tTile = { \
.tRegion = { \
.tSize = { \
.iWidth = (__WIDTH), \
.iHeight =(__HEIGHT), \
}, \
}, \
.tInfo = { \
.bIsRoot = true, \
.bHasEnforcedColour = true, \
.bVirtualResource = true, \
.tColourInfo = { \
.chScheme = (__COLOUR_FORMAT), \
}, \
}, \
}, \
.Load = &__disp_adapter0_vres_asset_loader, \
.Depose = &__disp_adapter0_vres_buffer_deposer, \
__VA_ARGS__ \
}
#endif
#define disp_adapter0_task(...) \
({ \
static bool ARM_2D_SAFE_NAME(s_bRefreshLCD) = false; \
arm_fsm_rt_t ARM_2D_SAFE_NAME(ret) = arm_fsm_rt_on_going; \
if (!__ARM_VA_NUM_ARGS(__VA_ARGS__)) { \
ARM_2D_SAFE_NAME(ret) = __disp_adapter0_task(); \
} else { \
if (!ARM_2D_SAFE_NAME(s_bRefreshLCD)) { \
/* lock framerate */ \
if (arm_2d_helper_is_time_out(1000 / (1000,##__VA_ARGS__))) { \
ARM_2D_SAFE_NAME(s_bRefreshLCD) = true; \
} \
} else { \
ARM_2D_SAFE_NAME(ret) = __disp_adapter0_task(); \
if (arm_fsm_rt_cpl == ARM_2D_SAFE_NAME(ret)) { \
ARM_2D_SAFE_NAME(s_bRefreshLCD) = false; \
} \
} \
}; \
ARM_2D_SAFE_NAME(ret);})
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
ARM_NOINIT
extern
arm_2d_scene_player_t DISP0_ADAPTER;
/*============================ PROTOTYPES ====================================*/
extern
void disp_adapter0_init(void);
extern
arm_fsm_rt_t __disp_adapter0_task(void);
#if __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__
/*!
* \brief a method to load a specific part of an image
* \note It is NOT an API for users to call, plese leave it alone
*
* \param[in] pTarget a reference of an user object
* \param[in] ptVRES a reference of this virtual resource
* \param[in] ptRegion the target region of the image
* \return intptr_t the address of a resource buffer which holds the content
*/
intptr_t __disp_adapter0_vres_asset_loader (
uintptr_t pTarget,
arm_2d_vres_t *ptVRES,
arm_2d_region_t *ptRegion);
/*!
* \brief a method to despose the buffer
* \note It is NOT an API for users to call, plese leave it alone
*
* \param[in] pTarget a reference of an user object
* \param[in] ptVRES a reference of this virtual resource
* \param[in] pBuffer the target buffer
*/
void __disp_adapter0_vres_buffer_deposer ( uintptr_t pTarget,
arm_2d_vres_t *ptVRES,
intptr_t pBuffer );
/*!
* \brief A user implemented function to return the address for specific asset
* stored in external memory, e.g. SPI Flash
* \note You MUST provide an implementation when
* __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ is enabled(1)
*
* \param[in] pObj an pointer of user defined object, it is used for OOC
* \note You can ignore pObj if you don't care/don't use OOC
*
* \param[in] ptVRES the target virtual resource object
* \return uintptr_t the address of the target asset in external memory
*/
extern
uintptr_t __disp_adapter0_vres_get_asset_address(
uintptr_t pObj,
arm_2d_vres_t *ptVRES);
/*!
* \brief A user implemented function to copy content from external memory
* (e.g. SPI Flash) to a local buffer with specified address and size.
*
* \note You MUST provide an implementation when
* __DISP0_CFG_VIRTUAL_RESOURCE_HELPER__ is enabled(1)
*
* \param[in] pObj an pointer of user defined object, it is used for OOC
* \note You can ignore pObj if you don't care/don't use OOC
*
* \param[in] pBuffer the address of the local buffer
* \param[in] pAddress the address in the external memory
* \param[in] nSizeInByte number of bytes to read
*/
extern
void __disp_adapter0_vres_read_memory( intptr_t pObj,
void *pBuffer,
uintptr_t pAddress,
size_t nSizeInByte);
#endif
#if __DISP0_CFG_ENABLE_ASYNC_FLUSHING__
# if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
/*!
* \brief An user implemented interface for DMA memory-to-memory copy.
* You should implement an ISR for copy-complete event and call
* disp_adapter0_insert_dma_copy_complete_event_handler() or
* arm_2d_helper_3fb_report_dma_copy_complete() to notify the
* 3FB (direct mode) helper service.
*
* \param[in] ptThis the helper service control block
* \param[in] pObj the address of the user object
* \param[in] pnSource the source address of the memory block
* \param[in] pnTarget the target address
* \param[in] nDataItemCount the number of date items
* \param[in] chDataItemSize the size of each data item
*/
extern
void __disp_adapter0_request_dma_copy( arm_2d_helper_3fb_t *ptThis,
void *pObj,
uintptr_t pnSource,
uintptr_t pnTarget,
uint32_t nDataItemCount,
uint_fast8_t chDataItemSize);
/*!
* \brief An user implemented interface for 2D-Copy.
* \param[in] pnSource the source image address
* \param[in] wSourceStride the stride of the source image
* \param[in] pnTarget the address in the target framebuffer
* \param[in] wTargetStride the stride of the target framebuffer
* \param[in] iWidth the safe width of the source image
* \param[in] iHeight the safe height of the source image
* \retval true the 2D copy is complete when leaving this function
* \retval false An async 2D copy request is sent to the DMA
*
* \note if false is replied, you have to call
* disp_adapter0_insert_2d_copy_complete_event_handler() to report
* the completion of the 2d-copy.
*/
bool __disp_adapter0_request_2d_copy( arm_2d_helper_3fb_t *ptThis,
void *pObj,
uintptr_t pnSource,
uint32_t wSourceStride,
uintptr_t pnTarget,
uint32_t wTargetStride,
int16_t iWidth,
int16_t iHeight,
uint_fast8_t chBytePerPixel );
/*!
* \brief the handler for the 2d copy complete event.
* \note When both __DISP0_CFG_ENABLE_ASYNC_FLUSHING__ and
* __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__ is set to '1', user
* MUST call this function to notify the PFB helper that the previous
* asynchronouse 2d copy is complete.
* \note When people using DMA+ISR to offload CPU, this fucntion is called in
* the DMA transfer complete ISR.
*/
extern
void disp_adapter0_insert_2d_copy_complete_event_handler(void);
/*!
* \brief the handler for the dma copy complete event.
* \note When both __DISP0_CFG_ENABLE_ASYNC_FLUSHING__ and
* __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__ is set to '1', user
* MUST call this function to notify the PFB helper that the previous
* dma copy is complete.
* \note When people using DMA+ISR to offload CPU, this fucntion is called in
* the DMA transfer complete ISR.
*/
extern
void disp_adapter0_insert_dma_copy_complete_event_handler(void);
# else
/*!
* \brief It is an user implemented function that request an LCD flushing in
* asynchronous manner.
* \note User MUST implement this function when
* __DISP0_CFG_ENABLE_ASYNC_FLUSHING__ is set to '1'
*
* \param[in] pTarget an user specified object address
* \param[in] bIsNewFrame whether this flushing request is the first iteration
* of a new frame.
* \param[in] iX the x coordinate of a flushing window in the target screen
* \param[in] iY the y coordinate of a flushing window in the target screen
* \param[in] iWidth the width of a flushing window
* \param[in] iHeight the height of a flushing window
* \param[in] pBuffer the frame buffer address
*/
extern void __disp_adapter0_request_async_flushing(
void *pTarget,
bool bIsNewFrame,
int16_t iX,
int16_t iY,
int16_t iWidth,
int16_t iHeight,
const COLOUR_INT *pBuffer);
/*!
* \brief the handler for the asynchronous flushing complete event.
* \note When __DISP0_CFG_ENABLE_ASYNC_FLUSHING__ is set to '1', user
* MUST call this function to notify the PFB helper that the previous
* asynchronous flushing is complete.
* \note When people using DMA+ISR to offload CPU, this fucntion is called in
* the DMA transfer complete ISR.
*/
extern
void disp_adapter0_insert_async_flushing_complete_event_handler(void);
# endif
#endif
#if __DISP0_CFG_ENABLE_3FB_HELPER_SERVICE__
/*!
* \brief get a pointer for flushing
* \return void * the address of a framebuffer
*
* \note please only call this function when on vsync event.
*/
extern
void *disp_adapter0_3fb_get_flush_pointer(void);
#endif
#if __DISP0_CFG_USE_CONSOLE__
extern
ARM_NONNULL(1)
int disp_adapter0_printf(const char *format, ...);
extern
bool disp_adapter0_putchar(uint8_t chChar);
#else
# define disp_adapter0_printf(__format_string, ...)
# define disp_adapter0_putchar(...) (true)
#endif
#if defined(__clang__)
# pragma clang diagnostic pop
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif
================================================
FILE: project/mdk/RTE/Acceleration/arm_2d_scene_gas_gauge.c
================================================
/*
* Copyright (c) 2009-2022 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*============================ INCLUDES ======================================*/
#include "arm_2d.h"
#if defined(RTE_Acceleration_Arm_2D_Helper_PFB)
#define __USER_SCENE_GAS_GAUGE_IMPLEMENT__
#include "arm_2d_scenes.h"
#include "arm_2d_helper.h"
#include "arm_2d_example_controls.h"
#include "arm_2d_scene_gas_gauge.h"
#include
#include
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wsign-conversion"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wcast-align"
# pragma clang diagnostic ignored "-Wmissing-field-initializers"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wmissing-prototypes"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic ignored "-Wgnu-statement-expression"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wunused-function"
# pragma clang diagnostic ignored "-Wmissing-declarations"
#elif __IS_COMPILER_ARM_COMPILER_5__
# pragma diag_suppress 64,177
#elif __IS_COMPILER_IAR__
# pragma diag_suppress=Pa089,Pe188,Pe177,Pe174
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Wunused-function"
# pragma GCC diagnostic ignored "-Wunused-variable"
# pragma GCC diagnostic ignored "-Wunused-value"
#endif
/*============================ MACROS ========================================*/
#if __GLCD_CFG_COLOUR_DEPTH__ == 8
# define c_tileCMSISLogo c_tileCMSISLogoGRAY8
#elif __GLCD_CFG_COLOUR_DEPTH__ == 16
# define c_tileCMSISLogo c_tileCMSISLogoRGB565
#elif __GLCD_CFG_COLOUR_DEPTH__ == 32
# define c_tileCMSISLogo c_tileCMSISLogoCCCA8888
#else
# error Unsupported colour depth!
#endif
/*============================ MACROFIED FUNCTIONS ===========================*/
#undef this
#define this (*ptThis)
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
extern const arm_2d_tile_t c_tileCMSISLogo;
extern const arm_2d_tile_t c_tileCMSISLogoMask;
extern const arm_2d_tile_t c_tileCMSISLogoA2Mask;
extern const arm_2d_tile_t c_tileCMSISLogoA4Mask;
/*============================ PROTOTYPES ====================================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ IMPLEMENTATION ================================*/
static void __on_scene_gas_gauge_depose(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
ptScene->ptPlayer = NULL;
/* reset timestamp */
arm_foreach(int64_t,this.lTimestamp, ptItem) {
*ptItem = 0;
}
ARM_2D_OP_DEPOSE(this.tBlurOP);
if (!this.bUserAllocated) {
__arm_2d_free_scratch_memory(ARM_2D_MEM_TYPE_UNSPECIFIED, ptScene);
}
}
/*----------------------------------------------------------------------------*
* Scene 4 *
*----------------------------------------------------------------------------*/
static void __on_scene_gas_gauge_background_start(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_gas_gauge_background_complete(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_gas_gauge_frame_start(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
int32_t nResult;
do {
arm_2d_helper_time_cos_slider(0, 255-16, 15000, 0, &nResult, &this.lTimestamp[2]);
this.chBlurDegree = nResult;
} while(0);
do {
/* simulate a full battery charging/discharge cycle */
arm_2d_helper_time_cos_slider(0, 1000, 30000, 0, &nResult, &this.lTimestamp[1]);
if (this.hwGasgauge < nResult) {
this.tStatus = BATTERY_STATUS_CHARGING;
} else if (this.hwGasgauge > nResult) {
this.tStatus = BATTERY_STATUS_DISCHARGING;
}
this.hwGasgauge = (uint16_t)nResult;
} while(0);
}
static void __before_scene_gas_gauge_switching_out(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_gas_gauge_frame_complete(arm_2d_scene_t *ptScene)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)ptScene;
ARM_2D_UNUSED(ptThis);
/* switch to next scene after 3s */
if (arm_2d_helper_is_time_out(29000, &this.lTimestamp[0])) {
//arm_2d_scene_player_switch_to_next_scene(ptScene->ptPlayer);
}
}
static
IMPL_PFB_ON_DRAW(__pfb_draw_scene_gas_gauge_background_handler)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)pTarget;
ARM_2D_UNUSED(ptTile);
ARM_2D_UNUSED(bIsNewFrame);
/*-----------------------draw back ground begin-----------------------*/
/*-----------------------draw back ground end -----------------------*/
arm_2d_op_wait_async(NULL);
return arm_fsm_rt_cpl;
}
static
IMPL_PFB_ON_DRAW(__pfb_draw_scene_gas_gauge_handler)
{
user_scene_gas_gauge_t *ptThis = (user_scene_gas_gauge_t *)pTarget;
ARM_2D_UNUSED(ptTile);
ARM_2D_UNUSED(bIsNewFrame);
/*-----------------------draw the foreground begin-----------------------*/
/* following code is just a demo, you can remove them */
arm_2d_canvas(ptTile, __canvas) {
arm_2d_align_centre( __canvas, 128, 130) {
arm_2d_layout(__centre_region) {
__item_line_horizontal(64, 130) {
battery_gasgauge_nixie_tube_show( &this.tBatteryNixieTube,
ptTile,
&__item_region,
this.hwGasgauge,
this.tStatus,
bIsNewFrame);
arm_2d_op_wait_async(NULL);
arm_2d_size_t tTextSize = arm_lcd_get_string_line_box("00", &ARM_2D_FONT_A4_DIGITS_ONLY);
arm_2d_align_bottom_centre(__item_region, tTextSize) {
arm_lcd_text_set_target_framebuffer((arm_2d_tile_t *)ptTile);
arm_lcd_text_set_font((arm_2d_font_t *)&ARM_2D_FONT_A4_DIGITS_ONLY);
arm_lcd_text_set_draw_region(&__bottom_centre_region);
arm_lcd_text_set_colour(GLCD_COLOR_NIXIE_TUBE, GLCD_COLOR_BLACK);
arm_lcd_text_location(0,0);
arm_lcd_printf("%02d", this.hwGasgauge / 10);
arm_2d_op_wait_async(NULL);
}
}
__item_line_horizontal(64, 130) {
battery_gasgauge_liquid_show( &this.tBatteryLiquid,
ptTile,
&__item_region,
this.hwGasgauge,
this.tStatus,
bIsNewFrame);
arm_2d_op_wait_async(NULL);
arm_2d_size_t tTextSize = arm_lcd_get_string_line_box("00", &ARM_2D_FONT_A4_DIGITS_ONLY);
arm_2d_align_bottom_centre(__item_region, tTextSize) {
arm_lcd_text_set_target_framebuffer((arm_2d_tile_t *)ptTile);
arm_lcd_text_set_font((arm_2d_font_t *)&ARM_2D_FONT_A4_DIGITS_ONLY);
arm_lcd_text_set_draw_region(&__bottom_centre_region);
arm_lcd_text_set_colour(GLCD_COLOR_WHITE, GLCD_COLOR_BLACK);
arm_lcd_text_location(0,0);
arm_lcd_text_set_opacity(128);
arm_lcd_printf("%02d", this.hwGasgauge / 10);
arm_lcd_text_set_opacity(255);
arm_2d_op_wait_async(NULL);
}
}
}
}
arm_2d_filter_iir_blur_api_params_t tParams = {
.chBlurDegree = this.chBlurDegree,
};
arm_2dp_filter_iir_blur(&this.tBlurOP,
ptTile,
&__canvas,
&tParams);
}
/*-----------------------draw the foreground end -----------------------*/
arm_2d_op_wait_async(NULL);
return arm_fsm_rt_cpl;
}
ARM_NONNULL(1)
user_scene_gas_gauge_t *__arm_2d_scene_gas_gauge_init( arm_2d_scene_player_t *ptDispAdapter,
user_scene_gas_gauge_t *ptThis)
{
bool bUserAllocated = false;
assert(NULL != ptDispAdapter);
/*! define dirty regions */
IMPL_ARM_2D_REGION_LIST(s_tDirtyRegions, static)
/* a dirty region to be specified at runtime*/
ADD_LAST_REGION_TO_LIST(s_tDirtyRegions,
.tSize = {
128, 130,
},
),
END_IMPL_ARM_2D_REGION_LIST(s_tDirtyRegions)
s_tDirtyRegions[dimof(s_tDirtyRegions)-1].ptNext = NULL;
/* get the screen region */
arm_2d_region_t tScreen
= arm_2d_helper_pfb_get_display_area(
&ptDispAdapter->use_as__arm_2d_helper_pfb_t);
/* initialise dirty region 0 at runtime
*/
arm_2d_align_centre(tScreen, s_tDirtyRegions[0].tRegion.tSize) {
s_tDirtyRegions[0].tRegion = __centre_region;
}
if (NULL == ptThis) {
ptThis = (user_scene_gas_gauge_t *)
__arm_2d_allocate_scratch_memory( sizeof(user_scene_gas_gauge_t),
__alignof__(user_scene_gas_gauge_t),
ARM_2D_MEM_TYPE_UNSPECIFIED);
assert(NULL != ptThis);
if (NULL == ptThis) {
return NULL;
}
} else {
bUserAllocated = true;
memset(ptThis, 0, sizeof(user_scene_gas_gauge_t));
}
*ptThis = (user_scene_gas_gauge_t){
.use_as__arm_2d_scene_t = {
/* the canvas colour */
.tCanvas = {GLCD_COLOR_BLACK},
/* Please uncommon the callbacks if you need them
*/
//.fnBackground = &__pfb_draw_scene_gas_gauge_background_handler,
.fnScene = &__pfb_draw_scene_gas_gauge_handler,
//.ptDirtyRegion = (arm_2d_region_list_item_t *)s_tDirtyRegions,
//.fnOnBGStart = &__on_scene_gas_gauge_background_start,
//.fnOnBGComplete = &__on_scene_gas_gauge_background_complete,
.fnOnFrameStart = &__on_scene_gas_gauge_frame_start,
.fnBeforeSwitchOut = &__before_scene_gas_gauge_switching_out,
.fnOnFrameCPL = &__on_scene_gas_gauge_frame_complete,
.fnDepose = &__on_scene_gas_gauge_depose,
},
.bUserAllocated = bUserAllocated,
};
battery_gasgauge_nixie_tube_init(&this.tBatteryNixieTube);
battery_gasgauge_liquid_init(&this.tBatteryLiquid);
ARM_2D_OP_INIT(this.tBlurOP);
arm_2d_scene_player_append_scenes( ptDispAdapter,
&this.use_as__arm_2d_scene_t,
1);
return ptThis;
}
#if defined(__clang__)
# pragma clang diagnostic pop
#endif
#endif
================================================
FILE: project/mdk/RTE/Acceleration/arm_2d_scene_gas_gauge.h
================================================
/*
* Copyright (c) 2009-2022 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ARM_2D_SCENE_GAS_GAUGE_H__
#define __ARM_2D_SCENE_GAS_GAUGE_H__
/*============================ INCLUDES ======================================*/
#include "arm_2d.h"
#if defined(RTE_Acceleration_Arm_2D_Helper_PFB)
#include "arm_2d_helper_scene.h"
#include "battery_gasgauge.h"
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wpadded"
#elif __IS_COMPILER_ARM_COMPILER_5__
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Wpadded"
#endif
/*============================ MACROS ========================================*/
/* OOC header, please DO NOT modify */
#ifdef __USER_SCENE_GAS_GAUGE_IMPLEMENT__
# undef __USER_SCENE_GAS_GAUGE_IMPLEMENT__
# define __ARM_2D_IMPL__
#endif
#include "arm_2d_utils.h"
/*============================ MACROFIED FUNCTIONS ===========================*/
/*!
* \brief initalize scene4 and add it to a user specified scene player
* \param[in] __DISP_ADAPTER_PTR the target display adatper (i.e. scene player)
* \param[in] ... this is an optional parameter. When it is NULL, a new
* user_scene_gas_gauge_t will be allocated from HEAP and freed on
* the deposing event. When it is non-NULL, the life-cycle is managed
* by user.
* \return user_scene_gas_gauge_t* the user_scene_gas_gauge_t instance
*/
#define arm_2d_scene_gas_gauge_init(__DISP_ADAPTER_PTR, ...) \
__arm_2d_scene_gas_gauge_init((__DISP_ADAPTER_PTR), (NULL, ##__VA_ARGS__))
/*============================ TYPES =========================================*/
/*!
* \brief a user class for scene 4
*/
typedef struct user_scene_gas_gauge_t user_scene_gas_gauge_t;
struct user_scene_gas_gauge_t {
implement(arm_2d_scene_t); //! derived from class: arm_2d_scene_t
ARM_PRIVATE(
/* place your private member here, following two are examples */
int64_t lTimestamp[3];
bool bUserAllocated;
uint16_t hwGasgauge;
battery_nixie_tube_t tBatteryNixieTube;
battery_liquid_t tBatteryLiquid;
battery_status_t tStatus;
uint8_t chBlurDegree;
arm_2d_filter_iir_blur_descriptor_t tBlurOP;
)
/* place your public member here */
};
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ PROTOTYPES ====================================*/
ARM_NONNULL(1)
extern
user_scene_gas_gauge_t *__arm_2d_scene_gas_gauge_init( arm_2d_scene_player_t *ptDispAdapter,
user_scene_gas_gauge_t *ptScene);
#if defined(__clang__)
# pragma clang diagnostic pop
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif
================================================
FILE: project/mdk/RTE/Acceleration/ttf2c.py
================================================
#!/usr/bin/python
# -*- coding: utf-8 -*-
# *************************************************************************************************
# Arm 2D project
# @file ttf2c.py
# @brief TrueTypeFont to C-array converter
#
# *************************************************************************************************
#
# * Copyright (C) 2025 ARM Limited or its affiliates. All rights reserved.
# *
# * SPDX-License-Identifier: Apache-2.0
# *
# * Licensed under the Apache License, Version 2.0 (the License); you may
# * not use this file except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * www.apache.org/licenses/LICENSE-2.0
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an AS IS BASIS, WITHOUT
# * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# */
import os
import sys
import argparse
import freetype
import numpy as np
import math
import binascii
import tempfile
c_head_string="""
/* generated with ttf2c.py (v2.4.0) */
#include "arm_2d_helper.h"
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-variable-declarations"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wgnu-variable-sized-type-not-at-end"
# pragma clang diagnostic ignored "-Wimplicit-int-conversion"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wincompatible-pointer-types-discards-qualifiers"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wunused-parameter"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic ignored "-Wsign-conversion"
#elif defined(__IS_COMPILER_GCC__)
# pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
# pragma GCC diagnostic ignored "-Wunused-variable"
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_suppress=1296,1,64,177
#endif
typedef struct {
uint16_t hwIndex;
arm_2d_size_t tCharSize;
int16_t iAdvance;
int16_t iBearingX;
int16_t iBearingY;
uint8_t chCodeLength;
uint8_t chUTF8[4];
} const __ttf_char_descriptor_t;
"""
c_body_string="""
ARM_SECTION(\"arm2d.tile.c_tileUTF8{0}A{5}Mask\")
static const arm_2d_tile_t c_tileUTF8{0}A{5}Mask = {{
.tRegion = {{
.tSize = {{
.iWidth = {1},
.iHeight = {4},
}},
}},
.tInfo = {{
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {{
.chScheme = ARM_2D_COLOUR_{5}BIT,
}},
}},
.pchBuffer = (uint8_t *)c_bmpUTF8{0}A{5}Font,
}};
#define __UTF8_FONT_SIZE_{5}__
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a{5}_font_get_char_descriptor)
{{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
ARM_2D_UNUSED(ptThis);
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char =
(__ttf_char_descriptor_t *)&c_tUTF8{0}LookUpTableA{5}[dimof(c_tUTF8{0}LookUpTableA{5})-1];
arm_foreach(__ttf_char_descriptor_t, c_tUTF8{0}LookUpTableA{5}, ptChar) {{
if (0 == strncmp( (char *)pchCharCode,
(char *)ptChar->chUTF8,
ptChar->chCodeLength)) {{
/* found the UTF8 char */
ptUTF8Char = ptChar;
break;
}}
}}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}}
ARM_SECTION(\"arm2d.asset.FONT.ARM_2D_FONT_{0}_A{5}\")
const
struct {{
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
}} ARM_2D_FONT_{0}_A{5} = {{
.use_as__arm_2d_user_font_t = {{
.use_as__arm_2d_font_t = {{
.tileFont = impl_child_tile(
c_tileUTF8{0}A{5}Mask,
0, /* x offset */
0, /* y offset */
{1}, /* width */
{4} /* height */
),
.tCharSize = {{
.iWidth = {1},
.iHeight = {2},
}},
.nCount = {3}, //!< Character count
.fnGetCharDescriptor = &__utf8_a{5}_font_get_char_descriptor,
.fnDrawChar = &__arm_2d_lcd_text_default_a{5}_font_draw_char,
}},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
}},
.tUTF8Table = {{
.hwCount = {3},
.hwOffset = 0,
}},
}};
#undef __UTF8_FONT_SIZE_{5}__
"""
c_body_string_ascii="""
ARM_SECTION(\"arm2d.tile.c_tileUTF8{0}A{5}Mask\")
static const arm_2d_tile_t c_tileUTF8{0}A{5}Mask = {{
.tRegion = {{
.tSize = {{
.iWidth = {1},
.iHeight = {4},
}},
}},
.tInfo = {{
.bIsRoot = true,
.bHasEnforcedColour = true,
.tColourInfo = {{
.chScheme = ARM_2D_COLOUR_{5}BIT,
}},
}},
.pchBuffer = (uint8_t *)c_bmpUTF8{0}A{5}Font,
}};
#define __UTF8_FONT_SIZE_{5}__
static
IMPL_FONT_GET_CHAR_DESCRIPTOR(__utf8_a{5}_font_get_char_descriptor)
{{
assert(NULL != ptFont);
assert(NULL != ptDescriptor);
assert(NULL != pchCharCode);
arm_2d_user_font_t *ptThis = (arm_2d_user_font_t *)ptFont;
ARM_2D_UNUSED(ptThis);
memset(ptDescriptor, 0, sizeof(arm_2d_char_descriptor_t));
ptDescriptor->tileChar.ptParent = (arm_2d_tile_t *)&ptFont->tileFont;
ptDescriptor->tileChar.tInfo.bDerivedResource = true;
/* use the white space as the default char */
__ttf_char_descriptor_t *ptUTF8Char = NULL;
if (pchCharCode[0] > 0x20 && pchCharCode[0] <= 0x7e) {{
ptUTF8Char = (__ttf_char_descriptor_t *)
&c_tUTF8{0}LookUpTableA{5}[
pchCharCode[0] - c_tUTF8{0}LookUpTableA{5}[0].chUTF8[0]];
}} else {{
/* use the white space as the default char */
ptUTF8Char = (__ttf_char_descriptor_t *)
&c_tUTF8{0}LookUpTableA{5}[dimof(c_tUTF8{0}LookUpTableA{5})-1];
}}
ptDescriptor->chCodeLength = ptUTF8Char->chCodeLength;
ptDescriptor->tileChar.tRegion.tSize = ptUTF8Char->tCharSize;
ptDescriptor->tileChar.tRegion.tLocation.iY = (int16_t)ptUTF8Char->hwIndex;
ptDescriptor->iAdvance = ptUTF8Char->iAdvance;
ptDescriptor->iBearingX= ptUTF8Char->iBearingX;
ptDescriptor->iBearingY= ptUTF8Char->iBearingY;
return ptDescriptor;
}}
ARM_SECTION(\"arm2d.asset.FONT.ARM_2D_FONT_{0}_A{5}\")
const
struct {{
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
}} ARM_2D_FONT_{0}_A{5} = {{
.use_as__arm_2d_user_font_t = {{
.use_as__arm_2d_font_t = {{
.tileFont = impl_child_tile(
c_tileUTF8{0}A{5}Mask,
0, /* x offset */
0, /* y offset */
{1}, /* width */
{4} /* height */
),
.tCharSize = {{
.iWidth = {1},
.iHeight = {2},
}},
.nCount = {3}, //!< Character count
.fnGetCharDescriptor = &__utf8_a{5}_font_get_char_descriptor,
.fnDrawChar = &__arm_2d_lcd_text_default_a{5}_font_draw_char,
}},
.hwCount = 1,
.hwDefaultCharIndex = 1, /* tBlank */
}},
.tUTF8Table = {{
.hwCount = {3},
.hwOffset = 0,
}},
}};
#undef __UTF8_FONT_SIZE_{5}__
"""
c_tail_string="""
#if defined(__clang__)
# pragma clang diagnostic pop
#elif defined(__IS_COMPILER_ARM_COMPILER_5__)
# pragma diag_warning=1296
#endif
"""
def generate_glyphs_data(input_file, text, pixel_size, font_bit_size, font_index):
face = freetype.Face(input_file, index=font_index)
face.set_pixel_sizes(0, pixel_size)
glyphs_data = []
current_index = 0
width_max = 0
height_max = 0
for char in set(text):
# Get the glyph bitmap
face.load_char(char)
bitmap = face.glyph.bitmap
utf8_encoding = char.encode('utf-8')
if len(bitmap.buffer) == 0:
continue
if list(utf8_encoding) == [0xef, 0xbb, 0xbf]:
continue
width_max = max(bitmap.width, width_max)
height_max = max(bitmap.rows, height_max)
width_max += 2
height_max += 2
for char in sorted(set(text)):
face.load_char(char)
bitmap = face.glyph.bitmap
utf8_encoding = char.encode('utf-8')
if len(bitmap.buffer) == 0:
continue
if list(utf8_encoding) == [0xef, 0xbb, 0xbf]:
continue
advance_width = math.ceil(face.glyph.advance.x / 64.0)
bearing_x = face.glyph.bitmap_left
bearing_y = face.glyph.bitmap_top
width = bitmap.width
height = bitmap.rows
pitch = bitmap.pitch
if bitmap.pixel_mode == freetype.FT_PIXEL_MODE_MONO:
buffer = np.frombuffer(bytes(bitmap.buffer), dtype=np.uint8)
bits_per_row = pitch * 8
bitmap_array = np.unpackbits(buffer).reshape((height, bits_per_row))[:, :width]
bitmap_array = bitmap_array.astype(np.uint8) * 255
elif bitmap.pixel_mode == freetype.FT_PIXEL_MODE_GRAY2:
buffer = np.frombuffer(bytes(bitmap.buffer), dtype=np.uint8)
bits_per_row = pitch * 4
bitmap_array = np.unpackbits(buffer).reshape((height, bits_per_row))[:, :width * 2]
bitmap_array = (bitmap_array.reshape((height, width * 2)) * 85).astype(np.uint8)
elif bitmap.pixel_mode == freetype.FT_PIXEL_MODE_GRAY4:
buffer = np.frombuffer(bytes(bitmap.buffer), dtype=np.uint8)
bits_per_row = pitch * 2
bitmap_array = np.unpackbits(buffer).reshape((height, bits_per_row))[:, :width * 4]
bitmap_array = (bitmap_array.reshape((height, width * 2)) * 17).astype(np.uint8)
elif bitmap.pixel_mode == freetype.FT_PIXEL_MODE_GRAY:
bitmap_array = np.array(bitmap.buffer, dtype=np.uint8).reshape((height, width))
else:
raise ValueError(f"Unsupported pixel mode: {bitmap.pixel_mode}")
continue
if width < width_max:
if (width_max - width) > 1:
padding = ((0, 0), (1, width_max - width - 1))
else:
padding = ((0, 0), (0, width_max - width))
bitmap_array = np.pad(bitmap_array, padding, 'constant')
padding = ((1, 1), (0, 0))
bitmap_array = np.pad(bitmap_array, padding, 'constant')
height += 2
char_index_advance = len(bitmap_array.flatten());
if font_bit_size == 4:
def RevBitQuadPerByte(byteArr):
return ((byteArr & 0x0f) << 4) | ((byteArr & 0xf0) >> 4)
# temporary array with 2x reduced width & pad
(r, c) = np.shape(bitmap_array)
tmp = np.empty((0, int((c+1)/2)), dtype=np.uint8)
for cur in bitmap_array:
bitsArr = np.unpackbits(cur.astype(np.uint8))
# generate indexes for MSB bit quadruplet every byte
idx = np.arange(0, np.size(bitsArr), 8)
idx = np.reshape(np.column_stack(
(np.column_stack((idx+0, idx+1)), np.column_stack((idx+2, idx+3)))),
(1,-1)),
# extraction + endianness conversion appended in temp array
# packbits is taking care of padding
tmp = np.vstack([tmp, RevBitQuadPerByte(np.packbits(bitsArr[idx]))])
bitmap_array = tmp
elif font_bit_size == 2:
def RevBitPairPerByte(byteArr):
return ((byteArr & 0x03) << 6) | ((byteArr & 0xc0) >> 6) | ((byteArr & 0x30) >> 2 ) | ((byteArr & 0x0c) << 2)
# temporary array with 4x reduced width & pad
(r, c) = np.shape(bitmap_array)
tmp = np.empty((0, int((c+3)/4)), dtype=np.uint8)
for cur in bitmap_array:
bitsArr = np.unpackbits(cur.astype(np.uint8))
# generate indexes for MSB bit pair every byte
idx = np.arange(0, np.size(bitsArr), 8)
idx = np.reshape(np.column_stack((idx+0, idx+1)), (1,-1))
# extraction + endianness conversion appended in temp array
tmp = np.vstack([tmp, RevBitPairPerByte(np.packbits(bitsArr[idx]))])
bitmap_array = tmp
elif font_bit_size == 1:
def RevBitPerByte(byteArr):
return ((byteArr & 0x01) << 7) | ((byteArr & 0x80) >> 7) | \
((byteArr & 0x02) << 5) | ((byteArr & 0x40) >> 5) | \
((byteArr & 0x04) << 3) | ((byteArr & 0x20) >> 3) | \
((byteArr & 0x08) << 1) | ((byteArr & 0x10) >> 1)
# temporary array with 8x reduced width & pad
(r, c) = np.shape(bitmap_array)
tmp = np.empty((0, int((c+7)/8)), dtype=np.uint8)
for cur in bitmap_array:
bitsArr = np.unpackbits(cur.astype(np.uint8))
# generate indexes for MSB bit every byte
idx = np.arange(0, np.size(bitsArr), 8)
# extraction + endianness conversion
tmp = np.vstack([tmp, RevBitPerByte(np.packbits(bitsArr[idx]))])
bitmap_array = tmp
char_mask_array = bitmap_array.flatten()
glyphs_data.append((char, char_mask_array, width + 2, height, current_index, advance_width, bearing_x, bearing_y, utf8_encoding))
current_index += char_index_advance
return glyphs_data, width_max, height_max
def utf8_to_c_array(utf8_bytes):
return '{' + ', '.join([f'0x{byte:02x}' for byte in utf8_bytes]) + '}'
def write_c_code(glyphs_data, output_file, name, char_max_width, char_max_height, font_bit_size, ascii_mode):
with open(output_file, "a") as f:
print("ARM_SECTION(\"arm2d.asset.FONT.c_bmpUTF8{0}A{1}Font\")\nconst uint8_t c_bmpUTF8{0}A{1}Font[] = {{\n"
.format(name, font_bit_size),
file=f)
for char, data, width, height, index, advance_width, bearing_x, bearing_y, utf8_encoding in glyphs_data:
utf8_c_array = utf8_to_c_array(utf8_encoding)
f.write(f"\n // Glyph for character {utf8_c_array}\n")
hex_str = binascii.hexlify(data).decode()
for i in range(0, len(hex_str), char_max_width*2):
line = hex_str[i:i+char_max_width*2]
spaced_line = ' '.join(f"0x{line[j:j+2]}," for j in range(0, len(line), 2))
f.write(" ");
f.write(spaced_line)
f.write("\n");
f.write(" // a white space\n ");
f.write("0x00, " * (char_max_width * char_max_height))
f.write("\n};\n\n")
print("ARM_SECTION(\"arm2d.asset.FONT.c_tUTF8{0}LookUpTableA{1}\")\n const __ttf_char_descriptor_t c_tUTF8{0}LookUpTableA{1}[{2}] = {{\n"
.format(name, font_bit_size, len(glyphs_data) + 1), file=f)
last_index = 0;
last_advance = 0;
last_height = 0;
for char, data, width, height, index, advance_width, bearing_x, bearing_y, utf8_encoding in glyphs_data:
utf8_c_array = utf8_to_c_array(utf8_encoding)
last_index = index
last_advance = advance_width
last_height = height;
f.write(f" {{ {round(index / char_max_width)}, {{ {width}, {height}, }}, {advance_width}, {bearing_x}, {bearing_y}, {len(utf8_encoding)}, {utf8_c_array} }},\n")
last_index += char_max_width * last_height
f.write(f" {{ {round(last_index / char_max_width)}, {{ {char_max_width}, {char_max_height}, }}, {round(char_max_width / 2)}, {0}, {char_max_height}, 1, {{0x20}} }},\n")
last_index += char_max_width * char_max_height
f.write("};\n")
if ascii_mode == True:
print(c_body_string_ascii.format( name,
char_max_width,
char_max_height,
len(glyphs_data),
round(last_index / char_max_width)+1,
font_bit_size), file=f)
else:
print(c_body_string.format( name,
char_max_width,
char_max_height,
len(glyphs_data),
round(last_index / char_max_width)+1,
font_bit_size), file=f)
def main():
parser = argparse.ArgumentParser(description='TrueTypeFont to C array converter (v2.4.0)')
parser.add_argument("-i", "--input", type=str, help="Path to the TTF file", required=True)
parser.add_argument("--index", type=int, help="The Font Index in a TTC file", required=False, default=0)
parser.add_argument("-t", "--text", type=str, help="Path to the text file", required=False)
parser.add_argument("-n", "--name", type=str, help="The customized UTF8 font name", required=False, default="UTF8")
parser.add_argument("-o", "--output", type=str, help="Path to the output C file", required=True)
parser.add_argument("-p", "--pixelsize",type=int, help="Font size in pixels", required=False, default=32)
parser.add_argument("-s", "--fontbitsize",type=int, help="font bit size (1,2,4,8)", required=False, default=0)
if len(sys.argv)==1:
parser.print_help(sys.stderr)
sys.exit(1)
args = parser.parse_args()
if args.fontbitsize not in [1, 2, 4, 8, 0]:
print(f'Invalid alpha size={args.fontbitsize}')
sys.exit(1)
ascii_mode = False
if args.text == None or args.text == "" :
ascii_mode = True
fd, args.text = tempfile.mkstemp()
with os.fdopen(fd, 'w') as temptextfile:
print("!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~", file=temptextfile, end='')
with open(args.output, "w") as outputfile:
print(c_head_string, file=outputfile)
if args.fontbitsize in [1, 2, 4, 8]:
with open(args.text, 'r', encoding='utf-8') as f:
text = f.read()
glyphs_data, char_max_width, char_max_height = generate_glyphs_data(args.input, text, args.pixelsize, args.fontbitsize, args.index)
write_c_code(glyphs_data, args.output, args.name, char_max_width, char_max_height, args.fontbitsize, ascii_mode)
else:
with open(args.text, 'r', encoding='utf-8') as f:
text = f.read()
glyphs_data, char_max_width, char_max_height = generate_glyphs_data(args.input, text, args.pixelsize, 1, args.index)
write_c_code(glyphs_data, args.output, args.name, char_max_width, char_max_height, 1, ascii_mode)
with open(args.text, 'r', encoding='utf-8') as f:
text = f.read()
glyphs_data, char_max_width, char_max_height = generate_glyphs_data(args.input, text, args.pixelsize, 2, args.index)
write_c_code(glyphs_data, args.output, args.name, char_max_width, char_max_height, 2, ascii_mode)
with open(args.text, 'r', encoding='utf-8') as f:
text = f.read()
glyphs_data, char_max_width, char_max_height = generate_glyphs_data(args.input, text, args.pixelsize, 4, args.index)
write_c_code(glyphs_data, args.output, args.name, char_max_width, char_max_height, 4, ascii_mode)
with open(args.text, 'r', encoding='utf-8') as f:
text = f.read()
glyphs_data, char_max_width, char_max_height = generate_glyphs_data(args.input, text, args.pixelsize, 8, args.index)
write_c_code(glyphs_data, args.output, args.name, char_max_width, char_max_height, 8, ascii_mode)
with open(args.output, "a") as outputfile:
print(c_tail_string, file=outputfile)
if __name__ == '__main__':
main()
================================================
FILE: project/mdk/RTE/CMSIS-View/EventRecorderConf.h
================================================
/*
* Copyright (c) 2016-2021 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Name: EventRecorderConf.h
* Purpose: Event Recorder software component configuration options
* Rev.: V1.1.0
*/
//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
// Event Recorder
// Number of Records
// <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024
// <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768
// <65536=>65536
// Configures size of Event Record Buffer (each record is 16 bytes)
// Must be 2^n (min=8, max=65536)
#define EVENT_RECORD_COUNT 128ul
// Time Stamp Source
// <0=> DWT Cycle Counter <1=> SysTick <2=> CMSIS-RTOS2 System Timer
// <3=> User Timer (Normal Reset) <4=> User Timer (Power-On Reset)
// Selects source for 32-bit time stamp
#define EVENT_TIMESTAMP_SOURCE 3
// Time Stamp Clock Frequency [Hz] <0-1000000000>
// Defines initial time stamp clock frequency (0 when not used)
#define EVENT_TIMESTAMP_FREQ 0U
//
//------------- <<< end of configuration section >>> ---------------------------
================================================
FILE: project/mdk/RTE/Compiler/EventRecorderConf.h
================================================
/*------------------------------------------------------------------------------
* MDK - Component ::Event Recorder
* Copyright (c) 2016-2018 ARM Germany GmbH. All rights reserved.
*------------------------------------------------------------------------------
* Name: EventRecorderConf.h
* Purpose: Event Recorder Configuration
* Rev.: V1.1.0
*----------------------------------------------------------------------------*/
//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
// Event Recorder
// Number of Records
// <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024
// <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768
// <65536=>65536
// Configures size of Event Record Buffer (each record is 16 bytes)
// Must be 2^n (min=8, max=65536)
#define EVENT_RECORD_COUNT 64U
// Time Stamp Source
// <0=> DWT Cycle Counter <1=> SysTick <2=> CMSIS-RTOS2 System Timer
// <3=> User Timer (Normal Reset) <4=> User Timer (Power-On Reset)
// Selects source for 32-bit time stamp
#define EVENT_TIMESTAMP_SOURCE 3
// Time Stamp Clock Frequency [Hz] <0-1000000000>
// Defines initial time stamp clock frequency (0 when not used)
#define EVENT_TIMESTAMP_FREQ 0
//
//------------- <<< end of configuration section >>> ---------------------------
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/env_wrapper.h
================================================
/****************************************************************************
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* *
****************************************************************************/
/*============================ INCLUDES ======================================*/
#include "cmsis_compiler.h"
/*============================ MACROS ========================================*/
/*============================ MACROFIED FUNCTIONS ===========================*/
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ LOCAL VARIABLES ===============================*/
/*============================ PROTOTYPES ====================================*/
/*============================ IMPLEMENTATION ================================*/
#if defined(__clang__)
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wmacro-redefined"
#endif
#ifndef __ENV_WRAPPER_H__
# define __ENV_WRAPPER_H__ 1
#include
#include
#include
#include "cmsis_compiler.h"
//! \name The macros to identify the compiler
//! @{
//! \note for IAR
#ifdef __IS_COMPILER_IAR__
# undef __IS_COMPILER_IAR__
#endif
#if defined(__IAR_SYSTEMS_ICC__)
# define __IS_COMPILER_IAR__ 1
#endif
//! \note for arm compiler 5
#ifdef __IS_COMPILER_ARM_COMPILER_5__
# undef __IS_COMPILER_ARM_COMPILER_5__
#endif
#if ((__ARMCC_VERSION >= 5000000) && (__ARMCC_VERSION < 6000000))
# define __IS_COMPILER_ARM_COMPILER_5__ 1
#endif
//! @}
//! \note for arm compiler 6
#ifdef __IS_COMPILER_ARM_COMPILER_6__
# undef __IS_COMPILER_ARM_COMPILER_6__
#endif
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
# define __IS_COMPILER_ARM_COMPILER_6__ 1
#endif
#ifdef __IS_COMPILER_LLVM__
# undef __IS_COMPILER_LLVM__
#endif
#if defined(__clang__) && !__IS_COMPILER_ARM_COMPILER_6__
# define __IS_COMPILER_LLVM__ 1
#else
//! \note for gcc
# ifdef __IS_COMPILER_GCC__
# undef __IS_COMPILER_GCC__
# endif
# if defined(__GNUC__) && !( defined(__IS_COMPILER_ARM_COMPILER_5__) \
|| defined(__IS_COMPILER_ARM_COMPILER_6__) \
|| defined(__IS_COMPILER_LLVM__))
# define __IS_COMPILER_GCC__ 1
# endif
//! @}
#endif
//! @}
#if defined(__IS_COMPILER_ARM_COMPILER_6__)
# pragma clang diagnostic ignored "-Wformat-extra-args"
#endif
#ifndef __ASM
#define __ASM __asm
#endif
#if defined(__clang__) || defined(__IS_COMPILER_ARM_COMPILER_5__)
# undef __force_inline
# define __force_inline __attribute__((always_inline))
# undef __always_inline
# define __always_inline __attribute__((always_inline))
# undef __unused
# define __unused __attribute__((unused))
# undef __used
# define __used __USED
# undef __packed_aligned
# define __packed_aligned __attribute__((packed, aligned(4)))
# undef __printflike
# define __printflike(...) __attribute__((format(printf, __VA_ARGS__)))
# undef __noinline
# define __noinline __attribute__((noinline))
#endif
#undef __STRING
# define __STRING(__S) #__S
#undef offsetof
#if defined(__clang__) || defined(__IS_COMPILER_GCC__)
# define offsetof(st, m) __builtin_offsetof(st, m)
#else
# undef static_assert
# define static_assert(...)
# define offsetof(st, m) ((size_t)((char *)&((st *)0)->m - (char *)0))
#endif
typedef unsigned int uint;
#undef UNUSED_PARAM
#define UNUSED_PARAM(__VAR) __VAR = __VAR
#ifndef __CONCAT
# define ____CONCAT(a,b) a##b
# define __CONCAT(a,b) ____CONCAT(a,b)
#endif
///**
// \brief Get Control Register
// \details Returns the content of the Control Register.
// \return Control Register value
// */
//static __force_inline uint32_t __get_current_exception(void)
//{
// uint32_t result;
// __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
// return(result);
//}
#define __unhandled_user_irq Default_Handler
#define __StackOneBottom Image$$ARM_LIB_STACK_ONE$$ZI$$Base
#define __mutex_array_start Image$$ER_MUTEX_ARRAY$$ZI$$Base
#define __mutex_array_end Image$$ER_MUTEX_ARRAY$$ZI$$Limit
#define PROGRAM_STATUS_REG
#define PICO_ON_DEVICE 1
#undef __sev
#undef __wfi
#undef __wfe
#undef __dmb
//#undef __dsb
//#undef __isb
#define __sev __builtin_arm_sev
#define __wfi __builtin_arm_wfi
#define __wfe __builtin_arm_wfe
#ifndef __PLOOC_VA_NUM_ARGS_IMPL
# define __PLOOC_VA_NUM_ARGS_IMPL( _0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11, \
_12,_13,_14,_15,_16,__N,...) __N
#endif
#ifndef __PLOOC_VA_NUM_ARGS
#define __PLOOC_VA_NUM_ARGS(...) \
__PLOOC_VA_NUM_ARGS_IMPL( 0,##__VA_ARGS__,16,15,14,13,12,11,10,9, \
8,7,6,5,4,3,2,1,0)
#endif
#define __dmb0() __builtin_arm_dmb(0xF)
#define __dmb1(__N) __builtin_arm_dmb(__N)
#define __dmb(...) __CONCAT(__dmb, __PLOOC_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__)
//#define __dsb __DSB
//#define __isb __ISB
typedef uint16_t __uint16_t;
#include "pico/platform.h"
#if 0 /* a configuration for over-clocking to 250MHz */
#define PLL_SYS_POSTDIV2 1
#define PLL_SYS_POSTDIV1 6
#define PLL_SYS_VCO_FREQ_KHZ (1500 * KHZ)
#define SYS_CLK_KHZ (250 * KHZ)
#endif
#endif
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/rp2040.dbgconf
================================================
// File: rp2040.dbgconf
// Version: 1.0.0
// Note: refer to rp2040 data sheet
// <<< Use Configuration Wizard in Context Menu >>>
// <<< end of configuration section >>>
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/rp2040.sct
================================================
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0+ -xc
; command above MUST be in first line (no comment above!)
/*
;-------- <<< Use Configuration Wizard in Context Menu >>> -------------------
*/
/*--------------------- Flash Configuration ----------------------------------
; Flash Configuration
; Flash Base Address <0x0-0xFFFFFFFF:8>
; Flash Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
*----------------------------------------------------------------------------*/
#define __ROM_BASE 0x10000000
#define __ROM_SIZE 0x00200000
/*--------------------- Embedded RAM Configuration ---------------------------
; RAM Configuration
; RAM Base Address <0x0-0xFFFFFFFF:8>
; RAM Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
*----------------------------------------------------------------------------*/
#define __RAM_BASE 0x20000000
#define __RAM_SIZE 0x00042000
/*--------------------- Stack / Heap Configuration ---------------------------
; Stack / Heap Configuration
; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
;
*----------------------------------------------------------------------------*/
#define __STACK_SIZE 0x00001000
#define __HEAP_SIZE 0x00001000
/*
;------------- <<< end of configuration section >>> ---------------------------
*/
/*----------------------------------------------------------------------------
User Stack & Heap boundary definition
*----------------------------------------------------------------------------*/
#define __HEAP_BASE (AlignExpr(+0, 8)) /* starts after RW_RAM section, 8 byte aligned */
#define __STACK_ONE_SIZE 512
/*----------------------------------------------------------------------------
Scatter File Definitions definition
*----------------------------------------------------------------------------*/
#define __RO_BASE __ROM_BASE
#define __RO_SIZE __ROM_SIZE
#define __RW_SIZE (__RAM_SIZE - __STACK_SIZE - __HEAP_SIZE)
/*
* Stage two Boot
*/
LR_STAGE2_BOOT __RO_BASE 0x100 {
ER_STAGE2_BOOT +0 0x100 {
compile_time_choice.o (+RO)
}
ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
}
}
/*
* next to stage two boot
*/
LR_ROM +0 __RO_SIZE - 0x100 { ; load region size_region
ER_ROM +0 __RO_SIZE { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
* (+RO-DATA)
* (.flashdata.*)
* (:gdef:Reset_Handler)
* (:gdef:SystemInit)
.ANY (+RO-CODE)
.ANY (+XO)
}
/*
* This is required by pico-sdk
*/
ER_RAM_VECTOR_TABLE __RAM_BASE {
* (.ram_vector_table)
}
/*
* This is required by pico-sdk
*/
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY __STACK_ONE_SIZE {
}
ARM_LIB_STACK +0 ALIGN 8 EMPTY __STACK_SIZE { ; Reserve empty region for stack
}
/*
* This is required by pico-sdk
*/
ER_MUTEX_ARRAY +0 {
* (.mutex_array.*)
* (.mutex_array)
}
RW_RAM +0 { ; RW data
.ANY (.time_critical.*)
.ANY (+RW +ZI)
}
RW_IRAM_NOINIT +0 UNINIT { ; RW data
.ANY (.after_data.*)
.ANY (.bss.noinit)
.ANY (.uninitialized_data.*)
}
#if __HEAP_SIZE > 0
ARM_LIB_HEAP __HEAP_BASE EMPTY __HEAP_SIZE { ; Reserve empty region for heap
}
#endif
/* This empty, zero long execution region is here to mark the limit address
* of the last execution region that is allocated in SRAM.
*/
SRAM_WATERMARK +0 EMPTY 0x0 {
}
/* Make sure that the sections allocated in the SRAM does not exceed the
* size of the SRAM available.
*/
ScatterAssert(ImageLimit(SRAM_WATERMARK) <= __RAM_BASE + __RAM_SIZE)
}
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/rp2040_no_flash.sct
================================================
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
; command above MUST be in first line (no comment above!)
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
#define FLASH_SIZE 0x00200000
#define SRAM_SIZE (1024*248)
#define STACK_0_SIZE (1024*4)
#define STACK_1_SIZE (256)
#define HEAP_0_SIZE (1024*32)
#define HEAP_1_SIZE (256)
#define RAMSIZE_VALID (SRAM_SIZE - \
STACK_1_SIZE - HEAP_1_SIZE - \
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
;LR_STAGE2_BOOT 0x10000000 0x100 {
; ER_STAGE2_BOOT +0 0x100 {
; compile_time_choice.o (+RO)
; }
; ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
; }
;}
LR_IROM1 0x20000000 SRAM_SIZE { ; load region size_region
ER_BINRAY_INFO +0 {
* (:gdef:Reset_Handler) //!< please always make sure that Reset_Handler is placed here.
* (.binary_info_header)
}
ER_RAM_VECTOR_TABLE +0 ALIGN 256 {
* (.ram_vector_table)
}
ER_FLASH +0 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
* (+RO-DATA)
startup_RP2040.o (+RO)
}
ER_MUTEX_ARRAY +0 {
* (.mutex_array.*)
* (.mutex_array)
}
RW_IRAM_CODE +0 {
* (+RO-CODE)
* (+XO)
}
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
}
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
}
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
}
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
}
;ER_PREINIT_ARRAY +0 {
; * (.preinit_array.*)
; * (.preinit_array)
;}
RW_IRAM +0 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM_UNINIT +0 UNINIT {
.ANY (.bss.noinit)
}
}
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/startup_rp2040.c
================================================
/******************************************************************************
* @file startup_rp2040.c
* @brief CMSIS-Core(M) Device Startup File for
* Raspberry Pi RP2040
* @version V1.1.0
* @date 21. Nov 2022
******************************************************************************/
/*
* Copyright (c) 2021 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "rp2040.h"
/*----------------------------------------------------------------------------
External References
*----------------------------------------------------------------------------*/
extern uint32_t __INITIAL_SP;
extern __NO_RETURN void __PROGRAM_START(void);
/*----------------------------------------------------------------------------
Internal References
*----------------------------------------------------------------------------*/
__NO_RETURN void Reset_Handler (void);
void Default_Handler(void);
/*----------------------------------------------------------------------------
Exception / Interrupt Handler
*----------------------------------------------------------------------------*/
/* Exceptions */
void NMI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void HardFault_Handler (void) __attribute__ ((weak));
void SVC_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PendSV_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SysTick_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void TIMER_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void TIMER_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void TIMER_IRQ_2_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void TIMER_IRQ_3_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PWM_IRQ_WRAP_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void USBCTRL_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void XIP_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PIO0_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PIO0_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PIO1_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void PIO1_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void DMA_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void DMA_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void IO_IRQ_BANK0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void IO_IRQ_QSPI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SIO_IRQ_PROC0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SIO_IRQ_PROC1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void CLOCKS_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SPI0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void SPI1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void UART0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void UART1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void ADC_IRQ_FIFO_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void I2C0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void I2C1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
void RTC_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
/*----------------------------------------------------------------------------
Exception / Interrupt Vector table
*----------------------------------------------------------------------------*/
#if defined ( __GNUC__ )
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpedantic"
#endif
extern const VECTOR_TABLE_Type __VECTOR_TABLE[48];
const VECTOR_TABLE_Type __VECTOR_TABLE[48] __VECTOR_TABLE_ATTRIBUTE = {
(VECTOR_TABLE_Type)(&__INITIAL_SP), /* Initial Stack Pointer */
Reset_Handler, /* Reset Handler */
NMI_Handler, /* -14 NMI Handler */
HardFault_Handler, /* -13 Hard Fault Handler */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
0, /* Reserved */
SVC_Handler, /* -5 SVCall Handler */
0, /* Reserved */
0, /* Reserved */
PendSV_Handler, /* -2 PendSV Handler */
SysTick_Handler, /* -1 SysTick Handler */
/* Interrupts */
TIMER_IRQ_0_Handler, /* 0 TIMER_IRQ_0 */
TIMER_IRQ_1_Handler, /* 1 TIMER_IRQ_1 */
TIMER_IRQ_2_Handler, /* 2 TIMER_IRQ_2 */
TIMER_IRQ_3_Handler, /* 3 TIMER_IRQ_3 */
PWM_IRQ_WRAP_Handler, /* 4 PWM_IRQ_WRAP */
USBCTRL_IRQ_Handler, /* 5 USBCTRL_IRQ */
XIP_IRQ_Handler, /* 6 XIP_IRQ */
PIO0_IRQ_0_Handler, /* 7 PIO0_IRQ_0 */
PIO0_IRQ_1_Handler, /* 8 PIO0_IRQ_1 */
PIO1_IRQ_0_Handler, /* 9 PIO1_IRQ_0 */
PIO1_IRQ_1_Handler, /* 10 PIO1_IRQ_1 */
DMA_IRQ_0_Handler, /* 11 DMA_IRQ_0 */
DMA_IRQ_1_Handler, /* 12 DMA_IRQ_1 */
IO_IRQ_BANK0_Handler, /* 13 IO_IRQ_BANK0 */
IO_IRQ_QSPI_Handler, /* 14 IO_IRQ_QSPI */
SIO_IRQ_PROC0_Handler, /* 15 SIO_IRQ_PROC0 */
SIO_IRQ_PROC1_Handler, /* 16 SIO_IRQ_PROC1 */
CLOCKS_IRQ_Handler, /* 17 CLOCKS_IRQ */
SPI0_IRQ_Handler, /* 18 SPI0_IRQ */
SPI1_IRQ_Handler, /* 19 SPI1_IRQ */
UART0_IRQ_Handler, /* 20 UART0_IRQ */
UART1_IRQ_Handler, /* 21 UART1_IRQ */
ADC_IRQ_FIFO_Handler, /* 22 ADC_IRQ_FIFO */
I2C0_IRQ_Handler, /* 23 I2C0_IRQ */
I2C1_IRQ_Handler, /* 24 I2C1_IRQ */
RTC_IRQ_Handler /* 25 RTC_IRQ */
};
#if defined ( __GNUC__ )
#pragma GCC diagnostic pop
#endif
/*----------------------------------------------------------------------------
Reset Handler called on controller reset
*----------------------------------------------------------------------------*/
__NO_RETURN __USED void Reset_Handler(void)
{
__set_MSP((uintptr_t)(&__INITIAL_SP));
SystemInit(); /* CMSIS System Initialization */
__PROGRAM_START(); /* Enter PreMain (C library entry point) */
}
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmissing-noreturn"
#endif
/*----------------------------------------------------------------------------
Hard Fault Handler
*----------------------------------------------------------------------------*/
void HardFault_Handler(void)
{
while(1);
}
/*----------------------------------------------------------------------------
Default Handler for Exceptions / Interrupts
*----------------------------------------------------------------------------*/
void Default_Handler(void)
{
while(1);
}
/* a non-intrusive way of keep the _stage2_boot */
extern
void _stage2_boot(void);
__attribute__((used))
void __keep_stage2_boot(void)
{
_stage2_boot();
while(1) __NOP();
}
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
#pragma clang diagnostic pop
#endif
================================================
FILE: project/mdk/RTE/Device/RP2040_Core0/system_rp2040.c
================================================
/*************************************************************************//**
* @file system_RP2040.c
* @brief CMSIS-Core(M) Device Peripheral Access Layer Header File for
* Device RP2040
* @version V1.1.0
* @date 21. Nov 2023
*****************************************************************************/
/*
* Copyright (c) 2009-2021 Arm Limited. All rights reserved.
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include
#include "rp2040.h"
#define XTAL (12000000UL) /* Oscillator frequency */
#define SYSTEM_CLOCK (XTAL / 2U)
/*---------------------------------------------------------------------------
System Core Clock Variable
*---------------------------------------------------------------------------*/
uint32_t SystemCoreClock = SYSTEM_CLOCK; /* System Clock Frequency (Core Clock)*/
/*---------------------------------------------------------------------------
System Core Clock function
*---------------------------------------------------------------------------*/
__WEAK
void SystemCoreClockUpdate (void)
{
SystemCoreClock = SYSTEM_CLOCK;
}
/*---------------------------------------------------------------------------
System initialization function
*---------------------------------------------------------------------------*/
extern const VECTOR_TABLE_Type __VECTOR_TABLE[48];
void SystemInit (void)
{
#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U)
SCB->VTOR = (uint32_t) &(__VECTOR_TABLE);
#endif
SystemCoreClock = SYSTEM_CLOCK;
}
================================================
FILE: project/mdk/RTE/Utilities/core_portme.h
================================================
/*
Copyright 2018 Embedded Microprocessor Benchmark Consortium (EEMBC)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Original Author: Shay Gal-on
*/
/* Topic : Description
This file contains configuration constants required to execute on
different platforms
*/
#ifndef CORE_PORTME_H
#define CORE_PORTME_H
#include "perf_counter.h"
#if defined(__clang__)
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wundef"
# pragma clang diagnostic ignored "-Wmissing-variable-declarations"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wstrict-prototypes"
# pragma clang diagnostic ignored "-Wswitch-enum"
#endif
/************************/
/* Data types and settings */
/************************/
/* Configuration : HAS_FLOAT
Define to 1 if the platform supports floating point.
*/
#ifndef HAS_FLOAT
#define HAS_FLOAT 1
#endif
/* Configuration : HAS_TIME_H
Define to 1 if platform has the time.h header file,
and implementation of functions thereof.
*/
#ifndef HAS_TIME_H
#define HAS_TIME_H 1
#endif
/* Configuration : USE_CLOCK
Define to 1 if platform has the time.h header file,
and implementation of functions thereof.
*/
#ifndef USE_CLOCK
#define USE_CLOCK 1
#endif
/* Configuration : HAS_STDIO
Define to 1 if the platform has stdio.h.
*/
#ifndef HAS_STDIO
#define HAS_STDIO 1
#endif
/* Configuration : HAS_PRINTF
Define to 1 if the platform has stdio.h and implements the printf
function.
*/
#ifndef HAS_PRINTF
#define HAS_PRINTF 1
#endif
/* Configuration : CORE_TICKS
Define type of return from the timing functions.
*/
typedef int64_t CORE_TICKS;
/* Definitions : COMPILER_VERSION, COMPILER_FLAGS, MEM_LOCATION
Initialize these strings per platform
*/
#ifndef COMPILER_VERSION
#if __IS_COMPILER_ARM_COMPILER_6__
#define COMPILER_VERSION "Arm Compiler 6"
#elif __IS_COMPILER_ARM_COMPILER_5__
#define COMPILER_VERSION "Arm Compiler 5"
#elif __IS_COMPILER_LLVM__
#define COMPILER_VERSION __VERSION__
#elif __IS_COMPILER_IAR__
#define COMPILER_VERSION "IAR"
#elif __IS_COMPILER_GCC__
#define COMPILER_VERSION "GCC"__VERSION__
#else
#define COMPILER_VERSION "Please put compiler version here (e.g. gcc 4.1)"
#endif
#endif
#ifndef COMPILER_FLAGS
#define COMPILER_FLAGS \
"Unspecified" /* "Please put compiler flags here (e.g. -o3)" */
#endif
/* Data Types :
To avoid compiler issues, define the data types that need ot be used for
8b, 16b and 32b in .
*Imprtant* :
ee_ptr_int needs to be the data type used to hold pointers, otherwise
coremark may fail!!!
*/
typedef signed short ee_s16;
typedef unsigned short ee_u16;
typedef signed int ee_s32;
typedef double ee_f32;
typedef unsigned char ee_u8;
typedef unsigned int ee_u32;
typedef ee_u32 ee_ptr_int;
typedef size_t ee_size_t;
/* align_mem :
This macro is used to align an offset to point to a 32b value. It is
used in the Matrix algorithm to initialize the input memory blocks.
*/
#define align_mem(x) (void *)(4 + (((ee_ptr_int)(x)-1) & ~3))
/* Configuration : SEED_METHOD
Defines method to get seed values that cannot be computed at compile
time.
Valid values :
SEED_ARG - from command line.
SEED_FUNC - from a system function.
SEED_VOLATILE - from volatile variables.
*/
#ifndef SEED_METHOD
#define SEED_METHOD SEED_VOLATILE
#endif
/* Configuration : MEM_METHOD
Defines method to get a block of memry.
Valid values :
MEM_MALLOC - for platforms that implement malloc and have malloc.h.
MEM_STATIC - to use a static memory array.
MEM_STACK - to allocate the data block on the stack (NYI).
*/
#ifndef MEM_METHOD
#define MEM_METHOD MEM_STACK
#endif
#undef MEM_LOCATION
#if MEM_METHOD == MEM_MALLOC
# define MEM_LOCATION "MALLOC"
#elif MEM_METHOD == MEM_STATIC
# define MEM_LOCATION "STATIC"
#elif MEM_METHOD == MEM_STACK
# define MEM_LOCATION "STACK"
#endif
/* Configuration : MULTITHREAD
Define for parallel execution
Valid values :
1 - only one context (default).
N>1 - will execute N copies in parallel.
Note :
If this flag is defined to more then 1, an implementation for launching
parallel contexts must be defined.
Two sample implementations are provided. Use or
to enable them.
It is valid to have a different implementation of
and in , to fit a particular architecture.
*/
#ifndef MULTITHREAD
#define MULTITHREAD 1
#define USE_PTHREAD 0
#define USE_FORK 0
#define USE_SOCKET 0
#endif
/* Configuration : MAIN_HAS_NOARGC
Needed if platform does not support getting arguments to main.
Valid values :
0 - argc/argv to main is supported
1 - argc/argv to main is not supported
Note :
This flag only matters if MULTITHREAD has been defined to a value
greater then 1.
*/
#ifndef MAIN_HAS_NOARGC
#define MAIN_HAS_NOARGC 0
#endif
/* Configuration : MAIN_HAS_NORETURN
Needed if platform does not support returning a value from main.
Valid values :
0 - main returns an int, and return value will be 0.
1 - platform does not support returning a value from main
*/
#ifndef MAIN_HAS_NORETURN
#define MAIN_HAS_NORETURN 0
#endif
#ifndef ITERATIONS
#define ITERATIONS 3000
#endif
/* Variable : default_num_contexts
Not used for this simple port, must contain the value 1.
*/
extern ee_u32 default_num_contexts;
typedef struct CORE_PORTABLE_S
{
ee_u8 portable_id;
} core_portable;
void coremark_main(void);
/* target specific init/fini */
void portable_init(core_portable *p, int *argc, char *argv[]);
void portable_fini(core_portable *p);
#if !defined(PROFILE_RUN) && !defined(PERFORMANCE_RUN) \
&& !defined(VALIDATION_RUN)
#if (TOTAL_DATA_SIZE == 1200)
#define PROFILE_RUN 1
#elif (TOTAL_DATA_SIZE == 2000)
#define PERFORMANCE_RUN 1
#else
#define VALIDATION_RUN 1
#endif
#endif
#endif /* CORE_PORTME_H */
================================================
FILE: project/mdk/arm_2d_scene_bubble_charging.c
================================================
/*
* Copyright (c) 2009-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*============================ INCLUDES ======================================*/
#if defined(_RTE_)
# include "RTE_Components.h"
#endif
#if defined(RTE_Acceleration_Arm_2D_Helper_PFB)
#include "arm_2d.h"
#define __USER_SCENE_BUBBLE_CHARGING_IMPLEMENT__
#include "arm_2d_scene_bubble_charging.h"
#include "arm_2d_helper.h"
#include "arm_2d_example_controls.h"
#include
#include
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wsign-conversion"
# pragma clang diagnostic ignored "-Wpadded"
# pragma clang diagnostic ignored "-Wcast-qual"
# pragma clang diagnostic ignored "-Wcast-align"
# pragma clang diagnostic ignored "-Wmissing-field-initializers"
# pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
# pragma clang diagnostic ignored "-Wmissing-prototypes"
# pragma clang diagnostic ignored "-Wunused-variable"
# pragma clang diagnostic ignored "-Wgnu-statement-expression"
# pragma clang diagnostic ignored "-Wdeclaration-after-statement"
# pragma clang diagnostic ignored "-Wunused-function"
# pragma clang diagnostic ignored "-Wmissing-declarations"
#elif __IS_COMPILER_ARM_COMPILER_5__
# pragma diag_suppress 64,177
#elif __IS_COMPILER_IAR__
# pragma diag_suppress=Pa089,Pe188,Pe177,Pe174
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Wunused-function"
# pragma GCC diagnostic ignored "-Wunused-variable"
# pragma GCC diagnostic ignored "-Wincompatible-pointer-types"
#endif
/*============================ MACROS ========================================*/
#if __GLCD_CFG_COLOUR_DEPTH__ == 8
# define c_tileCMSISLogo c_tileCMSISLogoGRAY8
#elif __GLCD_CFG_COLOUR_DEPTH__ == 16
# define c_tileCMSISLogo c_tileCMSISLogoRGB565
#elif __GLCD_CFG_COLOUR_DEPTH__ == 32
# define c_tileCMSISLogo c_tileCMSISLogoCCCA8888
#else
# error Unsupported colour depth!
#endif
/*============================ MACROFIED FUNCTIONS ===========================*/
#undef this
#define this (*ptThis)
/*============================ TYPES =========================================*/
/*============================ GLOBAL VARIABLES ==============================*/
extern const arm_2d_tile_t c_tileCMSISLogo;
extern const arm_2d_tile_t c_tileCMSISLogoMask;
extern const arm_2d_tile_t c_tileCMSISLogoA2Mask;
extern const arm_2d_tile_t c_tileCMSISLogoA4Mask;
extern const arm_2d_tile_t c_tileQuaterArcMask;
extern const arm_2d_tile_t c_tileBigWhiteDotMask;
extern const arm_2d_tile_t c_tileWhiteDotMiddleMask;
extern const arm_2d_tile_t c_tileRadialGradientMask;
extern const arm_2d_tile_t c_tileGlassBallMask;
extern const arm_2d_tile_t c_tileHallowOutCircleMask;
extern const arm_2d_tile_t c_tileSinWaveMask;
/*============================ PROTOTYPES ====================================*/
extern
struct {
implement(arm_2d_user_font_t);
arm_2d_char_idx_t tUTF8Table;
} ARM_2D_FONT_ALARM_CLOCK_32_A4;
/*============================ LOCAL VARIABLES ===============================*/
static arm_2d_size_t c_tChargingArea = {0};
static const arm_2d_tile_t *s_ptileQuaterArcMask = &c_tileQuaterArcMask;
/*============================ IMPLEMENTATION ================================*/
static void __on_scene_bubble_charging_load(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_bubble_charging_depose(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
ptScene->ptPlayer = NULL;
arm_foreach(int64_t,this.lTimestamp, ptItem) {
*ptItem = 0;
}
dynamic_nebula_depose(&this.tNebula);
ARM_2D_OP_DEPOSE(this.tBlurOP);
if (!this.bUserAllocated) {
__arm_2d_free_scratch_memory(ARM_2D_MEM_TYPE_UNSPECIFIED, ptScene);
}
}
/*----------------------------------------------------------------------------*
* Scene bubble_charging *
*----------------------------------------------------------------------------*/
static void __on_scene_bubble_charging_background_start(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_bubble_charging_background_complete(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static void __on_scene_bubble_charging_frame_start(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
int32_t nResult;
do {
/* simulate a full battery charging/discharge cycle */
arm_2d_helper_time_cos_slider(0, 1000, 120000, 0, &nResult, &this.lTimestamp[1]);
this.iSoC = nResult;
} while(0);
if (arm_2d_helper_is_time_out(10, &this.lTimestamp[2])) {
if (this.iWaveOffset++ >= c_tileSinWaveMask.tRegion.tSize.iWidth) {
this.iWaveOffset = 0;
}
}
}
static void __on_scene_bubble_charging_frame_complete(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
// /* switch to next scene after 30s */
// if (arm_2d_helper_is_time_out(30000, &this.lTimestamp[0])) {
// arm_2d_scene_player_switch_to_next_scene(ptScene->ptPlayer);
// }
arm_2d_scratch_memory_free(&this.tBlurOP.tScratchMemory);
}
static void __before_scene_bubble_charging_switching_out(arm_2d_scene_t *ptScene)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)ptScene;
ARM_2D_UNUSED(ptThis);
}
static
IMPL_PFB_ON_DRAW(__pfb_draw_scene_bubble_charging_handler)
{
ARM_2D_PARAM(pTarget);
ARM_2D_PARAM(ptTile);
ARM_2D_PARAM(bIsNewFrame);
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)pTarget;
arm_2d_size_t tScreenSize = ptTile->tRegion.tSize;
ARM_2D_UNUSED(tScreenSize);
arm_2d_canvas(ptTile, __charging_canvas) {
/*-----------------------draw the foreground begin-----------------------*/
arm_2d_align_centre(__charging_canvas, c_tileHallowOutCircleMask.tRegion.tSize) {
draw_liquid_wave( ptTile, &
__centre_region,
this.iSoC,
this.iWaveOffset,
(arm_2d_margin_t){0},
GLCD_COLOR_GREEN,
&c_tileSinWaveMask);
arm_2d_fill_colour_with_mask(
ptTile,
&__centre_region,
&c_tileHallowOutCircleMask,
(__arm_2d_color_t) {GLCD_COLOR_BLACK});
ARM_2D_OP_WAIT_ASYNC();
}
/* show nebula */
dynamic_nebula_show(&this.tNebula,
ptTile,
&__charging_canvas,
GLCD_COLOR_WHITE,
255,
bIsNewFrame);
if (bIsNewFrame) {
if (NULL == arm_2d_scratch_memory_new(
&this.tBlurOP.tScratchMemory,
sizeof(__arm_2d_iir_blur_acc_t),
( __charging_canvas.tSize.iHeight
+ __charging_canvas.tSize.iWidth),
__alignof__(__arm_2d_iir_blur_acc_t),
ARM_2D_MEM_TYPE_FAST)) {
assert(false); /* insufficient memory */
}
}
arm_2dp_filter_iir_blur(&this.tBlurOP,
ptTile,
&__charging_canvas,
255 - 16);
arm_2d_align_centre(__charging_canvas, c_tileGlassBallMask.tRegion.tSize) {
arm_2d_fill_colour_with_mask_and_opacity(
ptTile,
&__centre_region,
&c_tileGlassBallMask,
(__arm_2d_color_t) {GLCD_COLOR_WHITE},
255);
}
arm_2d_size_t tStringSize = arm_lcd_get_string_line_box("00", &ARM_2D_FONT_ALARM_CLOCK_32_A4);
arm_2d_align_centre(__charging_canvas, tStringSize) {
arm_lcd_text_set_draw_region(&__centre_region);
arm_lcd_text_set_font((const arm_2d_font_t *)&ARM_2D_FONT_ALARM_CLOCK_32_A4);
arm_lcd_text_set_colour(GLCD_COLOR_WHITE, GLCD_COLOR_BLACK);
arm_lcd_printf("%02d", (this.iSoC / 10));
arm_lcd_text_set_font(NULL);
__centre_region.tLocation.iX += tStringSize.iWidth + 6;
__centre_region.tLocation.iY += tStringSize.iHeight - 8;
arm_lcd_text_set_draw_region(&__centre_region);
arm_lcd_text_set_colour(__RGB(0, 128, 0), GLCD_COLOR_BLACK);
arm_lcd_printf("%%");
}
/*-----------------------draw the foreground end -----------------------*/
}
arm_2d_op_wait_async(NULL);
return arm_fsm_rt_cpl;
}
static
void __draw_bubble_handler( void *pObj,
dynamic_nebula_t *ptDN,
const arm_2d_tile_t *ptTile,
arm_2d_location_t tLocation,
uint8_t chOpacity,
int16_t iDistance)
{
user_scene_bubble_charging_t *ptThis = (user_scene_bubble_charging_t *)pObj;
iDistance -= s_ptileQuaterArcMask->tRegion.tSize.iWidth;
arm_2d_region_t tBubbleRegion = c_tileRadialGradientMask.tRegion;
tBubbleRegion.tLocation.iX = tLocation.iX - c_tileRadialGradientMask.tRegion.tSize.iWidth / 2;
tBubbleRegion.tLocation.iY = tLocation.iY - c_tileRadialGradientMask.tRegion.tSize.iHeight / 2;
uint8_t chOriginalOpacity = 256 - chOpacity;
if (iDistance > 16) {
chOpacity = chOriginalOpacity;
} else {
chOpacity = MIN((iDistance << 4), chOriginalOpacity);
}
arm_2d_fill_colour_with_mask_and_opacity(ptTile,
&tBubbleRegion,
&c_tileRadialGradientMask,
(__arm_2d_color_t){GLCD_COLOR_GREEN},
chOpacity);
}
ARM_NONNULL(1)
user_scene_bubble_charging_t *__arm_2d_scene_bubble_charging_init( arm_2d_scene_player_t *ptDispAdapter,
user_scene_bubble_charging_t *ptThis)
{
bool bUserAllocated = false;
assert(NULL != ptDispAdapter);
c_tChargingArea = s_ptileQuaterArcMask->tRegion.tSize;
c_tChargingArea.iWidth *= 4;
c_tChargingArea.iHeight *= 4;
/* get the screen region */
arm_2d_region_t tScreen
= arm_2d_helper_pfb_get_display_area(
&ptDispAdapter->use_as__arm_2d_helper_pfb_t);
if (NULL == ptThis) {
ptThis = (user_scene_bubble_charging_t *)
__arm_2d_allocate_scratch_memory( sizeof(user_scene_bubble_charging_t),
__alignof__(user_scene_bubble_charging_t),
ARM_2D_MEM_TYPE_UNSPECIFIED);
assert(NULL != ptThis);
if (NULL == ptThis) {
return NULL;
}
} else {
bUserAllocated = true;
}
memset(ptThis, 0, sizeof(user_scene_bubble_charging_t));
*ptThis = (user_scene_bubble_charging_t){
.use_as__arm_2d_scene_t = {
/* the canvas colour */
.tCanvas = {GLCD_COLOR_BLACK},
/* Please uncommon the callbacks if you need them
*/
.fnOnLoad = &__on_scene_bubble_charging_load,
.fnScene = &__pfb_draw_scene_bubble_charging_handler,
//.ptDirtyRegion = (arm_2d_region_list_item_t *)s_tDirtyRegions,
//.fnOnBGStart = &__on_scene_bubble_charging_background_start,
//.fnOnBGComplete = &__on_scene_bubble_charging_background_complete,
.fnOnFrameStart = &__on_scene_bubble_charging_frame_start,
//.fnBeforeSwitchOut = &__before_scene_bubble_charging_switching_out,
.fnOnFrameCPL = &__on_scene_bubble_charging_frame_complete,
.fnDepose = &__on_scene_bubble_charging_depose,
.bUseDirtyRegionHelper = false,
},
.bUserAllocated = bUserAllocated,
};
/* ------------ initialize members of user_scene_bubble_charging_t begin ---------------*/
do {
int16_t iRadius = MIN(tScreen.tSize.iHeight, tScreen.tSize.iWidth) / 2;
dynamic_nebula_cfg_t tCFG = {
.fSpeed = 0.5f,
.iRadius = iRadius,
.iVisibleRingWidth = iRadius - s_ptileQuaterArcMask->tRegion.tSize.iWidth,
.hwParticleCount = dimof(this.tParticles),
.ptParticles = this.tParticles,
.evtOnDrawParticles = {
.fnHandler = &__draw_bubble_handler,
.pTarget = ptThis,
},
};
dynamic_nebula_init(&this.tNebula, &tCFG);
} while(0);
ARM_2D_OP_INIT(this.tBlurOP);
/* ------------ initialize members of user_scene_bubble_charging_t end ---------------*/
arm_2d_scene_player_append_scenes( ptDispAdapter,
&this.use_as__arm_2d_scene_t,
1);
return ptThis;
}
#if defined(__clang__)
# pragma clang diagnostic pop
#endif
#endif
================================================
FILE: project/mdk/arm_2d_scene_bubble_charging.h
================================================
/*
* Copyright (c) 2009-2024 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __ARM_2D_SCENE_BUBBLE_CHARGING_H__
#define __ARM_2D_SCENE_BUBBLE_CHARGING_H__
/*============================ INCLUDES ======================================*/
#if defined(_RTE_)
# include "RTE_Components.h"
#endif
#if defined(RTE_Acceleration_Arm_2D_Helper_PFB)
#include "arm_2d.h"
#include "arm_2d_helper_scene.h"
#include "arm_2d_example_controls.h"
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__clang__)
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wunknown-warning-option"
# pragma clang diagnostic ignored "-Wreserved-identifier"
# pragma clang diagnostic ignored "-Wmissing-declarations"
# pragma clang diagnostic ignored "-Wpadded"
#elif __IS_COMPILER_ARM_COMPILER_5__
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wformat="
# pragma GCC diagnostic ignored "-Wpedantic"
# pragma GCC diagnostic ignored "-Wpadded"
#endif
/*============================ MACROS ========================================*/
/* OOC header, please DO NOT modify */
#ifdef __USER_SCENE_BUBBLE_CHARGING_IMPLEMENT__
# undef __USER_SCENE_BUBBLE_CHARGING_IMPLEMENT__
# define __ARM_2D_IMPL__
#endif
#include "arm_2d_utils.h"
/*============================ MACROFIED FUNCTIONS ===========================*/
/*!
* \brief initalize scene_bubble_charging and add it to a user specified scene player
* \param[in] __DISP_ADAPTER_PTR the target display adapter (i.e. scene player)
* \param[in] ... this is an optional parameter. When it is NULL, a new
* user_scene_bubble_charging_t will be allocated from HEAP and freed on
* the deposing event. When it is non-NULL, the life-cycle is managed
* by user.
* \return user_scene_bubble_charging_t* the user_scene_bubble_charging_t instance
*/
#define arm_2d_scene_bubble_charging_init(__DISP_ADAPTER_PTR, ...) \
__arm_2d_scene_bubble_charging_init((__DISP_ADAPTER_PTR), (NULL, ##__VA_ARGS__))
/*============================ TYPES =========================================*/
/*!
* \brief a user class for scene bubble_charging
*/
typedef struct user_scene_bubble_charging_t user_scene_bubble_charging_t;
struct user_scene_bubble_charging_t {
implement(arm_2d_scene_t); //! derived from class: arm_2d_scene_t
ARM_PRIVATE(
/* place your private member here, following two are examples */
int64_t lTimestamp[3];
arm_2d_filter_iir_blur_descriptor_t tBlurOP;
dynamic_nebula_t tNebula;
dynamic_nebula_particle_t tParticles[10];
bool bUserAllocated;
int16_t iWaveOffset;
int16_t iSoC; //!< state of the charge (1000 ‰)
)
/* place your public member here */
};
/*============================ GLOBAL VARIABLES ==============================*/
/*============================ PROTOTYPES ====================================*/
ARM_NONNULL(1)
extern
user_scene_bubble_charging_t *__arm_2d_scene_bubble_charging_init( arm_2d_scene_player_t *ptDispAdapter,
user_scene_bubble_charging_t *ptScene);
#if defined(__clang__)
# pragma clang diagnostic pop
#elif __IS_COMPILER_GCC__
# pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif
================================================
FILE: project/mdk/debug_with_cmsis-dap.ini
================================================
FUNC void reset_pico(void)
{
exec("RESET");
exec("G, Reset_Handler");
}
DEFINE BUTTON "Reset Pico", "reset_pico()"
reset_pico();
================================================
FILE: project/mdk/debug_with_cmsis-dap_in_ram.ini
================================================
FUNC void debug_from_ram(void)
{
//extern unsigned int Image$$ARM_LIB_STACK$$ZI$$Limit;
printf("Entry Point: %08x\r\n", Reset_Handler);
printf("Main Stack Pointer: %08x\r\n", Image$$ARM_LIB_STACK$$ZI$$Limit);
/*
typedef struct {
unsigned int ctrl;
unsigned int load;
unsigned int reason;
unsigned int scratch[8];
unsigned int tick;
} watchdog_hw_t;
#define watchdog_hw ((watchdog_hw_t *const)0x40058000)
*/
_WWORD(0x4005801C ,0xb007c0d3); //! scratch 4
_WWORD(0x40058020 ,-0xb007c0d3 ^ (Reset_Handler | 0x01)); //! scratch 5
_WWORD(0x40058024 ,Image$$ARM_LIB_STACK$$ZI$$Limit); //! scratch 6
_WWORD(0x40058028 ,Reset_Handler | 0x01); //! scratch 7
exec("RESET");
//exec("BS main");
//exec("G, Reset_Handler");
exec("G, main");
}
DEFINE BUTTON "Reset Pico", "debug_from_ram()"
debug_from_ram();
================================================
FILE: project/mdk/template.uvoptx
================================================
1.0
### uVision Project, (C) Keil Software
*.c
*.s*; *.src; *.a*
*.obj; *.o
*.lib
*.txt; *.h; *.inc; *.md
*.plm
*.cpp; *.cc; *.cxx
0
0
0
AC6-flash
0x4
ARM-ADS
12000000
1
1
0
1
0
1
65535
0
0
0
79
66
8
.\Listings\
1
1
1
0
1
1
0
1
0
0
0
0
1
1
1
1
1
1
1
0
0
1
0
1
255
0
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
1
0
0
3
.\debug.ini
.\debug_with_cmsis-dap.ini
BIN\CMSIS_AGDI.dll
0
UL2CM3
UL2CM3(-S0 -C0 -P0 -FN1 -FC2000 -FD20040000 -FF0Raspberry_Pi_Pico -FL0200000 -FS010000000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM)
0
CMSIS_AGDI
-X"CMSIS-DAP" -UE6617C93E3393E2A -O198 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BC12477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20040000 -FC2000 -FN1 -FF0Raspberry_Pi_Pico.FLM -FS010000000 -FL0200000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM)
0
DLGTARM
(1010=724,527,1135,1029,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)(1009=120,153,364,299,0)
0
DLGUARM
0
ARMRTXEVENTFLAGS
-L70 -Z18 -C0 -M0 -T1
0
DLGDARM
(1010=75,104,525,661,1)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=643,307,887,855,1)(1012=-1,-1,-1,-1,0)
0
ARMDBGFLAGS
-T0
0
1
SystemCoreClock,0x0A
1
1
0x4005801C
0
C:\Users\gabriel\AppData\Local\Arm\Packs\ARM\CMSIS-View\1.2.0\EventRecorder\EventRecorder.scvd
ARM::CMSIS-View@1.2.0
1
0
Reset Pico
reset_pico()
0
0
1
1
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
2
10000000
AC6-DebugInSRAM
0x4
ARM-ADS
12000000
1
1
0
1
0
1
65535
0
0
0
79
66
8
.\Listings\
1
1
1
0
1
1
0
1
0
0
0
0
1
1
1
1
1
1
1
0
0
1
0
0
255
0
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
0
1
0
0
3
.\debug.ini
.\debug_with_cmsis-dap_in_ram.ini
BIN\CMSIS_AGDI.dll
0
CMSIS_AGDI
-X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(0BC12477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20040000 -FC2000 -FN1 -FF0Raspberry_Pi_Pico.FLM -FS010000000 -FL0200000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM)
0
UL2CM3
UL2CM3(-S0 -C0 -P0 -FN1 -FC2000 -FD20040000 -FF0Raspberry_Pi_Pico -FL0200000 -FS010000000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM)
0
DLGTARM
(1010=745,553,1156,1055,0)(1007=105,137,312,358,0)(1008=90,121,466,357,0)(1012=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)
0
DLGUARM
0
ARMRTXEVENTFLAGS
-L70 -Z18 -C0 -M0 -T1
0
DLGDARM
(1010=75,104,525,661,1)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=643,307,887,855,1)(1012=-1,-1,-1,-1,0)
0
ARMDBGFLAGS
-T0
1
1
0x2000AC00
0
C:\Users\gabriel\AppData\Local\Arm\Packs\ARM\CMSIS-View\1.2.0\EventRecorder\EventRecorder.scvd
ARM::CMSIS-View@1.2.0
1
0
Reset Pico
debug_from_ram()
0
0
1
0
0
0
0
0
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
2
10000000
Application
1
0
0
0
1
1
1
0
0
0
..\..\main.c
main.c
0
0
BSP
1
0
0
0
2
2
5
0
0
0
..\..\bsp\bsp.h
bsp.h
0
0
2
3
4
0
0
0
..\..\bsp\lib\RP2040_bsp.lib
RP2040_bsp.lib
0
0
2
4
1
0
0
0
..\..\bsp\rp2040_bsp_default.c
rp2040_bsp_default.c
0
0
::CMSIS
0
0
0
1
::CMSIS-Compiler
0
0
0
1
::CMSIS-View
1
0
0
1
::Device
0
0
0
1
::Utilities
1
0
0
1
================================================
FILE: project/mdk/template.uvprojx
================================================
2.1
### uVision Project, (C) Keil Software
AC6-flash
0x4
ARM-ADS
6240000::V6.24::ARMCLANG
1
RP2040:Core0
RPi
RaspberryPi.RP2xxx_DFP.0.9.5
https://github.com/raspberrypi/cmsis-rp2xxx-dfp/releases/download/v0.9.5/
IRAM(0x20000000,0x00042000) IROM(0x10000000,0x00200000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE
UL2CM3(-S0 -C0 -P0 -FD20040000 -FC2000 -FN1 -FF0Raspberry_Pi_Pico -FS010000000 -FL0200000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM))
0
$$Device:RP2040$CMSIS\Device\RP2040\Include\rp2040.h
$$Device:RP2040$CMSIS\SVD\rp2040.svd
0
0
0
0
0
0
1
.\Objects\
template
1
0
0
1
1
.\Listings\
1
0
0
0
0
0
0
0
0
0
1
RTE\PikaScript\pikaBeforBuild-keil.bat
$Stools\pio_all.bat
0
0
0
0
0
1
$Stools\elf2uf2.exe "#L" ".\@L.uf2"
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
3
1
SARMCM3.DLL
-REMAP-MPU
DARMCM1.DLL
-pCM0+
SARMCM3.DLL
-MPU
TARMCM1.DLL
-pCM0+
1
0
0
0
16
1
0
0
1
1
4096
1
BIN\UL2CM3.DLL
0
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
1
1
1
1
1
1
1
1
1
0
0
"Cortex-M0+"
0
0
0
1
1
0
0
0
0
0
0
0
0
8
1
0
0
0
3
3
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x20000000
0x42000
1
0x10000000
0x200000
0
0x0
0x0
1
0x0
0x0
1
0x0
0x0
1
0x0
0x0
1
0x10000000
0x200000
1
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x20000000
0x42000
0
0x0
0x0
1
5
0
0
1
0
0
0
0
0
3
0
0
0
0
0
6
3
1
1
1
0
0
__RP2040_USE_BADGER__=0,__RP2040_USE_OLED_1IN3__=0,__RP2040_USE_LCD_1IN28__=0,__RP2040_USE_LCD_TOUCH_1IN28__=0,__PICO_USE_LCD_1IN3__=0,ITERATIONS=7000
.
1
0
0
0
0
0
0
0
0
1
PICO_MAX_SHARED_IRQ_HANDLERS=4,LIB_CMSIS_CORE=1,PICO_CMSIS_RENAME_EXCEPTIONS=1
..\..\pico-sdk\src\rp2040\hardware_regs\include;..\..\pico-sdk\src\rp2_common\hardware_irq\include;..\..\pico-sdk\src\rp2_common\pico_platform\include;..\..\pico-sdk\src\common\pico_base\include;.\wrapper\pico_base;..\..\pico-sdk\src\rp2_common\boot_stage2\asminclude;..\..\pico-sdk\src\rp2_common\boot_stage2\include
0
0
0
0
1
0
0x00000000
0x20000000
.\RTE\Device\RP2040_Core0\rp2040.sct
--diag_suppress=L6170,L6314,L6306,L6329
Application
main.c
1
..\..\main.c
BSP
bsp.h
5
..\..\bsp\bsp.h
RP2040_bsp.lib
4
..\..\bsp\lib\RP2040_bsp.lib
rp2040_bsp_default.c
1
..\..\bsp\rp2040_bsp_default.c
::CMSIS
::CMSIS-Compiler
::CMSIS-View
::Device
::Utilities
AC6-DebugInSRAM
0x4
ARM-ADS
6240000::V6.24::.\ArmCompilerforEmbedded6.24
1
RP2040:Core0
RPi
RaspberryPi.RP2xxx_DFP.0.9.5
https://github.com/raspberrypi/cmsis-rp2xxx-dfp/releases/download/v0.9.5/
IRAM(0x20000000,0x00042000) IROM(0x10000000,0x00200000) CPUTYPE("Cortex-M0+") CLOCK(12000000) ELITTLE
UL2CM3(-S0 -C0 -P0 -FD20040000 -FC2000 -FN1 -FF0Raspberry_Pi_Pico -FS010000000 -FL0200000 -FP0($$Device:RP2040$CMSIS\Flash\Raspberry_Pi_Pico.FLM))
0
$$Device:RP2040$CMSIS\Device\RP2040\Include\rp2040.h
$$Device:RP2040$CMSIS\SVD\rp2040.svd
0
0
0
0
0
0
1
.\Objects\
template
1
0
0
1
1
.\Listings\
1
0
0
0
0
0
0
0
0
0
0
RTE\PikaScript\pikaBeforBuild-keil.bat
0
0
0
0
0
1
$Stools\elf2uf2.exe "#L" ".\@L.uf2"
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
3
1
SARMCM3.DLL
-REMAP-MPU
DARMCM1.DLL
-pCM0+
SARMCM3.DLL
-MPU
TARMCM1.DLL
-pCM0+
1
0
0
0
16
0
1
0
0
1
4096
1
BIN\UL2CM3.DLL
"" ()
0
0
1
1
1
1
1
1
1
0
1
1
0
1
1
0
0
1
1
1
1
1
1
1
1
1
0
0
"Cortex-M0+"
0
0
0
1
1
0
0
0
0
0
0
0
0
8
0
0
0
0
3
3
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x20000000
0x42000
1
0x10000000
0x200000
0
0x0
0x0
1
0x0
0x0
1
0x0
0x0
1
0x0
0x0
1
0x10000000
0x200000
1
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x0
0x0
0
0x20000000
0x42000
0
0x0
0x0
1
5
0
0
1
0
0
0
0
0
3
0
0
0
0
0
6
3
1
1
1
0
0
PICO, PICO_NO_FLASH, __PICO_USE_LCD_1IN3__=0
..\mdk
1
0
0
0
0
0
0
0
0
1
PICO_MAX_SHARED_IRQ_HANDLERS=4,LIB_CMSIS_CORE=1,PICO_CMSIS_RENAME_EXCEPTIONS=1
..\..\pico-sdk\src\rp2040\hardware_regs\include;..\..\pico-sdk\src\rp2_common\hardware_irq\include;..\..\pico-sdk\src\rp2_common\pico_platform\include;..\..\pico-sdk\src\common\pico_base\include;.\wrapper\pico_base;..\..\pico-sdk\src\rp2_common\boot_stage2\asminclude;..\..\pico-sdk\src\rp2_common\boot_stage2\include
0
0
0
0
1
0
0x00000000
0x20000000
.\RP2040_debug_in_sram.sct
--diag_suppress=L6170,L6314,L6306,L6329
Application
main.c
1
..\..\main.c
BSP
bsp.h
5
..\..\bsp\bsp.h
RP2040_bsp.lib
4
..\..\bsp\lib\RP2040_bsp.lib
rp2040_bsp_default.c
1
..\..\bsp\rp2040_bsp_default.c
::CMSIS
::CMSIS-Compiler
::CMSIS-View
::Device
0
0
0
0
0
1
2
2
2
2
11
1
2
0
2
2
2
2
2
2
2
2
0
2
2
2
2
2
0
0
2
2
2
2
2
2
2
2
2
2
2
2
2
2
0
::Utilities
RTE\Acceleration\DigitsFont.c
RTE\Acceleration\GLCD_Fonts.c
RTE\Acceleration\README.md
RTE\Acceleration\alarm_clock_font32.c
RTE\Acceleration\alarm_clock_font64.c
RTE\Acceleration\arm_2d.c
RTE\Acceleration\arm_2d_cfg.h
RTE\Acceleration\arm_2d_disp_adapter_0.c
RTE\Acceleration\arm_2d_disp_adapter_0.h
RTE\Acceleration\arm_2d_scene_atom.c
RTE\Acceleration\arm_2d_scene_atom.h
RTE\Acceleration\arm_2d_scene_gas_gauge.c
RTE\Acceleration\arm_2d_scene_gas_gauge.h
RTE\Acceleration\arm_2d_scene_panel.c
RTE\Acceleration\arm_2d_scene_panel.h
RTE\Acceleration\img2c.py
RTE\Acceleration\ttf2c.py
RTE\CMSIS-View\EventRecorderConf.h
RTE\Compiler\EventRecorderConf.h
RTE\Device\RP2040_Core0\env_wrapper.h
RTE\Device\RP2040_Core0\rp2040.sct
RTE\Device\RP2040_Core0\rp2040_no_flash.sct
RTE\Device\RP2040_Core0\startup_rp2040.c
RTE\Device\RP2040_Core0\system_rp2040.c
RTE\PikaScript\BaseObj.c
RTE\PikaScript\BaseObj.h
RTE\PikaScript\PikaCompiler.c
RTE\PikaScript\PikaCompiler.h
RTE\PikaScript\PikaDebug.h
RTE\PikaScript\PikaDebug_Debuger.h
RTE\PikaScript\PikaDebuger_Debuger.c
RTE\PikaScript\PikaMain.h
RTE\PikaScript\PikaObj.c
RTE\PikaScript\PikaObj.h
RTE\PikaScript\PikaParser.c
RTE\PikaScript\PikaParser.h
RTE\PikaScript\PikaPlatform.c
RTE\PikaScript\PikaPlatform.h
RTE\PikaScript\PikaStdData.h
RTE\PikaScript\PikaStdData_ByteArray.c
RTE\PikaScript\PikaStdData_ByteArray.h
RTE\PikaScript\PikaStdData_Dict.c
RTE\PikaScript\PikaStdData_Dict.h
RTE\PikaScript\PikaStdData_FILEIO.c
RTE\PikaScript\PikaStdData_FILEIO.h
RTE\PikaScript\PikaStdData_List.c
RTE\PikaScript\PikaStdData_List.h
RTE\PikaScript\PikaStdData_String.c
RTE\PikaScript\PikaStdData_String.h
RTE\PikaScript\PikaStdData_String_Util.h
RTE\PikaScript\PikaStdData_Tuple.c
RTE\PikaScript\PikaStdData_Tuple.h
RTE\PikaScript\PikaStdData_Utils.c
RTE\PikaScript\PikaStdData_Utils.h
RTE\PikaScript\PikaStdData_dict_items.h
RTE\PikaScript\PikaStdData_dict_keys.h
RTE\PikaScript\PikaStdLib.h
RTE\PikaScript\PikaStdLib_MemChecker.c
RTE\PikaScript\PikaStdLib_MemChecker.h
RTE\PikaScript\PikaStdLib_REPL.h
RTE\PikaScript\PikaStdLib_RangeObj.c
RTE\PikaScript\PikaStdLib_RangeObj.h
RTE\PikaScript\PikaStdLib_StringObj.c
RTE\PikaScript\PikaStdLib_StringObj.h
RTE\PikaScript\PikaStdLib_SysObj.c
RTE\PikaScript\PikaStdLib_SysObj.h
RTE\PikaScript\PikaStdTask.h
RTE\PikaScript\PikaStdTask_Task.c
RTE\PikaScript\PikaStdTask_Task.h
RTE\PikaScript\PikaVM.c
RTE\PikaScript\PikaVM.h
RTE\PikaScript\PikaVersion.h
RTE\PikaScript\TinyObj.c
RTE\PikaScript\TinyObj.h
RTE\PikaScript\__asset_pikaModules_py_a.c
RTE\PikaScript\__default_filter_msg_table.h
RTE\PikaScript\__default_filter_msg_template.h
RTE\PikaScript\__instruction_def.h
RTE\PikaScript\__instruction_table.cfg
RTE\PikaScript\__instruction_table.h
RTE\PikaScript\__instruction_template.h
RTE\PikaScript\__pikaBinding.c
RTE\PikaScript\__pika_ooc.h
RTE\PikaScript\builtins.h
RTE\PikaScript\builtins_ArithmeticError.h
RTE\PikaScript\builtins_AssertionError.h
RTE\PikaScript\builtins_AttributeError.h
RTE\PikaScript\builtins_BaseException.h
RTE\PikaScript\builtins_BlockingIOError.h
RTE\PikaScript\builtins_BrokenPipeError.h
RTE\PikaScript\builtins_BufferError.h
RTE\PikaScript\builtins_BytesWarning.h
RTE\PikaScript\builtins_ChildProcessError.h
RTE\PikaScript\builtins_ConnectionAbortedError.h
RTE\PikaScript\builtins_ConnectionError.h
RTE\PikaScript\builtins_ConnectionRefusedError.h
RTE\PikaScript\builtins_ConnectionResetError.h
RTE\PikaScript\builtins_DeprecationWarning.h
RTE\PikaScript\builtins_EOFError.h
RTE\PikaScript\builtins_Exception.h
RTE\PikaScript\builtins_FileExistsError.h
RTE\PikaScript\builtins_FileNotFoundError.h
RTE\PikaScript\builtins_FloatingPointError.h
RTE\PikaScript\builtins_FutureWarning.h
RTE\PikaScript\builtins_GeneratorExit.h
RTE\PikaScript\builtins_ImportError.h
RTE\PikaScript\builtins_ImportWarning.h
RTE\PikaScript\builtins_IndentationError.h
RTE\PikaScript\builtins_IndexError.h
RTE\PikaScript\builtins_InterruptedError.h
RTE\PikaScript\builtins_IsADirectoryError.h
RTE\PikaScript\builtins_KeyError.h
RTE\PikaScript\builtins_KeyboardInterrupt.h
RTE\PikaScript\builtins_LookupError.h
RTE\PikaScript\builtins_MemoryError.h
RTE\PikaScript\builtins_ModuleNotFoundError.h
RTE\PikaScript\builtins_NameError.h
RTE\PikaScript\builtins_NotADirectoryError.h
RTE\PikaScript\builtins_NotImplementedError.h
RTE\PikaScript\builtins_OSError.h
RTE\PikaScript\builtins_OverflowError.h
RTE\PikaScript\builtins_PendingDeprecationWarning.h
RTE\PikaScript\builtins_PermissionError.h
RTE\PikaScript\builtins_ProcessLookupError.h
RTE\PikaScript\builtins_RangeObj.h
RTE\PikaScript\builtins_RecursionError.h
RTE\PikaScript\builtins_ReferenceError.h
RTE\PikaScript\builtins_ResourceWarning.h
RTE\PikaScript\builtins_RuntimeError.h
RTE\PikaScript\builtins_RuntimeWarning.h
RTE\PikaScript\builtins_StopAsyncIteration.h
RTE\PikaScript\builtins_StopIteration.h
RTE\PikaScript\builtins_StringObj.h
RTE\PikaScript\builtins_SyntaxError.h
RTE\PikaScript\builtins_SyntaxWarning.h
RTE\PikaScript\builtins_SystemError.h
RTE\PikaScript\builtins_SystemExit.h
RTE\PikaScript\builtins_TabError.h
RTE\PikaScript\builtins_TimeoutError.h
RTE\PikaScript\builtins_TypeError.h
RTE\PikaScript\builtins_UnboundLocalError.h
RTE\PikaScript\builtins_UnicodeDecodeError.h
RTE\PikaScript\builtins_UnicodeEncodeError.h
RTE\PikaScript\builtins_UnicodeError.h
RTE\PikaScript\builtins_UnicodeTranslateError.h
RTE\PikaScript\builtins_UnicodeWarning.h
RTE\PikaScript\builtins_UserWarning.h
RTE\PikaScript\builtins_ValueError.h
RTE\PikaScript\builtins_Warning.h
RTE\PikaScript\builtins_ZeroDivisionError.h
RTE\PikaScript\builtins_bytearray.h
RTE\PikaScript\builtins_object.h
RTE\PikaScript\clean.bat
RTE\PikaScript\dataArg.c
RTE\PikaScript\dataArg.h
RTE\PikaScript\dataArgs.c
RTE\PikaScript\dataArgs.h
RTE\PikaScript\dataLink.c
RTE\PikaScript\dataLink.h
RTE\PikaScript\dataLinkNode.c
RTE\PikaScript\dataLinkNode.h
RTE\PikaScript\dataMemory.c
RTE\PikaScript\dataMemory.h
RTE\PikaScript\dataQueue.c
RTE\PikaScript\dataQueue.h
RTE\PikaScript\dataQueueObj.c
RTE\PikaScript\dataQueueObj.h
RTE\PikaScript\dataStack.c
RTE\PikaScript\dataStack.h
RTE\PikaScript\dataString.c
RTE\PikaScript\dataString.h
RTE\PikaScript\dataStrs.c
RTE\PikaScript\dataStrs.h
RTE\PikaScript\main.py
RTE\PikaScript\pikaBeforBuild-keil.bat
RTE\PikaScript\pikaPackage.exe
RTE\PikaScript\pikaScript.c
RTE\PikaScript\pikaScript.h
RTE\PikaScript\pika_adapter_mpy.h
RTE\PikaScript\pika_adapter_old_api.h
RTE\PikaScript\pika_adapter_rtt.h
RTE\PikaScript\pika_config_valid.h
RTE\PikaScript\pika_lvgl.h
RTE\PikaScript\pika_lvgl_ALIGN.h
RTE\PikaScript\pika_lvgl_ANIM.h
RTE\PikaScript\pika_lvgl_EVENT.h
RTE\PikaScript\pika_lvgl_FLEX_ALIGN.h
RTE\PikaScript\pika_lvgl_FLEX_FLOW.h
RTE\PikaScript\pika_lvgl_LAYOUT_FLEX.h
RTE\PikaScript\pika_lvgl_OPA.h
RTE\PikaScript\pika_lvgl_PALETTE.h
RTE\PikaScript\pika_lvgl_SIZE.h
RTE\PikaScript\pika_lvgl_STATE.h
RTE\PikaScript\pika_lvgl_TEXT_DECOR.h
RTE\PikaScript\pika_lvgl_arc.h
RTE\PikaScript\pika_lvgl_bar.h
RTE\PikaScript\pika_lvgl_btn.h
RTE\PikaScript\pika_lvgl_canvas.h
RTE\PikaScript\pika_lvgl_cf_t.h
RTE\PikaScript\pika_lvgl_chart.h
RTE\PikaScript\pika_lvgl_chart_series_t.h
RTE\PikaScript\pika_lvgl_checkbox.h
RTE\PikaScript\pika_lvgl_dropdown.h
RTE\PikaScript\pika_lvgl_flag_t.h
RTE\PikaScript\pika_lvgl_img.h
RTE\PikaScript\pika_lvgl_img_dsc_t.h
RTE\PikaScript\pika_lvgl_indev_t.h
RTE\PikaScript\pika_lvgl_label.h
RTE\PikaScript\pika_lvgl_lv_color_t.h
RTE\PikaScript\pika_lvgl_lv_event.h
RTE\PikaScript\pika_lvgl_lv_obj.h
RTE\PikaScript\pika_lvgl_lv_timer_t.h
RTE\PikaScript\pika_lvgl_obj.h
RTE\PikaScript\pika_lvgl_point_t.h
RTE\PikaScript\pika_lvgl_roller.h
RTE\PikaScript\pika_lvgl_slider.h
RTE\PikaScript\pika_lvgl_style_t.h
RTE\PikaScript\pika_lvgl_switch.h
RTE\PikaScript\pika_lvgl_table.h
RTE\PikaScript\pika_lvgl_textarea.h
RTE\PikaScript\requestment.txt
RTE\PikaScript\rust-msc-latest-win10.exe
RTE\Utilities\core_portme.c
RTE\Utilities\core_portme.h
template
1